カーネル密度推定(カーネルみつどすいてい、英: kernel density estimation)は、統計学において、確率変数の確率密度関数を推定するノンパラメトリック手法のひとつ。エマニュエル・パルツェン(英語版)の名をとってパルツェン窓(英: Parzen window)とも。大まかに言えば、ある母集団の標本のデータが与えられたとき、カーネル密度推定を使えばその母集団のデータを外挿できる。
ヒストグラムは、一様なカーネル関数によるカーネル密度推定量と見ることもできる。
定義
x1, x2, ..., xn を(未知の)確率密度関数 ƒ を持つ独立同分布からの標本とする。カーネル関数 K、バンド幅(平滑化パラメータ)h のカーネル密度推定量(英: kernel density estimator)とは
のことである。カーネル関数としては、標準ガウス関数(平均がゼロで分散が1)
を採用することが多い。
直観的説明
あまり平滑でない推定器(例えばヒストグラム密度推定器)は漸近的に一致させられるが、他の推定器は不連続であるか、カーネル密度推定より収束が遅い。カーネル密度推定器は、標本を一定幅の箱に入れて数えるのではなく、カーネル関数から決定されたコブを各標本に与えるものと見ることができる。つまり、「コブの総和」によって推定が形成されるため、結果として非常に滑らかになる(下図参照)。
特性
確率密度関数 ƒ の L2 リスク関数を とする。確率密度関数 ƒ とカーネル関数 K に関する弱い仮定から次が得られる。
理論的リスク関数を最小化することで、最適なバンド幅は以下のように示される。
ここで
である。最適なバンド幅を選択したとき、リスク関数は であり c4 > 0 はある定数である。弱い仮定の下で、カーネル推定器より早く収束するノンパラメトリックな推定器は存在しないことが示される。なお、n−4/5 という収束レートは、パラメトリックな手法での典型である n−1 という収束レートよりも遅い。
実装例
- MATLAB - カーネル密度推定は
ksdensity
関数で実装されている。
- Origin - 2Dカーネル密度プロットがユーザーインターフェースより作画できるほか、
Ksdensity
(1D用)とKs2density
(2D用)の両関数がLabTalk言語、 Python、C言語からアクセス可能である。
- PAST - Plot項目の中のHistogramで,カーネル曲線が描ける。
- R言語 -
density
関数で実装されている。
- Stata -
kdensity
で実装されている。例えば、histogram x, kdensity
- SAS -
proc kde
は1変量または2変量のカーネル密度推定に使われる。
脚注
参考文献
関連項目
外部リンク