|
○ 概要 主成分分析・・・多種類の説明変数(定量的データ)があって目的変数はないときに,これらの説明変数をとりまとめて総合指標となる変数(定量的データ)を作り,資料間の差異をはっきりさせる. 説明変数 x1,x2,・・・,xn から新しい変数 例 (1) 採用試験において各学生の「在学時学習成績」「適性検査」「学科試験」「性格検査」「一般常識」などの評価項目から総合指標を求める. (2) 各会社の「成長性」「企業規模」「従業員数」「財務健全性」「資本金」「営業利益」などの評価項目から総合指標を求める. ○ 主成分の求め方(要点) 各変数(説明変数)の単位がそろっている場合などにおいては, (ア) 分散が最大となる変数(実際は係数)を直接求めてもよい. (イ) 分散共分散行列の固有値・固有ベクトルから求めてもよい. 各変数(説明変数)の単位がそろっていない,数字のスケールが違うなど多くの場合は, (ウ) 元のデータを基準化(規格化,標準化)して分散が最大となる変数を求めるとよい. (エ) 相関係数行列の固有値を利用して求めることができる. |
※ 各学生の総合指標として単に「合計得点」を用いると元データよりも情報量が減る(5次元→1次元など). 主成分分析では,第1主成分,第2主成分,・・・と元の説明変数の個数まで主成分を定義することができ,単なる合計得点でなく新たな視点で能力を再定義することができる. 主成分分析をイメージ的に言えば,次の図(累積寄与率の図)のように,元の変数n個で表わされる情報の大半を2,3個の主成分に要約して表現するものとなっている. 情報量の図 もちろんn次元の情報を完全に再現するにはn次元の主成分が必要となるが,それでは煩雑さが元と同じでありがたくない. 2,3個の主成分に大半の情報を集約するところがポイント・・・散布図などにより全体の傾向を視覚的に表現することもできる. ※ 重回帰分析では説明変数相互間の相関が強いと多重共線性(マルチコリニアリティ)の問題を生ずるが,主成分分析では元の説明変数相互間に相関が強いほど情報を集約しやすい. |
| ○(ア) 原理(2変数で説明) 複数の変数に座標変換を行って,不偏分散が最大となるような新変数(主成分)を作る. 資料間の差異が一番はっきり分かる変数(主成分)を作る = 不偏分散が最大となる新変数を求める =(2変数の場合) X = ax + by とおいてXの不偏分散が最大となる係数a,bを定める. ただし,係数a,bを大きくすれば不偏分散は幾らでも大きくなるのでベクトル(a,b)の大きさが1という条件を付ける. これは図のように回転させて新変数X の不偏分散が最大となるように変形することに対応している. ![]() 2変数の場合,元の変数x,yの不偏分散をSx,Sy とし,主成分X,Yの不偏分散をSX,SY とするとき,回転移動である限り,SX +SY = Sx+ Sy = S(全体の情報量)が成り立つ. 主成分X の情報の割合SX/(Sx+ Sy) を主成分X の寄与率という.また,寄与率を順次加えていったものを累積寄与率という.(累積寄与率の総和は1となる.) 累積寄与率が7〜8割程度=大半の情報量となるまで主成分の個数を増やしていく. |
3変数の場合
上のようなデータがあるときに,項目1〜項目3のデータを幾つかの指標にまとめて資料(学生1〜学生25)の差異を明らかにする. そのために z = ax1+ bx2+cx3 で定義される変数zを導入しその(不偏)分散が最大となるように定数a,b,cを定める. このように定めた変数zを第1主成分とする. 第1主成分だけで元の変数項目1〜3の(不偏)分散のほとんどが説明しつくされることは少なく,第2主成分,・・・との組合せで各資料の傾向を表現することになる.その際,第1主成分と第2主成分は無相関となるようにする. 第1主成分を係数ベクトル(a,b,c)で表わし,第2主成分を係数ベクトル(d,e,f)で表わすとき,これらを無相関とするには,これら2つのベクトルが垂直になるようにする. 第3主成分を導入するときは第1主成分とも第2主成分とも垂直となるようにする. ※ 係数ベクトル(a,b,c),(d,e,f)は,各々逆向きでも条件を満たすので,求め方(以下の解説では初期値の与え方)によっては,逆向き(-a,-b,-c),(-d,-e,-f)の組合わせも同じ結果が出る. |
||||||||||||||||||||||||||||||||||||||||||||||||||
| ○(イ) 分散共分散行列を用いる方法(2変数で説明) 上記のように分散が最大となるものは,数学的には分散共分散行列の固有値,固有ベクトルに対応することが知られている. すなわちX = ax + by のときX の分散 S が最大 ⇔ Sは分散共分散行列の固有値のとき最大となる (a,b)はその固有値に対する固有ベクトル(大きさ1)となる. 最も大きな固有値に対応するX を第1主成分とする. 次に大きい固有値に対応するものを第2主成分とする. この形の実対称行列では,一般に,説明変数(この例ではx,y)の個数だけ正の固有値が存在し,各々の固有ベクトルは互いに垂直となることが知られている. ※ ただし,Excelの「ツール」→「分析ツール」→「共分散」で求められる分散共分散行列は母集団を扱っている場合の値となるので,今の場合,標本の大きさをnとするとき n/(n-1)を掛けた不偏分散に直して使う. |
3変数の場合 分散共分散行列は「ツール」→「分析ツール」→「共分散」で求められる.(下三角行列となるので対称行列となるように上三角の部分を埋めるとよい.・・・コピー→作業用の範囲に行と列を入れ替えて貼り付け.対角成分を削除して,「形式を選択して貼り付け」→加算・値の貼り付け など)
標本の大きさ(個数)をnとするとき 各成分に n/(n-1) を掛けたもの
固有値λ1=403.12となるので,第1主成分の寄与率は,403.12/991.38=0.407 固有値λ2=325.85となるので,第2主成分の寄与率は,325.85/991.38=0.329 累積寄与率は0.736となる. (元の情報量の73.6%の説明ができるので第2主成分まで採用すればよい.) |
||||||||||||||||||||||||||||||||||||||||||||||||||
| ○(ウ) 変数を基準化(規格化,標準化)する方法 各説明変数の単位が異なるときや値のスケールが違うときは各説明変数を基準化(規格化,標準化)してから主成分分析を行うのがよい. すなわち各説明変数を (説明変数 - 平均)/不偏標準偏差 に変換したもので分析するとよい.この場合,基準化(規格化,標準化)された変数の平均値は0,分散は1となる. 以後の処理方法は(ア)の場合と同じ (第2主成分以降の計算において係数ベクトルの垂直条件が必要) |
3変数の場合
分散の総和は説明変数の個数nになり,求めた主成分の分散が1以下になれば情報量の少ない主成分として打ち切ればよい. |
||||||||||||||||||||||||||||||||||||||||||||||||||
| ○(エ) 相関係数行列を用いる方法 相関係数はその定義において変数を基準化(規格化,標準化)したものとなっているので,元の変数から相関係数行列を求めた場合,結果は(ウ)の場合と同じになる. この相関係数行列の固有値,固有ベクトルを求めればよい. 各固有値は λ1+λ2+・・・+λn = n 各主成分の寄与率(全体の分散のうちその主成分で説明できる割合)はλk/n で,累積寄与率は (λ1+λ2+・・・+λk)/ n となる. 固有値が1より小の主成分は元の変数よりも情報量が少ないので固有値が1以上の主成分までを使うのを目安とする(カイザー基準). |
3変数の場合 相関係数行列は「ツール」→「分析ツール」→「相関」で求められる.(下三角行列となるので対称行列となるように上三角の部分を埋めるとよい.・・・コピー→作業用の範囲に行と列を入れ替えて貼り付け.対角成分を削除して,「形式を選択して貼り付け」→加算・値の貼り付け など)
相関係数行列では,各主成分の分散が固有値になり,全体の分散は説明変数の個数となる.(対角成分の和=1+1+1+・・・=n) そこで相関係数行列の固有値を大きいものから順に求めればよい. |
||||||||||||||||||||||||||||||||||||||||||||||||||
| (1) 各項目(説明変数)x1,x2,・・・,xnの単位がそろっている場合などにおいては,
ただし,係数a1,a2,・・・,anを大きくすれば z1の不偏分散は幾らでも大きくなるので,ベクトル (a1,a2,・・・,an)の大きさが1となるように制限を付ける. (2) 次に, ただし,ベクトル (b1,b2,・・・,bn)の大きさが1かつ ベクトル (b1,b2,・・・,bn)がベクトル (a1,a2,・・・,an)と垂直となるように制限を付ける. (主成分1と2が無相関⇔係数ベクトルが垂直⇔係数ベクトルの内積が0) a1b1 + a2b2・・・+anbn = 0 ただし,ベクトル (c1,c2,・・・,cn)の大きさが1かつ ベクトル (c1,c2,・・・,cn)がベクトル (a1,a2,・・・,an)にもベクトル (b1,b2,・・・,bn)にも垂直となるように制限を付ける. a1c1 + a2c2・・・+ancn = 0 [主成分の個数:どこまで求めるのか] (*) 元の変数x1,x2,・・・,xnの不偏分散の和を 元の説明変数がn個あるとき,理論上はn個まで主成分を求められる(このとき累積寄与率は1となる)が,多すぎても使いにくいので,散布図などで示しやすいように2個以上で累積寄与率70〜80%以上を目安とする. [主成分の解釈] 各主成分における説明変数の係数,例えば第1主成分 [散布図にまとめた場合の例] ![]() |
表1
表1のように各学生について評価の項目1〜3が与えられたとき,主成分分析を行うには (1) i) 各項目(説明変数)の係数の仮数をB28:D28に書き込む (a1,a2,a3の値が書き込まれるセル) ii) a12 + a22 +・・・+an2 = 1の制約条件を指定するため B29には=B28^2 とし D29までコピー・貼り付け E29には=SUM(B29:D29) iii) 第1主成分の列を作り F2には =SUMPRODUCT(B2:D2,$B$28:$D$28) これをF26までコピー・貼り付け iv) F29に =VAR(F2:F26) [不偏分散の方] V) ツール→ソルバー 目的セル:F29 として 最大値 を選択 変化させるセル として $B$28:$D$28 制約条件 として $E$29 = 1 [OK]でエラーメッセージが出るので[OK][キャンセル][実行] 「解を記入する」で[OK] (2) 同様にして第2主成分の列を追加する.なお寄与率,累積寄与率の計算欄および元の変数の分散を計算しておく.
ツール→ソルバー→リセット ツール→ソルバー 目的セル:G31 として 最大値 を選択 変化させるセル として $B$34:$D$34 制約条件 として $E$35 = 1 追加 $F$35 = 0 [OK]でエラーメッセージが出るので[OK][キャンセル][実行] 「解を記入する」で[OK] 累積寄与率が0.735となるので第2主成分まででよい. |
| ○ 分散・共分散行列の作成 Excelで「ツール」→「分析ツール」→「共分散」によって分散・共分散行列(下三角行列)が得られる数値は母集団の分散・共分散を表わしているので,不偏推定値としての分散・共分散とするには各成分に n/(n-1) を掛けるとよい. (標本の大きさが30未満のときに(単純な)分散と不偏分散の食い違いが大きくなる:このページ参照) |
分散・共分散行列を求めるには 「ツール」→「分析ツール」→「共分散」→「OK」→ 入力範囲として行頭ラベルを含めて指定し(次の図の学生番号は入れない),「先頭行をラベルとして使用」にチェック→OK(新規シートに結果が表示される)
表2
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ○ 分散・共分散行列の固有値を求める 右上の表2において桃色で表示した範囲を分散・共分散行列Aとするとき,Ax = λx となる固有値λと固有ベクトルxを求める. 分散・共分散行列においては (1) 対角成分が元の説明変数の分散を表わす. (2) 対角成分の和が全体の分散Sを表わす. (3) 固有値λ1,λ2,・・・,λnは正の実数で 第1主成分をλ1,第2主成分をλ2,・・・,第n主成分をλnとすると S ≧λ1≧λ2≧・・・≧λn≧0 (4) λ1+λ2+・・・+λn = S となる. |
※ 行列Aの固有値λは,固有方程式(特性方程式)
各々のλに対して,零ベクトルでないベクトルxについて ただし,xが固有ベクトルのときその任意の定数倍もまた固有ベクトルとなるから,ここでは大きさ1の固有ベクトルを求める. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 右のように不偏分散・共分散の行列,固有値λ(適当な初期値)の欄を作る. 次に、λEの行列,A-λEの行列を順に作り,E15には行列式|A-λE|の計算式を書く =MDETERM(B14:D16) (1) 第1主成分の固有値を求める ツール→ソルバー 目的セル:$E$15 値 0 変化させるセル:$E$2 制約条件:$E$2 <= 991 かつ $E$2 >= 377 [実行]→何回か[指定された制限時間に達しました]→[継続]→・・・[解を記入する][OK] 第1主成分 403.125 をコピーして待避 (2) 第2主成分の固有値を求める ツール→ソルバー 目的セル:$E$15 値 0 変化させるセル:$E$2 制約条件:$E$2 <= 402 かつ $E$2 >= ここがさじ加減 (制約条件を雑に指定すると小さい方の固有値が先に求まることがあるので注意) [実行]→何回か[指定された制限時間に達しました]→[継続]→・・・[解を記入する][OK] 第2主成分 325.85 をコピーして待避(移動すると条件式も付いていくのでダメ) (実際には最後1個の固有値はS-(残り)で求まるが点検を兼ねて以下の手順を踏んでもよい.) (3) 第3主成分の固有値を求める ツール→ソルバー 目的セル:$E$15 値 0 変化させるセル:$E$2 制約条件:$E$2 <= 324 かつ $E$2 >= 0 [実行]→何回か[指定された制限時間に達しました]→[継続]→・・・[解を記入する][OK] 第2主成分 262.40 をコピーして(移動は不可)待避 |
Excelのソルバーで固有値を求めることはできるが,専用のソフトではないので,幾つもの固有値を能率よく求めるには工夫がいる.次のイメージ図のように初期値に近い解に収束しやすいので初期値の見当をつけると早く見つかる. ![]() 「単位の自動設定」を選択すると値が乱高下しやすいのでこのチェックはハズれたままにしておく方がうまくいく. また一度で解に達するとは限らないので,漸近的に近づくように「反復結果の表示」にチェックを入れるとよい.作者の設定例は次のとおり. ![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ○ 分散・共分散行列の固有ベクトルを求める 実対称行列の固有ベクトルは互いに垂直となるので,先に求めた固有ベクトルとの垂直条件は制約条件に指定しなくてもよい. 右のように固有値を入力する欄,これを参照してλE,A-λEがあるとき,固有ベクトルすなわち係数の欄を作り仮の値(初期値)を入れておく.(右図 B17:B19) 固有ベクトルの大きさが1という条件を指定するため,これらの2乗和の欄を作る.(右図 C20) Ax = λx ⇔ (A-λE)x = 0 の条件を指定するため,まず行列の積 (A-λE)xの欄をE17:E19に作り,次にそれらの2乗和を作ると ※ 図のD17に =MMULT(B12:D14,B17:B19) D17:D19を反転表示させてから数式バーをクリックし,Ctrl+Shift+Enter E17に =D17^2 E19までコピー・貼り付け E20に =SUM(E17:E19) (1) 第1主成分の固有ベクトルを求める ツール→ソルバー 目的セル:$E$20 値 0 変化させるセル:$B$17:$B$19 制約条件:$E$20 = 1 [実行]→何回か[指定された制限時間に達しました]→[継続]→・・・[解を記入する][OK] (なかなか収束しないとき「オプション」で精度や収束の条件を緩めて結果が出てから書き込んで,次に精度を上げるとよい.) (2) 第2主成分の固有ベクトルを求める 2つ目の固有値をコピー・貼り付けして同様に行う (手書きでは無理:小数点以下わずか違うだけで収束しないことがある) [散布図等は(ア)の場合と同じ] |
|
| 元のデータの説明変数を(変数-その平均値)/(不偏標準偏差)で基準化(規格化,標準化)してから上記(ア)と同様に分散を最大とする変数(主成分)を求める場合は,次の相関係数行列の固有値を求める場合と同じ結果が得られる. 経験的にはこちらの方が収束が早いようである. (右表のようなデータからスタートする.) [散布図等は次の(エ)と同じ] |
|
| ○ 相関係数行列の作成 Excelで「ツール」→「分析ツール」→「相関」によって,元のデータの行頭ラベルを含めて範囲を指定すると相関係数行列(下三角行列)が得られる.実対称行列となるように右上成分をコピー・貼り付けする. (相関係数はその計算過程において平均0,標準偏差1とする基準化(規格化,標準化)を行っているので,分散共分散行列と異なり n/n-1で処理する必要はない.) |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ○ 相関係数行列の固有値を求める 固有値の仮の値(初期値)を入力する欄,これを参照したλE,相関係数行列との差A-λEを順に作る. B10,C11,D12に =$A$7を記入 B14に=B2-B10 これをB14:D16にコピー・貼り付け 固有方程式(特性方程式)の計算式を入れる. E14に=MDETERM(B14:D16) (1) 固有値を求める ツール→ソルバー 目的セル:$E$14 値 0 変化させるセル:$A$7 制約条件:$A$7 <= 3 かつ $A$7 >= 1 [実行]→何回か[指定された制限時間に達しました]→[継続]→・・・[解を記入する][OK] ※この方法では,固有値が大きいものから順に見つかるとは限らないので説明変数の個数並べ終わるまで第何主成分か分からないのが弱点 (2) 他の固有値も求める 制約条件を変えて求める. (3) 主成分を何個求めるか 相関係数行列では対角成分はすべて1となり,すべての固有値の和が説明変数の個数と等しくなる.(右図では3) 0≦λ3≦λ2≦λ1≦(説明変数の個数) この場合,元の説明変数よりも情報量の少ない主成分は採用しないと考えればよく(カイザー基準)1以上の固有値のみを求める. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ○ 相関係数行列の固有ベクトルを求める 実対称行列の固有ベクトルは互いに垂直となるので,先に求めた固有ベクトルとの垂直条件は制約条件に指定しなくてもよい. 右のように固有値を入力する欄,これを参照してλE,A-λEを準備し,固有ベクトルすなわち係数の欄を作り,仮の値(初期値)を入れておく.(右図 A19:A21) 固有ベクトルの大きさが1という条件を指定するため,これらの2乗和の欄を作る.(右図 B22) Ax = λx ⇔ (A-λE)x = 0 の条件を指定するため,まず行列の積 (A-λE)xの欄をC19:C21に作り, 図のC19に =MMULT(B14:D16,B19:B21) C19:C21を反転表示させてから数式バーをクリックし,Ctrl+Shift+Enter D19に =C19^2 D21までコピー・貼り付け 次にそれらの2乗和を作ると D22に =SUM(D19:D21) (1) 第1主成分の固有ベクトルを求める ツール→ソルバー 目的セル:$D$22 値 0 変化させるセル:$A$19:$A$21 制約条件:$B$22 = 1 [実行]→何回か[指定された制限時間に達しました]→[継続]→・・・[解を記入する][OK] (なかなか収束しないとき「オプション」で精度や収束の条件を緩めて結果が出てから書き込んで,次に精度を上げるとよい.) (2) 第2主成分の固有ベクトルを求める 2つ目の固有値をコピー・貼り付けして同様に行う (手書きでは無理:小数点以下わずか違うだけで収束しないことがある) [散布図にまとめた場合の例] ![]() |
|
| (1) 別添ファイル( syuseibun1.xls )に上の例に用いたデータがあるので,同じ結果が得られるかどうか確かめることができる. (2) 別添ファイル(principal_sub1.htm )に「都道府県別の生活指数」から筆者が選択した項目がある.このデータを基準化して各都道府県の暮らしやすさを2次元にまとめてみるとどうなるか. ただし,「人口xxx当り」の全国平均は,都道府県平均とは異なる(東京は10県分ほどの影響がある等)が,ここでは単純に各都道府県の平均を用いるものとする. (資料の出所:総務省統計局>統計で見る都道府県のすがた>社会生活統計指標 の一部抜粋) |
(2) 参考![]() 分析者による主成分の命名 ○都市型・・・1人当り県民所得が多い,下水道普及率が高い,人口千人当り刑法犯認知数が多い,教員1人当り小学校児童数が多い ○自動車型・・・道路舗装率が高い,人口10万人当り死傷者数が多い,貯蓄が多い,病院が多い,コンビニが少ない (感想) 所得が少なくて貯蓄が多い県に興味あり・・・高齢者が多いということか,暮らしやすいということか. (追加) 2007.08.13の新聞には厚生労働省調査として,自動車を多用する県で運動不足のためか,糖尿病が多いとの記事あり.(徳島が1位) 別の調査では,四国2県は自殺率が全国で最も少ないとされている.(研究したら何か言えそうな予感が・・・) |
|
|