私はガウスカーネル密度を計算しようとしており、density()
関数の知識をテストするために、ゼロから計算して2つの結果を比較することにしました。密度()カーネルエスティメータの矛盾と傷による計算との比較
ただし、同じ回答はありません。
私は既存のデータセット
xi <- mtcars$mpg
で始まり、
これを提供plot(density(xi, kernel = "gaussian"))
を次のように、このデータのカーネル密度をプロットすることができます...
私はいくつかのdをつかむ私の計算が一貫しているように、この計算の結果を示します。
auto.dens <- density(xi, kernel = "gaussian")
h <- auto.dens$bw # bandwidth for kernel
x0 <- auto.dens$x # points for prediction
私は、ガウスカーネル密度を自分で計算し、私はそれを読むことが明確であるだけので、ループ内でこれを行っ を持っています。
fx0 <- NULL
for (j in 1:length(x0)){
t <- abs(x0[j]-xi)/h
K <- (1/sqrt(2*pi))*exp(-(t^2)/2)
fx0 <- c(fx0,sum(K*t)/(length(t)*h))
}
基本的な計算は、ダニエル・ウィルクスにより、大気科学、第3版では統計的手法でセクション3.3.6で詳細を次のように構築されています。しかしとして設定し、tは
さガウシアンカーネルで 、ここでは私の問題です。私はその後、2つのプロット
...
plot(y=fx0,x=x0, type="l", ylim=c(0,0.07))
lines(x=auto.dens$x, y=auto.dens$y, col="red")
!これらの2つの計算明らかに異なっている!
密度関数の仕組みを理解できませんでしたか?なぜ私はゼロから同じ結果を計算することができないのですか?私のカーネル見積もりが異なる結果をもたらすのはなぜですか?なぜ私の結果は滑らかではありませんか?
もっと複雑なデータセットにカーネルスムーザー(密度だけでなく)を構築して適用する必要があります。この小さな例では、私が自動化された関数と同じことをしていることを確認しました。この問題があることを期待していません。私はあらゆる種類のものを試してきましたが、私はなぜ別の結果が得られるのか分かりません。
ありがとうございました。読んでいただきありがとうございました。
ありがとうございました!これは問題を解決し、明らかにコードに続くことのないテキストブックからの数学の私の理解です。私はとても安心しています。それはとても簡単な問題です! – Kate2808