主成分分析

統計処理 01 クラス : 第18回(10/17/02)

  1. 主成分分析(Principal Component Analysis, PCA)

    いくつか(p個)の変量の値を情報の損失をできるだけ少なくして、 少数変量(m個、m<p)の総合的指標(主成分)で代表させる方法である。 いくつかのテストの成績を総合した総合的成績、 いろいろな症状を総合した総合的な重症度、 種々の財務指標に基づく企業の評価 等を求めたいといった場合に用いられる。
    p変量(p次元)の観測値をm個(m次元)の主成分に縮約させるという意味で、 次元を減少させる方法と言うこともでき、 多変量データを要約する一つの有力な方法である。

  2. 2変量の場合の主成分分析 : 理解を助けるため
    1. 定式化 : 配布資料 54ページ〜
      • 重み(係数) : a1、a2
      • 合成変量(線形結合) : z
      • よく代表するように、a1 と a2 を決める。
      • より広がって測定できる軸が情報量が多い。
      • 全測定値の分散を最大化する軸を決定する。

    2. 身長と体重の総合指標を求めよう : プログラム : les1801.sas

       /* Lesson 18-1 */
       /*    File Name = les1801.sas   10/17/02   */
      
      data gakusei;
        infile 'all02.prn' firstobs=2;
        input sex $ height weight chest 
              jitaku $ kodukai carrier $ tsuuwa;
      
      proc print data=gakusei(obs=10);
      run;
      
      proc plot data=gakusei;                        : 散布図
        plot height*weight;                          : 元の変量のプロット
      run;                                           :
      proc princomp cov data=gakusei out=outprin;    : 主成分分析(分散共分散行列)
        var height weight;                           : 2変量
      run;                                           :
      proc print data=outprin(obs=15);               : 結果の出力
      run;                                           :
      proc plot data=outprin;                        : 散布図
        plot prin2*prin1/vref=0 href=0;              : 主成分得点のプロット
      run;                                           :
      proc sort data=outprin;                        : 説明のためにソートしてみる
        by prin1;                                    : 第一主成分で
      run;                                           :
      proc print data=outprin;                       : 体重がややが効いていることの確認
      run;                                           :
      

    3. 出力結果 : les1801.lst
      • 身長と体重の散布図
      • 各変量の平均、標準偏差、分散共分散行列
      • 固有値、比率(寄与率)、累積寄与率 : 解釈に使う
      • 固有ベクトル(係数a1とa2) : 解釈に使う
      • 主成分得点 : 各個人の得点(z)、2つある
      • 第1軸と第2軸の主成分得点の散布図
      
                                    SAS システム                             2
                                             22:41 Wednesday, October 16, 2002
             プロット : HEIGHT*WEIGHT.  凡例: A = 1 OBS, B = 2 OBS, ...
                   (NOTE: 32 オブザベーションが欠損値です.)
           HEIGHT |
              200 +
                  |
                  |                               B       A
              180 +                       A ADBCDCACA A B      A     A
                  |                    AABCJHPMGFCCCCB BA
                  |                  AD FHEDDCBBCAA  A        A
              160 +                ADBCAGCCAABB
                  |           A   D  DCAA A   A
                  |             A AAA
              140 +
                  ---+-----------+-----------+-----------+-----------+--
                    20          40          60          80          100
                                          WEIGHT
      
                                    SAS システム                             3
                                             22:41 Wednesday, October 16, 2002
                            Principal Component Analysis
           211 Observations
             2 Variables
                                 Simple Statistics
      
                                      HEIGHT            WEIGHT
      
                      Mean       168.8876777       58.90142180
                      StD          7.9548392        9.22946358
      
                                    SAS システム                             4
                                             22:41 Wednesday, October 16, 2002
                            Principal Component Analysis
      
                                 Covariance Matrix
      
                                       HEIGHT            WEIGHT
      
                     HEIGHT       63.27946649       51.66954141
                     WEIGHT       51.66954141       85.18299797
      
                           Total Variance = 148.46246445
      
                        Eigenvalues of the Covariance Matrix
      
                  Eigenvalue      Difference      Proportion      Cumulative
      
       PRIN1         127.049         105.635        0.855763         0.85576
       PRIN2          21.414            .           0.144237         1.00000
      
                                    SAS システム                             5
                                             22:41 Wednesday, October 16, 2002
                            Principal Component Analysis
      
                                    Eigenvectors
      
                                        PRIN1         PRIN2
      
                         HEIGHT      0.629543      0.776966
                         WEIGHT      0.776966      -.629543
      
                                    SAS システム                             6
                                             22:41 Wednesday, October 16, 2002
      
                                      K    C
                 H      W       J     O    A          T
                 E      E    C  I     D    R          S        P         P
                 I      I    H  T     U    R          U        R         R
        O   S    G      G    E  A     K    I          U        I         I
        B   E    H      H    S  K     A    E          W        N         N
        S   X    T      T    T  U     I    R          A        1         2
      
         1  F  145.0  38.0   .  J   10000               .  -31.2780  -5.40156
         2  F  148.0  42.0   .  J   50000               .  -26.2815  -5.58884
         3  F  148.0  43.0  80  J   50000  DoCoMo    4000  -25.5045  -6.21838
         4  F  148.9    .    .  J   60000               .     .        .     
         5  F  149.0  45.0   .  G   60000               .  -23.3211  -6.70050
         6  F  150.0  46.0  86      40000               .  -21.9146  -6.55308
         7  F  151.7  41.5  80  J   35000               .  -24.3407  -2.39929
         8  F  152.0  35.0  77  J   60000  DoCoMo    2000  -29.2021   1.92583
         9  F  153.0  41.0   .  J  125000  No           .  -23.9108  -1.07447
        10  F  153.0  46.5  87  G   10000               .  -19.6375  -4.53695
      
                                    SAS システム                             8
                                             22:41 Wednesday, October 16, 2002
              プロット : PRIN2*PRIN1.  凡例: A = 1 OBS, B = 2 OBS, ...
                 (NOTE: 32 オブザベーションが欠損値です.)
          PRIN2 |                            |
             10 +                            A  A  BA
                |                     AA AAA |ACAAAABA  B
                |         A       BAB C AEBCEEDDGDBAAD  A
              0 +------------A-BA-A-BA-IABDAEEEFCCABCA-C--A-----A---------
                |            A  C BAAA C A  AAB CEAACA A  A
                |        A  B AA  AA A A A BBAAB  AAAA  AAB
            -10 +                    A   A   |      AA            A
                |                            |
                |                            |              A
            -20 +                            |                       A
                ---+------------+------------+------------+------------+--
                  -40          -20           0           20           40
                                           PRIN1
      
                                    SAS システム                             9
                                             22:41 Wednesday, October 16, 2002
       OBS SEX HEIGHT WEIGHT CHEST JITAKU KODUKAI CARRIER TSUUWA PRIN1 PRIN2
      
         1  F   148.9    .     .     J      60000            .     .     .  
         2  F   155.0    .     .     J      20000            .     .     .  
         3  F   156.0    .     .     J      30000            .     .     .  
         4  F   156.0    .     .     J      50000            .     .     .  
         5  F   156.0    .     .     G          .            .     .     .  
      <略>
      
                                    SAS システム                            32
                                             22:41 Wednesday, October 16, 2002
                                            K  C
                    H      W        J       O  A     T
                    E      E    C   I       D  R     S      P         P
                    I      I    H   T       U  R     U      R         R
           O   S    G      G    E   A       K  I     U      I         I
           B   E    H      H    S   K       A  E     W      N         N
           S   X    T      T    T   U       I  R     A      1         2
      
          220  M  179.0  66.0    .      30000         .  11.8815   3.38807
          221  M  173.0  71.0  100  G       0         .  11.9891  -4.42144
          222  M  178.0  67.0    .  J       0         .  12.0289   1.98156
          223  M  172.0  72.0   89  G  150000         .  12.1365  -5.82795
          224  M  177.0  68.0    .  G   80000         .  12.1763   0.57505
          225  M  182.0  64.0    .  G       0         .  12.2162   6.97805
          226  M  170.0  74.0   90  J       0         .  12.4313  -8.64097
          227  M  175.0  74.0    .  J       0         .  15.5790  -4.75614
          228  M  180.0  70.0    .  J   40000  au  4000  15.6189   1.64686
          229  M  180.0  70.0    .          .         .  15.6189    1.6469
          230  M  178.7  71.2   95          0         .  15.7329   -0.1186
          231  M  173.5  76.5    .  G  100000         .  16.5771   -7.4954
          232  M  184.0  68.0   85      30000         .  16.5831    6.0138
          233  M  182.0  70.0   90  G  100000         .  16.8780    3.2008
          234  M  185.0  68.0   93  J       0         .  17.2127    6.7908
          235  M  175.0  77.0   95  G  130000         .  17.9099   -6.6448
          236  M  176.5  78.0   96  J   10000         .  19.6312   -6.1089
          237  M  177.0  78.0    .  J   40000         .  19.9460   -5.7204
          238  M  181.5  74.5    .  G  120000  au  3000  20.0596   -0.0206
          239  M  178.0  78.0  110  G   50000         .  20.5755   -4.9434
          240  M  169.3  88.5   94  J       0         .  23.2567  -18.3132
          241  M  186.0  82.0    .  J       0         .  28.7197   -1.2459
          242  M  182.0  90.0  100  J   40000         .  32.4173   -9.3901
          243  M  178.0 100.0  112  G   60000         .  37.6688  -18.7934
      

    4. 解釈方法
      • 寄与率 : その軸がどの程度説明力を持っているか : 第1軸だけでほぼ十分(85.6%)。第2軸に含まれる説明力は小さい。
      • 固有ベクトル : その軸の特徴を示している : 身長と体重の重みはほぼ同等だが、体重がやや大きめに効いている(第1軸)
      • 主成分得点と散布図 : 各個人がどこに付置されているか
      • 第1軸 : 全体的な体格の指標。身長と体重を足したような指標。

  3. 3変量以上の主成分分析
    1. 定式化 : 資料 71ページ〜
      • 2変量の拡張
      • 合成変量(線形結合) : z
      • 合成変量の分散を最大化する軸を決定する。

    2. 身長、体重、胸囲での総合指標を求めてみよう : プログラム : les1802.sas

       /* Lesson 18-2 */
       /*    File Name = les1802.sas   10/17/02   */
      
      data gakusei;
        infile 'all02.prn' firstobs=2;
        input sex $ height weight chest 
              jitaku $ kodukai carrier $ tsuuwa;
      
      proc print data=gakusei(obs=10);
      run;
      
      proc princomp cov data=gakusei out=outprin;    : 主成分分析(分散共分散行列)
        var height weight chest;                     : 3変量
      run;                                           :
      proc print data=outprin(obs=15);               : 結果の出力
      run;                                           :
      proc plot data=outprin;                        : 散布図
        plot prin2*prin1/vref=0 href=0;              : 主成分得点のプロット
        plot prin3*prin2/vref=0 href=0;              :
        plot prin3*prin1/vref=0 href=0;              :
      run;                                           :
      
      

    3. 出力結果 : les1802.lst
      • 各変量の平均、標準偏差、共分散行列
      • 固有値、比率(寄与率)、累積寄与率
      • 固有ベクトル
      • 主成分得点
      • 第1軸〜第3軸の散布図

      
                                    SAS システム                             3
                                             22:41 Wednesday, October 16, 2002
                            Principal Component Analysis
            81 Observations
             3 Variables
                                 Simple Statistics
      
                             HEIGHT            WEIGHT             CHEST
      
             Mean       167.8765432       59.47654321       86.93827160
             StD          8.6341078       11.23610555        7.78515523
      
                                    SAS システム                             4
                                             22:41 Wednesday, October 16, 2002
                            Principal Component Analysis
      
                                 Covariance Matrix
      
                              HEIGHT            WEIGHT             CHEST
      
            HEIGHT        74.5478179        67.4415679        25.5697840
            WEIGHT        67.4415679       126.2500679        58.8522840
            CHEST         25.5697840        58.8522840        60.6086420
      
                                    SAS システム                             5
                                             22:41 Wednesday, October 16, 2002
                            Principal Component Analysis
      
                           Total Variance = 261.40652778
      
                        Eigenvalues of the Covariance Matrix
      
                  Eigenvalue      Difference      Proportion      Cumulative
      
       PRIN1         201.047         159.467        0.769096         0.76910
       PRIN2          41.580          22.801        0.159063         0.92816
       PRIN3          18.779            .           0.071840         1.00000
      
                                    SAS システム                             6
                                             22:41 Wednesday, October 16, 2002
                            Principal Component Analysis
      
                                    Eigenvectors
      
                                 PRIN1         PRIN2         PRIN3
      
                  HEIGHT      0.492175      -.713781      0.498278
                  WEIGHT      0.767281      0.085361      -.635605
                  CHEST       0.411149      0.695148      0.589683
      
                                    SAS システム                             7
                                             22:41 Wednesday, October 16, 2002
                                 K   C
                H     W     J    O   A         T
                E     E   C I    D   R         S       P       P        P
                I     I   H T    U   R         U       R       R        R
         O  S   G     G   E A    K   I         U       I       I        I
         B  E   H     H   S K    A   E         W       N       N        N
         S  X   T     T   T U    I   R         A       1       2        3
      
          1 F 145.0 38.0  . J  10000             .    .       .       .     
          2 F 148.0 42.0  . J  50000             .    .       .       .     
          3 F 148.0 43.0 80 J  50000 DoCoMo   4000 -25.2775  7.9579 -3.52285
          4 F 148.9   .   . J  60000             .    .       .       .     
          5 F 149.0 45.0  . G  60000             .    .       .       .     
          6 F 150.0 46.0 86    40000             . -19.5245 10.9573 -0.89501
          7 F 151.7 41.5 80 J  35000             . -24.6074  5.1889 -0.72581
          8 F 152.0 35.0 77 J  60000 DoCoMo   2000 -30.6805  2.3345  1.78605
          9 F 153.0 41.0  . J 125000 No          .    .       .       .     
         10 F 153.0 46.5 87 G  10000             . -17.2531  9.5538  0.87170
      
      
                                    SAS システム                             9
                                             22:41 Wednesday, October 16, 2002
              プロット : PRIN2*PRIN1.  凡例: A = 1 OBS, B = 2 OBS, ...
             (NOTE: 162 オブザベーションが欠損値です.)
      PRIN2 |                          |
         20 +                          |
            |              A         A |  A             A          A
            |           B  A BBABA  AA | A BA    A     A
          0 +--------A-------ABACBABB--D-BFABABA--AAA-------A-----------------
            |             A   A    A  AAAABAAB   B
            |                          A A     A
        -20 +                A         |
            |                          |
            |                          |
        -40 +                          |
            ---+-----------+-----------+-----------+-----------+-----------+--
              -40         -20          0          20          40          60
                                           PRIN1
      
                                    SAS システム                            10
                                             22:41 Wednesday, October 16, 2002
              プロット : PRIN3*PRIN2.  凡例: A = 1 OBS, B = 2 OBS, ...
             (NOTE: 162 オブザベーションが欠損値です.)
      PRIN3 |                                      |
         10 +                                      |
            |                       A  A  A        |  A        A
            |                     A     A AAA  CCBDBBAA  BDA       A
          0 +-----------------------A--A-A--A--A-ABAB-B--CB-A-A-A-------------
            |                           A A    AA BB CA  A A A
            |                                A  A  | A          A  A
        -10 +                                 A    |    A
            |            A                         |       A
            |                                      |
        -20 +                                      |
            ---+-----------+-----------+-----------+-----------+-----------+--
              -30         -20         -10          0          10          20
                                           PRIN2
      
                                    SAS システム                            11
                                             22:41 Wednesday, October 16, 2002
              プロット : PRIN3*PRIN1.  凡例: A = 1 OBS, B = 2 OBS, ...
             (NOTE: 162 オブザベーションが欠損値です.)
      PRIN3 |                          |
         10 +                          |
            |                          A   B     A      A
            |        A     A  BACB BA  B DEAAB   BA
          0 +-----------A--A-BBAAAA-A--CA-CAA--A------------------------------
            |           A    A  A  A A | AA BAB    AA       A
            |                       AAA|       A                   A
        -10 +             A   A        |
            |                A         |               A
            |                          |
        -20 +                          |
            ---+-----------+-----------+-----------+-----------+-----------+--
              -40         -20          0          20          40          60
                                           PRIN1
      
      

    4. 解釈方法
      • 寄与率 : 2軸まで取れば十分のようだ(92.8%)。
      • 第1軸 : 全体的な体格の因子。特に体重が効いている。
      • 第2軸 : 太さの因子(?)。胸囲が正で身長が負。

      • 第3軸 : 華奢さの因子(?)。無視しても良い軸だが。(7.2%)。

  4. 相関行列を使う理由

    1. 相関行列を用いて体格の総合指標を求めてみよう : プログラム : les1803.sas

       /* Lesson 18-3 */
       /*    File Name = les1803.sas   10/17/02   */
      
      data gakusei;
        infile 'all02.prn' firstobs=2;
        input sex $ height weight chest 
              jitaku $ kodukai carrier $ tsuuwa;
      
      proc print data=gakusei(obs=10);
      
      run;                                          :
      proc princomp data=gakusei out=outprin;       : 相関係数を使って
        var height weight chest;                    :
      run;                                          :
      proc print data=outprin(obs=15);
      run;
      proc plot data=outprin;
        plot prin2*prin1/vref=0 href=0;
        plot prin3*prin2/vref=0 href=0;
        plot prin3*prin1/vref=0 href=0;
      run;
      
      

    2. 出力結果 : les1803.lst
      • 各変量の平均、標準偏差、相関行列
      • 固有値、比率(寄与率)、累積寄与率
      • 固有ベクトル
      • 主成分得点
      • 第1軸〜第3軸の散布図

      
                                    SAS システム                             3
                                             22:41 Wednesday, October 16, 2002
                            Principal Component Analysis
            81 Observations
             3 Variables
                                 Simple Statistics
      
                             HEIGHT            WEIGHT             CHEST
      
             Mean       167.8765432       59.47654321       86.93827160
             StD          8.6341078       11.23610555        7.78515523
      
                                    SAS システム                             4
                                             22:41 Wednesday, October 16, 2002
                            Principal Component Analysis
      
                                 Correlation Matrix
      
                                 HEIGHT      WEIGHT       CHEST
      
                     HEIGHT      1.0000      0.6952      0.3804
                     WEIGHT      0.6952      1.0000      0.6728
                     CHEST       0.3804      0.6728      1.0000
      
                                    SAS システム                             5
                                             22:41 Wednesday, October 16, 2002
                            Principal Component Analysis
      
                       Eigenvalues of the Correlation Matrix
      
                  Eigenvalue      Difference      Proportion      Cumulative
      
       PRIN1         2.17609         1.55619        0.725362         0.72536
       PRIN2         0.61989         0.41587        0.206631         0.93199
       PRIN3         0.20402          .             0.068007         1.00000
      
                                    SAS システム                             6
                                             22:41 Wednesday, October 16, 2002
                            Principal Component Analysis
      
                                    Eigenvectors
      
                                 PRIN1         PRIN2         PRIN3
      
                  HEIGHT      0.550647      -.690050      0.469701
                  WEIGHT      0.635259      -.018608      -.772075
                  CHEST       0.541511      0.723522      0.428114
      
      

    3. 解釈方法
      • 寄与率 : 2軸まで取れば十分のようだ(93.2%)。
      • 第1軸 : 全体的な体格の因子。
      • 第2軸 : 太さの因子。
      • 分散共分散行列を使ったときよりも 第1軸の固有ベクトル同士が近い値になった。ただ、軸の解釈に違いはない。 その理由はこの例では 3変量のスケールや分散に それほどの違いがないためと想像される。
      • 分散共分散行列と相関行列を使ったときの違いを見てみたければ、 height のみを mm 単位で測定したと考えて、 100倍したものをデータとして両者の出力を比較してみよ。
        プログラム : les1804.sas 、出力結果 : les1804.lst

  5. 主成分の数の決定基準 : 配布資料 80ページ
    明確に決まっているわけではないが、以下のような基準が一般的に 用いられている。また、結果の解釈の都合上、多少増減させることもある。

  6. いろいろなデータを主成分分析に適用して、解釈してみよう
    [例1] 小遣いまでの 4変量のデータでは?
    [例2] 自分の収集したデータでは?

    [注意] データによっては解釈が困難なことも有り得る。

    また、自分の思い付かない結果を含んでいることもある。

    [参考] 「J:\コンピュータによる統計処理1(林 篤裕)\」に以下のデータを置いておく。

    1. seiseki.dat
      中学2年生の成績データ。23名x5科目。国語、社会、数学、理科、英語。
      配布資料に掲載され、例題に使われていたデータ。

      次回の講義中に使う予定のデータも 2つ置いておくので、 次回までに各自の SAS ディレクトリ(stat システム内)に転送しておくこと。

    2. food.dat
      100 種類の食品の嗜好度データ。100食品x10グループ。
    3. syumi.dat
      趣味に関するアンケート調査データ。30種類x6グループ。

  7. 次回は、... : 11月14日 14:45
    • 10月24日は体育祭でお休み
    • 10月31日は出張で不登校日 : 主成分分析の演習
    • 11月 7日は出張で不登校日 : ??? メールで指示します。
    • 因子分析
    • データを転送しておくこと
    • ...
[DIR]講義のホームページへ戻ります