マハラノビス距離に基づいたクラスター分析を実行する方法

[OS] ALL
[リリース] ALL
[キーワード] STAT, CLUSTER, PRICOMP, MAHALANOBIS

[質問]

CLUSTERプロシジャを用いて、階層型のクラスター分析を行なっています。
入力データセットは、座標データです。このとき、ユークリッド距離ではなくマハラノビス距離に基づいてクラスタリングを実行したいのですが、CLUSTERプロシジャにはそのためのオプションはないようです。
何かよい方法はあるでしょうか?

[回答]

座標データからなるデータセットをそのまま分析に用いた場合には、原則としてユークリッド距離に基づいて分析が行なわれます。マハラノビス距離に基づいたクラスター分析を実行する場合には、座標データに対して最初にPRINCOMPプロシジャを用いて主成分得点を計算し、その主成分得点を分析変数としてCLUSTERプロシジャを用いることにより、本質的に同じ分析を実行できます。なお、PRINCOMPプロシジャでは、あらかじめSTDオプションを指定しておく必要があります。
以下にサンプルプログラムを示します。

/*サンプルデータの作成*/
data test;
  do id=1 to 100;
    x=rannor(12345);
    y=rannor(12345);
    z=rannor(12345);
    output;
  end;
run;

/*PRINCOMPプロシジャ*/
proc princomp data=test std out=out noprint;
  var x y z;
run;
proc cluster data=out method=ward outtree=tree;
  var prin: ; /*変数名がprinで始まるもののみを分析変数として用いる*/
  id id;
run;

proc tree data=tree;
run;