2段数量化分析法によるカテゴリカルデータの主成分分析
2段数量化分析法による主成分分析(岡本、2013)の手順は以下のようである。手順の説明の後で、プログラムについて説明する。
k番目()のカテゴリカル変量に対するデータを指標行列で表す。ここで、
である。
各カテゴリカル変量()の数量化を行う(第1段)。その後、数量化されたカテゴリカルデータの他に分析に入れる数量データがあればそれを加えて、主成分分析を行う(第2段)。
第1段 カテゴリカルデータの数量化
数量化のための重みをの分散が最大(極大)になるように選ぶ。
、
とおき、の制約のもとでを最大にするを求めるため、目的関数を
とおく。
なので、求めるは(2)式を満たす。
(2)式に対して、例えば は1組の解である。
(2)式を満たす2組の解、と、およびと、に対して
が成り立つ。したがって、
である。また、
より、
となる。これより、標準化得点
を得る。
とおく。
第2段 主成分分析
すなわちの数量化による標準得点に対して
とおく。
(2a)データがカテゴリカル変量のみからなる場合
の主成分分析を行う。
(2b)データがカテゴリカル変量と数量データとからなる場合
に対して主成分分析を行う。
主成分分析については、Okamoto (2006) “A Justification of Rotation in Principal Component Analysis: Projective viewpoint of PCA” で説明している。
カテゴリカルデータの単純2段主成分分析を行うプログラムTwoStepPCA.exeを用意した。実行形式のファイルであるので、ダウンロード・実行することができるが、実行環境をVisual Studio Express 2013 for Windows Desktopをインストールして準備しておく必要があるようである。VS Expressは
http://www.visualstudio.com/downloads/download-visual-studio-vs
からダウンロードできる。実行開始時に、セキュリティに関する注意メッセージが表示された場合は、対応法のウェブサイトを用意したので参照されたい。
プログラムのソースコードファイルなどは圧縮ファイルTwoStepPCA.zipとしてまとめたので、ダウンロード・解凍すれば、Visual Studio 2013で開くことができる。
プログラムを実行すると、図1のフォームが表示される。
図1
抽出する主成分の数を「N of Comp. = 」に設定して、「GO」ボタンをクリックする。大きい値を設定したときは、有効な最大個数に調整されて、分析が行われる。
「GO」をクリックすると、入力データファイルの名前の設定を求めるダイアログウィンドウが表示される(図2)。
図2
入力データは、図3のように用意する。
図3
スラッシュ / で始まる行を区切り行として用いている。最初のスラッシュ / で始まる行の次の行にカテゴリ変数の数を書く。図3のデータではカテゴリー変数は、Country、Charactr、period、の3つであるので、3が書かれている。
次のスラッシュ / で始まる行の次の行に、3つのカテゴリー変数の名前が1行に並べて書かれている。これらは、分析結果のグラフィック出力において用いられるので、なるべく短いものがよい。
3番目のスラッシュ / で始まる行の次の行には、各カテゴリー変数におけるカテゴリーの数を書く。
4番目のスラッシュ / で始まる行の次の行から、データを1行に1ケースずつ書いていく。まず、最初に、データのケースラベルを書く。これは、分析結果のグラフィック出力において用いられるので、内容を簡潔に表す短いものがよい。
カテゴリーは、すべてのカテゴリー変数において、1からの整数値で表す。K個のカテゴリーがあれば、1からKまでの整数値によって表す。どのカテゴリーをどの整数値に対応させるかは任意である。
最後のデータの次の行に、スラッシュ / で始まる行を置いて、データの終わりを示す。
図2において、入力データファイル名を設定して「開く」ボタンをクリックすると、分析結果などを出力するテキストファイル名の設定を求めるダイアログウィンドウが表示される(図4)。
図4
適当なテキストファイル名(拡張子が .txt のもの)を設定して「保存」ボタンをクリックすると、計算が始まる。
計算が終了すると、図5のような画面になる。
図5
各ケースが、その主成分値を座標値としてプロットされている。どの主成分値を座標値とするかは、画面左上のエディットボックスに設定して選ぶことができる(図6)。
図6
設定後、「Draw」ボタンをクリックすると、設定された主成分を座標軸とする布置が描かれる。実際に採用された主成分数より大きい値が設定されたときは、最大数に修正されて、描かれる。
カテゴリー変数の場合、ケースの布置を描くと複数のケースが同じ座標となり、重なる可能性が高くなる。このため、座標点に小さいランダムな変動を加えて重なりを防いで描画している。このため、同じ成分で「Draw」ボタンをクリックして布置を描画したとき、小さいランダムな変動が起こる。布置に重なりが見られるときは、「Draw」ボタンを何回かクリックして、重なっている点が分かり易い布置を選ぶとよい。ちなみに、図5では、重なりがないので、「Draw」ボタンをクリックしても布置が少し動くだけである。
「Save」ボタンをクリックすると、表示されている布置の画像がファイルに保存される。
「Close」ボタンのクリックで、図5で表示されているウィンドウは閉じられて、次のウィンドウ(図7)が表示される。
図7
数量化されたカテゴリー変量と主成分との相関係数を座標値とする点が描かれている。数量化されたカテゴリー変数は、カテゴリー変数の名前に順番に「名前−番号」の形式で名前が付けられている。すなわち、上の理論的説明において、k番目のカテゴリー変量の数量化の場合、 から順番に、「名前ー0」・・・と名前が付けられている。組み合わせる主成分は、図5の場合と同様、左上のエディタボックスに設定して選ぶことができる(図8)
図8
「Close」ボタンのクリックでウィンドウは閉じられ、分析結果の出力ファイルが保存されたことを示すメッセージボックスが表示される(図9)。
図9
「OK」ボタンのクリックでメッセージボックスは閉じられ、プログラムの実行終了となる。
プログラムの実行終了後、出力ファイルを開くと、図3の入力データの場合、以下のようになっている。
Data
file...D:\yasuharu\www\LaCoocan\VCpp\QMethods\TwoStepPCA\TwoStepPCA\TwoStepPCA\DataMurakami_abc.txt
村上 隆 平成11年(1999)科研報告書、Table 1
Var1:
生国; ドイツ1、フランス2、ロシア3
Var2:
作品の性格; 絶対音楽1、中間的2、表題・劇音楽3
Var3:
時期; 19世紀前半1、19世紀後半2、20世紀前半3
/ カテゴリー変数の総数
/ カテゴリー変数名
/ 変数ごとのカテゴリー数
CatVar[0]
--> Country
n_categories = 3
CatVar[1]
--> Charactr
n_categories = 3
CatVar[2]
--> period
n_categories = 3
/ データ: ID文字列 カテゴリー値・・・
Number
of cases = 10
Data...
aaa:Beethoven
1 1 1
aba:Schubert
1 2 1
acb:Wagner
1 3 2
aac:Schoenberg
1 1 3
bca:Berlioz
2 3 1
bcb:Bizet
2 3 2
bbc:Debussey
2 2 3
cbb:Tchaikovsky 3 2
2
ccb:Musorgsky
3 3 2
cbc:Stravinsky
3 2 3
Indicator
matrices...
aaa:Beethoven 1 0
0 1 0 0 1 0 0
aba:Schubert
1 0 0 0 1 0 1 0 0
acb:Wagner
1 0 0 0 0 1 0 1 0
aac:Schoenberg 1 0 0 1 0 0 0 0 1
bca:Berlioz
0 1 0 0 0 1 1 0 0
bcb:Bizet
0 1 0 0 0 1 0 1 0
bbc:Debussey
0 1 0 0 1 0 0 0 1
cbb:Tchaikovsky 0 0 1 0 1 0 0 1 0
ccb:Musorgsky 0 0
1 0 0 1 0 1 0
cbc:Stravinsky 0 0 1 0 1 0 0 0 1
CatVar-0 Country
Lambda...
3.6
3
0
Eigen
Vector...
0.816
0.000
-0.408
0.707
-0.408
-0.707
CatVar-1 Charactr
Lambda...
4
2.4
0
Eigen
Vector...
0.000
0.816
0.707
-0.408
-0.707
-0.408
CatVar-2 period
Lambda...
3.6
3
0
Eigen
Vector...
-0.408
0.707
0.816
0.000
-0.408
-0.707
Variable
Labels...
Country-0
Country-1
Charactr-0
Charactr-1
period-0
period-1
Z...
Country-0
Country-1
Charactr-0
Charactr-1
period-0
period-1
0:
1.225
0.000
0.000
2.000
-0.816
1.291
1:
1.225 0.000
1.118
-0.500
-0.816
1.291
2:
1.225
0.000
-1.118
-0.500
1.225
0.000
3:
1.225
0.000
0.000
2.000
-0.816
-1.291
4:
-0.816
1.291
-1.118
-0.500
-0.816
1.291
5:
-0.816
1.291
-1.118
-0.500
1.225
0.000
6:
-0.816 1.291
1.118
-0.500
-0.816
-1.291
7:
-0.816
-1.291
1.118
-0.500
1.225
0.000
8:
-0.816
-1.291
-1.118
-0.500
1.225 0.000
9:
-0.816
-1.291
1.118
-0.500
-0.816
-1.291
Singular
values...
1.39311 1.25179 1.05663 0.89511 0.61414 0.44430
Rank
of Z = 6
n_comp
is replaced by 6
The
principal components...
aaa:Beethoven:
1.760
-0.678
-0.572
0.387
-1.050
1.003
aba:Schubert:
0.846
0.009
0.136
2.024
1.267
-0.427
acb:Wagner: -0.331
-1.006
-0.981
-0.462
1.830
-0.986
aac:Schoenberg:
1.538
0.453
-0.480
-1.821
-0.037
-0.152
bca:Berlioz:
-0.164
-1.266
1.520
0.575
-1.283
-0.838
bcb:Bizet:
-1.046
-1.086
0.641
-0.875
0.312
1.134
bbc:Debussey:
-0.091
1.061
1.851
-0.596
0.762
0.538
cbb:Tchaikovsky:
-0.959
0.919
-0.949
0.854
-0.062
1.795
ccb:Musorgsky:
-1.254
-0.277
-1.188
-0.182
-1.094
-0.736
cbc:Stravinsky:
-0.299
1.870
0.021
0.096
-0.645
-1.332
Structure
matrix...
comp. 1
comp. 2
comp. 3
comp. 4
comp. 5 comp.
6
Country-0
0.778
-0.249
-0.387
0.026
0.410
-0.115
Country-1
0.156
-0.491
0.791
-0.215
0.205
0.143
Charactr-0
0.256
0.838
0.119
0.371
0.174
0.223
Charactr-1
0.825
-0.056
-0.263
-0.359
-0.272
0.213
period-0
-0.733
-0.296
-0.506
-0.136
0.201
0.247
period-1
0.167 -0.687
-0.040
0.685
-0.148
0.088
まず、読み込んだ内容が順番に出力されている。
その後、「Indicator matrices…」に続いて、Gの内容が出力されている。
次に、カテゴリー変数ごとに、固有値と固有ベクトル(固有値が0でないものに対するもの)が出力されている。各カテゴリー変量は、それぞれ固有値0をもつ(岡本、2013)。
次に、数量化されたカテゴリー変量の名前が順に書きだされる。名前は、カテゴリー変量の名前に、順に0から番号づけられて、名前―0、名前―1、・・・、というようになっている。
「Z...」に続いて、各ケースの標準化された数量化得点(標準化得点)が書き出されている。この部分を取り出して(コピー・貼り付けなど)、他の変量と組み合わせて分析することができる。
「Singular values...」に書き出されている値は、主成分分析のときの特異値である(Okamoto, 2006)。
「The
principal components...」には、各ケースの主成分値が書き出されている(図5)。
「Structure matrix...」は、数量化された変量と主成分との相関係数である(図7)。
なお、PCAをデータの部分空間への正射影と考えたとき、その部分空間での座標系は任意である。すなわち、回転が座標系の選択として正当化される。カテゴリカルデータに対して、上の2段数量化PCAで回転を行うときは、カテゴリー変量の標準化得点(上の「Z...」に続く値)をコピーして取り出し、回転を行うPCAの入力データとして分析すればよい。
参考文献
岡本安晴(2013)「カテゴリカルデータの単純2段主成分分析 : カテゴリ型と連続型の同時主成分分析」日本行動計量学会大会発表論文抄録集 41, 192-195, 2013-09-03