カーネル密度推定

カーネル密度推定（カーネルみつどすいてい、）は、統計学において、確率変数の確率密度関数を推定するノンパラメトリック手法のひとつ。の名をとってパルツェン窓（）とも。大まかに言えば、ある母集団の標本のデータが与えられたとき、カーネル密度推定を使えばその母集団のデータを外挿できる。

ヒストグラムは、一様なカーネル関数によるカーネル密度推定量と見ることもできる。

定義 
x1, x2, ..., xn を（未知の）確率密度関数 ƒ を持つ独立同分布からの標本とする。カーネル関数 K、バンド幅（平滑化パラメータ）h のカーネル密度推定量（）とは

のことである。カーネル関数としては、標準ガウス関数（平均がゼロで分散が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変量のカーネル密度推定に使われる。

脚注

参考文献 
 Duda, R. and Hart, P. (1973). Pattern Classification and Scene Analysis. John Wiley & Sons. ISBN 0-471-22361-1.
 Parzen E. (1962). On estimation of a probability density function and mode, Ann. Math. Stat. 33, pp. 1065-1076.
 
 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 Online Software (Calculator) 任意のデータ列についてカーネル密度推定を行い描画する。カーネル関数としては、ガウス関数、Epanechnikov、Rectangular、Triangular、Biweight、Cosine、Optcosine がある。
 FIGTree ガウスカーネルによるカーネル密度推定を計算するライブラリ。MATLAB と C/C++ 用インタフェースがある。
 最適ヒストグラム・カーネル密度推定を作成するツールボックス 

統計学
推計統計学
数学に関する記事