Epanechnikovカーネルによるnpパッケージカーネル密度推定


8

私はMASSパッケージの「間欠泉」データセットを使用して、npパッケージのカーネル密度推定値を比較しています。

私の問題は、最小二乗交差検証とEpanechnikovカーネルを使用して密度推定を理解することです。

blep<-npudensbw(~geyser$waiting,bwmethod="cv.ls",ckertype="epanechnikov")
plot(npudens(bws=blep))

ここに画像の説明を入力してください

ガウスカーネルの場合は問題ないようです。

blga<-npudensbw(~geyser$waiting,bwmethod="cv.ls",ckertype="gaussian")
plot(npudens(bws=blga))

ここに画像の説明を入力してください

または、Epanechnikovカーネルと最尤CVを使用する場合:

bmax<-npudensbw(~geyser$waiting,bwmethod="cv.ml",ckertype="epanechnikov")
plot(npudens(~geyser$waiting,bws=bmax))

それは私のせいですか、それともパッケージの問題ですか?

編集:Epanechnikovカーネルと最小二乗cvにMathematicaを使用すると、動作します:

d = SmoothKernelDistribution[data, bw = "LeastSquaresCrossValidation", ker = "Epanechnikov"]
Plot[{PDF[d, x], {x, 20,110}]

回答:


6

編集

これはFAQで説明されています:

plot()(npplot())を使用して密度をプロットすると、結果のプロットは密度ではなく反転密度のように見えます

これは、データ駆動型の帯域幅が大幅に低下している場合に発生する可能性があります。データ駆動型(つまり、自動)の帯域幅選択手順では、とりわけ、外れ値の存在や、連続データの丸め/離散化などにより、常に良い結果が得られるとは限りません。デフォルトでは、npplot()はデータの2つの極値(最小、最大、つまり実際のデータポイント)を取り、次に等間隔の評価データのグリッド(つまり、実際のデータポイントではない)を作成し、これらのポイントの密度を計算します。帯域幅が非常に小さいため、これらの評価ポイントでの密度推定は正しくゼロですが、サンプル実現(これらの場合、最小値と最大値の2つのみ)の推定値はゼロではないため、エッジの2つのピークが得られますプロットと他の場所ではゼロに等しいフラットボウル。これは、データが大幅に離散化されており、継続的データとして扱っている場合にも発生する可能性があります。そのような場合、データを順序どおりに扱うと、より適切な見積もりが得られる可能性があります

データを順序どおりに扱うことをお勧めしますが、機能します:

blep<-npudensbw(~ordered(geyser$waiting), 
                bwmethod="cv.ls", ckertype="epanechnikov", ckerorder=2)

ここに画像の説明を入力してください

ckerorder=4次の例のように、より高いカーネル次数でも成功します。

ここに画像の説明を入力してください


ありがとう、でもなぜそれがGaussianカーネルやMathematicaで動作するのですか?
TMoek 2015年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.