5

私は次の形式のデータを持っています:

x      y
0      0
0.01   1
0.03   0
0.04   1
0.04   0

xは0から1まで連続であり、等間隔ではなく、yは2進数です。

Rを使用してx軸を滑らかにしたいのですyが、適切なパッケージが見つかりません。私が見つけたカーネル平滑化関数はx、0未満および1より大きい領域で平均化されるため、xの端で密度推定値を生成するか、誤った推定値を与えます。

また、レスの与えられたもの、次にバイナリ形式ののような線形スムーザーは避けたいと思いyます。私が見た移動平均関数は、等間隔のx値を想定しています。

スムーズで理想的には帯域幅選択手順を備えたR関数を知っていますか?移動平均関数を記述して相互検証して帯域幅を決定することはできますが、精査された既存の関数を見つけたいと思います。

4

1 に答える 1

7

私は次のようなものを使用することをお勧めします

d <- data.frame(x,y) ## not absolutely necessary but good practice
library(mgcv)
m1 <- gam(y~s(x),family="binomial",data=d)

これにより、(1)データのバイナリの性質が尊重されます(2)一般化された交差検定を使用して、自動平滑度(用語では「帯域幅」)が選択されます。

使用する

plot(y~x, data=d)
pp <- data.frame(x=seq(0,1,length=101))
pp$y <- predict(m1,newdata=pp,type="response")
with(pp,lines(x,y))

また

library(ggplot2)
ggplot(d,aes(x,y))+geom_smooth(method="gam",family=binomial)

予測を取得/結果をプロットします。

(実際のデータセットに5つ以上の観測値があることを願っています...そうでない場合、これは失敗します...)

于 2012-12-17T15:51:59.697 に答える