カーネル密度推定器を使用して、一連の観測に基づいて密度関数を推定する必要があります。同じ観測セットに基づいて、カーネル密度推定器の導関数を使用して密度の1次および2次導関数を推定する必要もあります。帯域幅は確かに最終結果に大きな影響を与えます。
まず、KDE帯域幅を提供するR関数がいくつかあることを知っています。どちらがより好ましいかわかりません。誰もがKDE帯域幅のためにこれらのR関数の1つを推奨できますか?
第二に、KDEの導関数について、同じ帯域幅を選択する必要がありますか?
カーネル密度推定器を使用して、一連の観測に基づいて密度関数を推定する必要があります。同じ観測セットに基づいて、カーネル密度推定器の導関数を使用して密度の1次および2次導関数を推定する必要もあります。帯域幅は確かに最終結果に大きな影響を与えます。
まず、KDE帯域幅を提供するR関数がいくつかあることを知っています。どちらがより好ましいかわかりません。誰もがKDE帯域幅のためにこれらのR関数の1つを推奨できますか?
第二に、KDEの導関数について、同じ帯域幅を選択する必要がありますか?
回答:
微分推定の最適な帯域幅は、密度推定の帯域幅とは異なります。一般に、密度のすべての機能には、独自の最適な帯域幅セレクタがあります。
目的が平均積分二乗誤差(これが通常の基準である)を最小化することである場合、それについて主観的なものはありません。基準を最小化するのは値を導き出すことです。方程式は、Hansen(2009)のセクション2.10に記載されています。
トリッキーな部分は、最適な帯域幅が密度自体の関数であるため、このソリューションは直接有用ではありません。その問題に対処しようとする方法はいくつかあります。これらは通常、通常の近似を使用して密度のいくつかの汎関数に近似します。(注、密度自体が正常であるという仮定はありません。仮定は、密度のいくつかの関数が正規性を仮定して取得できることです。)
近似が課される場所によって、帯域幅セレクターの品質が決まります。最も粗いアプローチは、「通常の参照規則」と呼ばれ、高レベルで近似を課します。Hansen(2009)のセクション2.10の終わりに、このアプローチを使用した公式が示されています。このアプローチは、CRAN hns()
のks
パッケージの関数に実装されています。おそらく、独自のコードを書きたくない場合に得られるものです。したがって、次のように密度の導関数を推定できます(を使用ks
)。
library(ks)
h <- hns(x,deriv.order=1)
den <- kdde(x, h=h, deriv.order=1)
通常、「直接プラグイン」セレクターとして知られるより良いアプローチは、より低いレベルで近似を課します。直線密度推定の場合、これはを使用してRで実装されるSheather-Jonesメソッドdensity(x,bw="SJ")
です。ただし、デリバティブ推定用のRパッケージで同様の機能が利用できるとは思いません。
ストレートカーネル推定を使用するよりも、ローカル多項式推定器を使用した方がよい場合があります。これは、R locpoly()
のks
パッケージの関数を使用して実行できます。再び、最適な帯域幅の選択は実装されていませんが、バイアスはカーネル推定器の場合よりも小さくなります。例えば、
den2 <- locpoly(x, bandwidth=?, drv=1) # Need to guess a sensible bandwidth