カーネル密度推定(核関数に基づく確率密度関数の推定)を行なう方法

[OS]ALL
[リリース] 8.1, 8.2
[キーワード] kernel density estimation, KDE, UNIVARIATE, SAS/INSIGHT

[質問]

SAS/INSIGHTの「分布」メニューを用いると、カーネル密度推定を行なうことができますが、これをプロシジャで実行することはできますか?

[回答]

SASR8.1以降では、1変量、または2変量のデータに対してカーネル密度推定を行なうKDEプロシジャが新たに追加されました。

このプロシジャは、与えられたデータ点をもとにノンパラメトリックな手法を用いて滑らかな分布を構成するものです。また、SAS/GRAPHのG3Dプロシジャと組み合わせることにより、分布の様子を3次元グラフィックで確認できます。

下記のサンプルプログラムは、「SAS/STAT User's Guide, Version 8」に記載されています。

/*サンプルデータの作成*/
data k;
 seed = 1283470;
 do i = 1 to 1000;
  z1 = rannor(seed);
  z2 = rannor(seed);
  z3 = rannor(seed);
  x = 3*z1 + z2;
  y = 3*z1 + z3;
  output;
 end;
 drop seed;
run;

/*KDEプロシジャ*/
proc kde data=k
            out=o; /* OUT=オプションで推定値をデータセットに出力 */
   var x y;        /* VARステートメントに変数を指定 */
run;

/* G3Dプロシジャ */
proc g3d data=o;
 plot y*x=density;
run;

G3Dプロシジャでグラフを作成する際には、GOPTIONSステートメントでDEVICE=オプションを指定することにより、グラフをActiveXやJava形式で出力することも可能です。

なお、1変量データに対しては、UNIVARIATEプロシジャのHISTOGRAMステートメントを利用して、作成されるヒストグラムにカーネル密度推定の結果を描画できます。

[詳細]

KDEプロシジャ、およびUNIVARIATEプロシジャに関する詳細は、オンラインドキュメント「SAS System OnlineDoc V8」にてご確認ください。