カーネル密度推定

正規分布の100個の乱数と異なる平滑化帯域幅によるカーネル密度推定。

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

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

定義

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

f ^ h ( x ) = 1 n h i = 1 n K ( x x i h ) {\displaystyle {\hat {f}}_{h}(x)={\frac {1}{nh}}\sum _{i=1}^{n}K\left({\frac {x-x_{i}}{h}}\right)}

のことである[1]。カーネル関数としては、標準ガウス関数平均がゼロで分散が1)

K ( x ) = 1 2 π e x 2 / 2 {\displaystyle K(x)={1 \over {\sqrt {2\pi }}}\,e^{-x^{2}/2}}

を採用することが多い。

直観的説明

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

6つのガウス曲線(赤)とそれらの総和(青)。パルツェン窓密度推定 f(x) は、この総和を6(元のガウス曲線の数)で割ることで得られる。ガウス関数の分散は 0.5 に設定されている。見ての通り、標本点が稠密にあるほど、密度推定値は大きくなる。

特性

確率密度関数 ƒ の L2 リスク関数 R ( f , f ^ ( x ) ) {\displaystyle R(f,{\hat {f}}(x))} とする。確率密度関数 ƒ とカーネル関数 K に関する弱い仮定から次が得られる。

R ( f , f ^ ( x ) ) 1 4 σ k 4 h 4 ( f ( x ) ) 2 d x + K 2 ( x ) d x n h  where  σ K 2 = x 2 K ( x ) d x {\displaystyle R(f,{\hat {f}}(x))\approx {\frac {1}{4}}\sigma _{k}^{4}h^{4}\int (f''(x))^{2}\,dx+{\frac {\int K^{2}(x)\,dx}{nh}}\quad {\text{ where }}\quad \sigma _{K}^{2}=\int x^{2}K(x)\,dx}

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

h = c 1 2 / 5 c 2 1 / 5 c 3 1 / 5 n 1 / 5 {\displaystyle h^{*}={\frac {c_{1}^{-2/5}c_{2}^{1/5}c_{3}^{-1/5}}{n^{1/5}}}}

ここで

c 1 = x 2 K ( x ) d x {\displaystyle c_{1}=\int x^{2}K(x)\,dx}
c 2 = K ( x ) 2 d x {\displaystyle c_{2}=\int K(x)^{2}\,dx}
c 3 = ( f ( x ) ) 2 d x {\displaystyle c_{3}=\int (f''(x))^{2}\,dx}

である。最適なバンド幅を選択したとき、リスク関数は R ( f , f ^ ( x ) ) c 4 / n 4 / 5 {\displaystyle R(f,{\hat {f}}(x))\approx c_{4}/n^{4/5}} であり c4 > 0 はある定数である。弱い仮定の下で、カーネル推定器より早く収束するノンパラメトリックな推定器は存在しないことが示される。なお、n−4/5 という収束レートは、パラメトリックな手法での典型である n−1 という収束レートよりも遅い。

実装例

  • MATLAB - カーネル密度推定は ksdensity 関数で実装されている。
  • Origin - 2Dカーネル密度プロットがユーザーインターフェースより作画できるほか、Ksdensity(1D用)とKs2density(2D用)の両関数がLabTalk言語、 PythonC言語からアクセス可能である。
  • PAST - Plot項目の中のHistogramで,カーネル曲線が描ける。
  • R言語 - density 関数で実装されている。
  • Stata - kdensity で実装されている。例えば、histogram x, kdensity
  • SAS - proc kde は1変量または2変量のカーネル密度推定に使われる。

脚注

[脚注の使い方]
  1. ^ Silverman 1986, (2.2a).

参考文献

  • 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.
  • Silverman, B. W. (1986). Density estimation for statistics and data analysis. Monographs on Statistics and Applied Probability. Chapman & Hall, London. ISBN 0-412-24620-1. MR0848134. Zbl 0617.62042. https://books.google.com/books?id=e-xsrjsL7WkC 
  • 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++ 用インタフェースがある。
  • 最適ヒストグラム・カーネル密度推定を作成するツールボックス
標本調査
要約統計量
連続確率分布
位置
分散
モーメント
カテゴリデータ
推計統計学
仮説検定
パラメトリック
ノンパラメトリック
その他
区間推定
モデル選択基準
その他
ベイズ統計学
確率
その他
相関
モデル
回帰
線形
非線形
時系列
分類
線形
二次
非線形
その他
教師なし学習
クラスタリング
密度推定(英語版)
  • カーネル密度推定 ( カーネル )
その他
統計図表
生存分析
歴史
  • 統計学の創始者
  • 確率論と統計学の歩み
応用
出版物
  • 統計学に関する学術誌一覧
  • 重要な出版物
全般
その他
カテゴリ カテゴリ