カーネル密度推定
カーネル密度推定(カーネルみつどすいてい、英: Kernel density estimation)は、統計学において、確率変数の確率密度関数を推定する手法の1つ。エマニュエル・パルツェンの名をとってパルツェン窓(英: Parzen window)とも。大まかに言えば、ある母集団の標本のデータが与えられたとき、カーネル密度推定を使えばその母集団のデータを外挿できる。
ヒストグラムは、一様な幅の箱が並んだカーネルのカーネル密度推定から標本点を集積したものと見ることもできる。
目次 |
[編集] 定義
x1, x2, ..., xN ~ ƒ を確率変数の独立かつ同一な分布に従う標本としたとき、その確率密度関数のカーネル密度推定は次のようになる。

ここで、K はカーネル関数、h はバンド幅(平滑化パラメータ)である。K としては、標準的なガウス関数(平均がゼロで分散が1)を採用することが多い。

[編集] 直観的説明
あまり平滑でない推定器(例えばヒストグラム密度推定器)は漸近的に一致させられるが、他の推定器は不連続であるか、カーネル密度推定より収束が遅い。カーネル密度推定器は、標本を一定幅の箱に入れて数えるのではなく、カーネル関数から決定されたコブを各標本に与えるものと見ることができる。つまり、「コブの総和」によって推定が形成されるため、結果として非常に滑らかになる(下図参照)。
[編集] 特性
ƒ の L2 リスク関数を
とする。ƒ と K に関する弱い仮定から次が得られる。

理論的リスク関数を最小化することで、最適なバンド幅は以下のように示される。

ここで



である。最適なバンド幅を選択したとき、リスク関数は
であり c4 > 0 はある定数である。弱い仮定の下で、カーネル推定器より早く収束するノンパラメトリックな推定器は存在しないことが示される。なお、n−4/5 という収束レートは、パラメトリックな手法での典型である n−1 という収束レートよりも遅い。
[編集] 実装例
- MATLAB - カーネル密度推定は
ksdensity関数で実装されている。 - Stata -
kdensityで実装されている。例えば、histogram x, kdensity - R言語 -
density関数で実装されている。 - SAS -
proc kdeは1変量または2変量のカーネル密度推定に使われる。
[編集] 関連項目
[編集] 参考文献
- Parzen E. (1962). On estimation of a probability density function and mode, Ann. Math. Stat. 33, pp. 1065-1076.
- Duda, R. and Hart, P. (1973). Pattern Classification and Scene Analysis. John Wiley & Sons. ISBN 0-471-22361-1.
- Wasserman, L. (2005). All of Statistics: A Concise Course in Statistical Inference, Springer Texts in Statistics.
[編集] 外部リンク
- Introduction to kernel density estimation
- Kernel Bandwidth Optimization フリーウェッブアプリ データを入力すれば最適化なカーネルバンド幅を計算してカーネル密度推定値を出力します.
- Free Matlab m-file for one and two dimensional kernel density estimation
- Free Online Software (Calculator) 任意のデータ列についてカーネル密度推定を行い描画する。カーネル関数としては、ガウス関数、Epanechnikov、Rectangular、Triangular、Biweight、Cosine、Optcosine がある。
- FIGTree ガウスカーネルによるカーネル密度推定を計算するライブラリ。MATLAB と C/C++ 用インタフェースがある。