« 読了:Carvalho (2016) 当たり外れがプロパー・スコアリング・ルールで決まるクジを報酬にすれば参加者のリスク選好がどうであれ真実申告メカニズムが得られるというのは本当か | メイン | 読了:「碌山のことなど」 »
2018年5月 3日 (木)
仕事の関係でデータ解析について御相談をいただくことがあるのだけれど(嗚呼、流されていく人生...)、これこれこういうことをSPSSでやるためにはどうしたらいいでしょうか? なあんて問われることがあって、そのたびにオタオタしてしまう。SPSSなんて長らく使っていないもので。
いやいや、SPSSの悪口を言うつもりはないです、全然。神は地上にさまざまな命をもたらし、人類にさまざまなソフトウェアをお与えになりました。いずれも等しく素晴らしい(両手を広げるポーズ)。素敵ですよね、SPSS!
そんなこんなで、自分では普段使っていないソフトウェアについて考えるというのも、畳の上の水練みたいで、それはそれで興味深い。先日はSPSSでクラスタリングする際の事例間の近接性指標の選択について御相談いただき、かなり焦ったので、今後のためにメモを作っておく。
手順は次の通り。
- SPSS Statistics Base 25の英語版マニュアルを検索し、事例間の近接性を求めていそうなプロシジャについて片っ端からメモする。BaseというのはSPSS Statisticsの基本パッケージで、基本的なプロシジャしか入っていない。オプションパッケージにも近接性指標を使うのがあるかもしれないけど、ええい、省略だ。
- SPSSのなにが一番困るかというと... 訂正、SPSSのどこが一番面白いかというと、統計用語の独創的な日本語訳である。というわけで、日本語版マニュアルから該当ページを探し、日本語訳を[]内に付記する。
- さらにさらに、アルゴリズム解説書から、各指標の定義と思われるものをメモする。なにしろ、IBMの膨大なドキュメント群からこのPDFファイルを見つけるまでが大変なのである。このPDFには日本語版がないというのがポイント。さらにいうと、このPDFには目次もノンブルもなくて... いや、そういうところも楽しいですよね!ええ楽しいです!
さあ行きましょう! (と自分で自分を励まして)
距離
PROXIMITIESコマンドでは以下の指標が利用できる(英語版p.43-; 日本語版p.45-; アルゴリズム解説書p.864-)。
- 間隔データ:
- Euclidean distance[ユークリッド距離]: $EUCLID(x, y) = \sqrt{\sum_i (x_i - y_i)^2}$. 非類似性.
- squared Euclidean distance[平方ユークリッド距離]: $SEUCLID(x, y) = \sum_i (x_i - y_i)^2$. 非類似性.
- Chebychev[Chebychev]: $CHEBYCHEV(x, y) = max_i |x_i - y_i|$. 非類似性.
- block[都市ブロック]: $BLOCK(x, y) = \sum_i |x_i - y_i|$. 非類似性.
- Minkowski[Minkowski]: $MINKOWSKI(x, y) = (\sum_i | x_i - y_i |^p)^{1/p}$. 非類似性.
- Pearson correlation[Pearsonの相関係数]: $CORRELATION(x, y) = \sum_i(Z_{xi} Z_{yi}) / N$. $Z$は標準化得点。類似性。
- cosine[コサイン]: $COSINE(x,y) = \sum_i(x_i y_i) / \sqrt{(\sum_i x^2_i)(\sum_i y^2_i)}$. 類似性。
- customized[カスタマイズ].
- 頻度データ
- Chi-square measure[カイ二乗測度]: $CHISQ(x, y) = \sqrt{\sum_i \frac{(x_i-E(x_i))^2}{E(x_i)}+\sum_i \frac{(y_i-E(y_i))^2}{E(y_i)}}$. 非類似性.
- phi-square measure[ファイ二乗測度]: $PH2(x, y) = CHISQ(x, y) / \sqrt{N}$. 非類似性.
- 二値データ: 下記の27種類。
二値データの指標は山ほどある。アルゴリズム解説書ではいくつかのタイプにわけて説明しているので、このタイプ分けに従ってメモしておく。
以下、2x2のクロス表について、両方presentの頻度を$a$, 両方absentの頻度を$d$, 片方だけpresentの頻度を$c,d$とする。またメモを楽にするために、$n=a+b+c+d$とする。
タイプ1. 二値データの指標 [←いや、そういってしまえばみんなそうなんですけどね]。いずれも類似性の指標。
- Russell and Rao[RusselとRao]: $RR(x,y) = a / n$
- simple matching[単純整合]: $SM(x,y) = (a+d) / n$
- Jaccard[Jaccard]: similarity ratioともいう。$JACCARD(x,y) = a / (a+b+c)$
- Dice[Dice]: Czekanowski, Sorensonともいう。$DICE(x,y) = 2a / (2a+b+d)$
- Sokal and Sneath 1[SokalとSneath 1]: $SS1(x,y) = 2(a+d) / (2(a+d)+b+c)$
- Rogers and Tanimoto[RogersとTanimoto]: $RT(x,y) = (a+d) / (a+d+2(b+c))$
- Sokal and Sneath 2[SokalとSneath 2]: $SS2(x,y) = a / (a+2(b+c)))$
- Kulczynski 1[Kulczynski 1]: $K1(x,y) = a/(b+c)$。分母が0なら9999.999とする。
- Sokal and Sneath 3[SokalとSneath 3]: $SS3(x,y) = (a+d)/(b+c)$。分母が0なら9999.999とする。
いま気が付いたんだけど、普段頼りにしている齋藤・宿久(2006)「関連性データの解析法」(共立出版)では、JaccardとRussell & Raoの定義が入れ替わっている(p,18-19)。あらら。おそらく単純な誤植だろう。
タイプ2. 条件付き確率。いずれも類似性の指標である。
- Kulczynski 2[Kulczynski 2]: $K2(x,y) = (a/(a+b) + a/(a+c))/2$. 一方がpresentであるという条件の下での、他方がpresentである条件付き確率の平均。
- Sokal and Sneath 4[SokalとSneath 4]: $SS4(x,y) = (a/(a+b)+a/(a+c)+d/(b+d)+d/(c+d))/4$。一方がなにかであるという条件の下での、他方がそれと同じである条件付き確率の平均。
- Hamann[Hamann]: $HAMANN(x,y) = ((a+d)-(b+c))/n$. 値が同じである確率から、値が異なる確率を引いたもの。
うーん、Hamannの指標を条件付き確率と呼ぶことができるのだろうか? ま、条件付き確率に基づく指標ではある。
タイプ3. 予測可能性の指標。いずれも類似性の指標である。あらかじめ次のように定義しておく。
$t_1 = max(a,b)+max(c,d)+max(a,c)+max(b,d)$
$t_2 = max(a+c, b+d) + max(a+b, c+d)$
- Lambda[ラムダ]: $LAMBDA(x,y) = (t_1 - t_2)/(2n-t_2)$。Goodman-KruskalのLambda。一方の値が分かったことで、他方の値についての予測誤差が何割下がるかという指標。
- Anderberg's D[AnderbergのD]: $D(x,y) = (t_1 - t_2)/2n$。Lambdaと似ているが、実際の予測誤差の減少を測っている。
- Yule's Y[YuleのY]: $Y(x,y) = (\sqrt{ad}-\sqrt{bc})/(\sqrt{ad}+\sqrt{bc})$
- Yule's Q[YuleのQ]: $Y(x,y) = (ad-bc)/(ad+bc)$. Goodman-Kruskalのgammaの2x2バージョン。
タイプ4. その他(類似性)
- Ochiai[落合]: $OCHIAI(x,y) = \sqrt{(a/(a+b)) (a/(a+c))}$
- Sokal and Sneath 5[SokalとSneath 5]: $SS5(x,y) = ad/\sqrt{(a+b)(a+c)(b+d)(c+d)}$
- phi 4-point correlation[ファイ4分点相関]: $PHI(x,y) = (ad-bc)/\sqrt{(a+b)(a+c)(b+d)(c+d)}$
- dispersion[散らばり]: $DISPER(x,y) = (ad-bc)/n^2$
タイプ5. その他(非類似性)
- Euclidean distance[ユークリッド距離]: $BEUCLID(x,y) = \sqrt{b+c}$
- squared Euclidean distance[平方ユークリッド距離]: $BSEUCLID(x,y) = b+c$
- size difference[サイズの差]: $SIZE(x,y) = (b-c)^2/n^2$
- pattern difference[パターンの違い]: $PATTERN(x,y) = bc/n^2$
- shape[形]: $BSHAPE(x,y) = (n(b+c)-(b-c)^2)/n^2$
- variance[分散]: $VARIANCE(x,y) = (b+c)/4n$
- Lance and Williams[LanceとWilliams]: Bray-Curtisともいう。$BLWMN(x,y) = (b+c)/(2a+b+c)$
階層クラスタリング
Hierarchical Cluster[階層クラスター]プロシジャの場合 (CLUSTERコマンドのこと。英語版p.87-;日本語版p.93)... とメモしようと思ったら、順序は違えど上記のPROXIMITIESコマンドと同じであった。
ということは結局、SPSS Statisticsで二値データを階層クラスタリングしようとするとと、豊富な距離指標を選べてしまうわけだ。そのいっぽう、IBMのサポートページには「二値データで階層クラスタリングするのはやめろ」というアドバイスが載っているわけで... 落とし穴掘ったから落ちないようにね、と親切に教えてもらったような気分である。
最近隣法
Nearnest Neighbor Analysis[最近傍分析]プロシジャでは、以下の指標が利用できる(KNNコマンド。英語版p.66; 日本語版p.70; アルゴリズム解説書p.578)。
- Euclidean metric[ユークリッド計量]: $Euclidean_{ih} = \sqrt{\sum_p w_p (x_{pi}-x_{ph})^2}$
- City block metric[都市ブロック計量]: $CityBlock_{ih} = \sum_p w_p |x_{pi} - x_{ph}|$
なお、$w_p$は通常は$1$、特徴の重要度を使って重みづけする場合には、特徴の重要度を合計1に規準化した値になる。
TwoStepクラスタリング
TwoStep Cluster[TwoStepクラスタ]プロシジャでは、クラスタ間距離として以下が選べる(TWOSTEP CLUSTERコマンド。英語版p.79; 日本語版p.84。定義がアルゴリズム解説書p.1078-にあるけど、そこだけメモしてもしょうがないので割愛する)。
- Log-likelifood[対数尤度]
- Euclidean[ユークリッド]
K-Means法
K-Means Cluster[大規模ファイルのクラスター分析]プロシジャでは、距離はユークリッド距離に固定されている。(QUICK CLUSTERコマンド)
MDS
Multidimensional Scaling[多次元スケーリング法]プロシジャの場合、以下の指標が選択できる。(ALSCALコマンド。英語版p.124; 日本語版p.133。さすがに訳語はPROXIMITIESコマンドでの訳語と揃えているようなので、略記する。アルゴリズム解説書p.14-を見ると、重みつきユークリッド距離の定義しかないんだけど、なぜだろう? なにか見落としているのかもしれない。)
- 間隔データ: Euclidean distance, Squared Euclidean distance, Chebychev, Block, Minkowski, customized.
- 頻度データ: Chi-square measure, Phi-square measure
- 二値データ: Euclidean distance, Squared Euclidean distance, Size difference, Pattern difference, Variance, Lance and Williams.
雑記:データ解析 - 覚え書き:SPSS Statisticsにおける近接性の指標