Rの「密度」関数を使用してカーネル密度の推定を試みています。結果を解釈してさまざまなデータセットを比較するのは、曲線下の面積が必ずしも1であるとは限らないため、多少困難です。確率密度関数(pdf) には、面積。カーネル密度の推定値がpdfを報告すると仮定しています。私が使用していますintegrate.xyからsfsmisc曲線下面積を推定します。
> # generate some data
> xx<-rnorm(10000)
> # get density
> xy <- density(xx)
> # plot it
> plot(xy)
> # load the library
> library(sfsmisc)
> integrate.xy(xy$x,xy$y)
[1] 1.000978
> # fair enough, area close to 1
> # use another bw
> xy <- density(xx,bw=.001)
> plot(xy)
> integrate.xy(xy$x,xy$y)
[1] 6.518703
> xy <- density(xx,bw=1)
> integrate.xy(xy$x,xy$y)
[1] 1.000977
> plot(xy)
> xy <- density(xx,bw=1e-6)
> integrate.xy(xy$x,xy$y)
[1] 6507.451
> plot(xy)
曲線の下の領域は常に1であるべきではありませんか?狭い帯域幅が問題のようですが、テールに詳細などを表示したい場合があり、狭い帯域幅が必要です。
更新/回答:
> xy <- density(xx,n=2^15,bw=.001)
> plot(xy)
> integrate.xy(xy$x,xy$y)
[1] 1.000015
> xy <- density(xx,n=2^20,bw=1e-6)
> integrate.xy(xy$x,xy$y)
[1] 2.812398
3
これはdensity()の浮動小数点の制限のように見えます:1e-6の帯域幅を使用すると、10,000個のスパイクのコレクションを作成します。それらのスパイクは、ギャップを適切に特徴付けることなく、主にピークによって表されます。あなたは単にその限界を超えてdensity()を押しているだけです。
—
whuber
@whuberは、浮動小数点の制限により、精度の制限を意味します。浮動小数点を使用すると、倍精度を使用する場合に比べてエラーが大きく過大評価されることになります。私はそれがどのように起こるかはわかりませんが、いくつかの証拠を見たいと思います。
—
highBandWidth
@ Anony-Mousse、はい、それがこの質問が求めていることです。なぜ1に評価されないのですか?
—
highBandWidth