主成分分析

統計処理 01 クラス : 第15回目(10/26/00)

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

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

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

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

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

    3. 出力結果 : les1501.lst
      • 身長と体重の散布図
      • 各変量の平均、標準偏差、分散共分散行列
      • 固有値、比率(寄与率)、累積寄与率 : 解釈に使う
      • 固有ベクトル(係数a1とa2) : 解釈に使う
      • 主成分得点 : 各個人の得点(z)、2つある
      • 第1軸と第2軸の主成分得点の散布図
      
                                    SAS システム                             2
                                             18:59 Wednesday, October 18, 2000
      
             プロット : HEIGHT*WEIGHT.  凡例: A = 1 OBS, B = 2 OBS, ...
              (NOTE: 29 オブザベーションが欠損値です.)
      HEIGHT |
         200 +
             |
             |                                       A             A
         180 +                          A  A CA ABD AA BA      A
             |                       AB  DDE MDHDAEAAB BBA B  BA
             |                   C  ABBCACBAAB BAABA  A                   A
         160 +              A     BABCAAB    A B
             |                 A  A           A
             |         A   A
         140 +
             --+---------+---------+---------+---------+---------+---------+--
              30        40        50        60        70        80        90
                                           WEIGHT
      
                                    SAS システム                             3
                                             18:59 Wednesday, October 18, 2000
      
                            Principal Component Analysis
      
           137 Observations
             2 Variables
                                 Simple Statistics
      
                                      HEIGHT            WEIGHT
      
                      Mean       170.3554745       60.38467153
                      StD          6.8029181        7.78862189
      
                                    SAS システム                             4
                                             18:59 Wednesday, October 18, 2000
      
                            Principal Component Analysis
      
                                 Covariance Matrix
      
                                       HEIGHT            WEIGHT
      
                     HEIGHT       46.27969407       32.75093012
                     WEIGHT       32.75093012       60.66263096
      
                           Total Variance = 106.94232503
      
                        Eigenvalues of the Covariance Matrix
      
                  Eigenvalue      Difference      Proportion      Cumulative
      
       PRIN1         87.0024         67.0624        0.813545         0.81354
       PRIN2         19.9400           .            0.186455         1.00000
      
                                    SAS システム                             5
                                             18:59 Wednesday, October 18, 2000
      
                            Principal Component Analysis
      
                                    Eigenvectors
      
                                        PRIN1         PRIN2
      
                         HEIGHT      0.626709      0.779253
                         WEIGHT      0.779253      -.626709
      
                                    SAS システム                             6
                                             18:59 Wednesday, October 18, 2000
      
         OBS SEIBETSU HEIGHT WEIGHT CHEST JITAKU KODUKAI   PRIN1     PRIN2
      
           1    F      145.0   38      .    J     10000  -33.3338  -5.7297
           2    F      148.0   42      .    J     50000  -28.3367  -5.8987
           3    F      148.9    .      .    J     60000     .        .    
           4    F      154.0   46      .              .  -21.4594  -3.7300
           5    F      155.0    .      .    J     20000     .        .    
           6    F      156.0   49     85    J     25000  -17.8683  -4.0517
           7    M      156.0   61     90    J         0   -8.5172 -11.5722
           8    F      156.0    .      .    J     30000     .        .    
           9    F      156.0    .      .    J     50000     .        .    
          10    F      156.0    .      .    G         .     .        .    
          11    F      156.5    .      .    J     20000     .        .    
          12    F      157.0   43      .    J     20000  -21.9171   0.4878
          13    F      158.0   49     85    J         0  -16.6148  -2.4932
          14    F      159.0   49     88    J     30000  -15.9881  -1.7139
          15    F      159.0   52      .    J     50000  -13.6504  -3.5940
      
                                    SAS システム                             7
                                             18:59 Wednesday, October 18, 2000
      
              プロット : PRIN2*PRIN1.  凡例: A = 1 OBS, B = 2 OBS, ...
             (NOTE: 29 オブザベーションが欠損値です.)
      PRIN2 |                                    |
         10 +                                    | A   B
            |                                AA  A AAA AAAA    A
            |                        AB   DAABBDC|CECAA AAC   A
          0 +----------------A------A-CB--ABABAC-EECB-ABA-A--B-----------A----
            |                 A  AAA A D      AA B CCA  AAA  A
            |      A   A                    AAAA AA   B AAA   AA AA
        -10 +                            A       |        A
            |                                    |
            |                                    |
        -20 +                                    |                  A
            -+--------+--------+--------+--------+--------+--------+--------+-
            -40      -30      -20      -10       0       10       20       30
                                           PRIN1
      
                                    SAS システム                             8
                                             18:59 Wednesday, October 18, 2000
      
        OBS  SEIBETSU  HEIGHT  WEIGHT  CHEST  JITAKU  KODUKAI  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    .      .  
      <略>
      
                                    SAS システム                            17
                                             18:59 Wednesday, October 18, 2000
      
      OBS  SEIBETSU  HEIGHT  WEIGHT  CHEST  JITAKU  KODUKAI   PRIN1     PRIN2
      
      136     M       175.0    65       .     G       80000  6.50728   0.72679
      137     M       180.3    61       .                 .  6.71182   7.36367
      138     M       182.0    60      87     G      100000  6.99798   9.31511
      139     M       173.0    68       .     J       30000  7.59162  -2.71184
      140     M       177.0    65       .     G       60000  7.76070   2.28530
      141     M       171.0    70      89     J       60000  7.89671  -5.52377
      142     M       179.9    63       .     J       30000  8.01965   5.79855
      143     M       175.0    67       .     J       45000  8.06578  -0.52663
      144     M       172.0    70      90     J       30000  8.52341  -4.74451
      145     M       171.0    71       .     G      160000  8.67596  -6.15048
      146     M       180.0    64      90     J       35000  8.86157   5.24977
      147     M       179.0    65       .     J           0  9.01411   3.84380
      148     M       180.0    65      88     J       30000  9.64082   4.62306
      149     M       180.0    65       .     G      100000  9.64082   4.62306
      150     M       173.0    71     100     G           0  9.92938  -4.59197
      
                                    SAS システム                            18
                                             18:59 Wednesday, October 18, 2000
      
      OBS  SEIBETSU  HEIGHT  WEIGHT  CHEST  JITAKU  KODUKAI   PRIN1      PRIN2
      
      151     M       178.0   67.0      .     J           0   9.9459    1.8111
      152     M       172.0   72.0     89     G      150000  10.0819   -5.9979
      153     M       177.0   68.0      .     G       80000  10.0985    0.4052
      154     M       182.0   64.0      .     G           0  10.1150    6.8083
      155     M       170.0   74.0     90     J           0  10.3870   -8.8099
      156     M       175.0   74.0      .     J           0  13.5206   -4.9136
      157     M       180.0   70.0      .                 .  13.5371    1.4895
      158     M       178.7   71.2     95                 0  13.6575   -0.2756
      159     M       173.5   76.5      .     G      100000  14.5286   -7.6492
      160     M       182.0   70.0     90     G      100000  14.7905    3.0480
      161     M       185.0   68.0     93     J           0  15.1121    6.6392
      162     M       175.0   77.0     95     G      130000  15.8583   -6.7937
      163     M       176.5   78.0     96     J       10000  17.5776   -6.2515
      164     M       178.0   78.0    110     G       50000  18.5177   -5.0827
      165     M       169.3   88.5     94     J           0  21.2475  -18.4426
      
      166     M       186.0   82.0     .      J        0     26.6484  -1.35548
      

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

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

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

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

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

      
                                    SAS システム                             3
                                             18:59 Wednesday, October 18, 2000
      
                            Principal Component Analysis
      
            52 Observations
             3 Variables
                                 Simple Statistics
      
                             HEIGHT            WEIGHT             CHEST
      
             Mean       170.5442308       62.13653846       88.90384615
             StD          6.7399428        8.65128414        5.95492749
      
                                    SAS システム                             4
                                             18:59 Wednesday, October 18, 2000
      
                            Principal Component Analysis
      
                                 Covariance Matrix
      
                              HEIGHT            WEIGHT             CHEST
      
            HEIGHT       45.42682881       29.64403846        6.78865008
            WEIGHT       29.64403846       74.84471719       30.72122926
            CHEST         6.78865008       30.72122926       35.46116139
      
                                    SAS システム                             5
                                             18:59 Wednesday, October 18, 2000
      
                            Principal Component Analysis
      
                           Total Variance = 155.73270739
      
                        Eigenvalues of the Covariance Matrix
      
                  Eigenvalue      Difference      Proportion      Cumulative
      
       PRIN1         105.975         71.3105        0.680493         0.68049
       PRIN2          34.664         19.5711        0.222589         0.90308
       PRIN3          15.093           .            0.096918         1.00000
      
                                    SAS システム                             6
                                             18:59 Wednesday, October 18, 2000
      
                            Principal Component Analysis
      
                                    Eigenvectors
      
                                 PRIN1         PRIN2         PRIN3
      
                  HEIGHT      0.439409      0.808279      0.391926
                  WEIGHT      0.807264      -.163943      -.566963
                  CHEST       0.394010      -.565516      0.724533
      
                                    SAS システム                             7
                                             18:59 Wednesday, October 18, 2000
      
             S
             E                             K
             I     H      W        J       O
             B     E      E    C   I       D       P          P          P
             E     I      I    H   T       U       R          R          R
        O    T     G      G    E   A       K       I          I          I
        B    S     H      H    S   K       A       N          N          N
        S    U     T      T    T   U       I       1          2          3
      
         1   F   145.0   38    .   J   10000      .          .         .     
         2   F   148.0   42    .   J   50000      .          .         .     
         3   F   148.9    .    .   J   60000      .          .         .     
         4   F   154.0   46    .           .      .          .         .     
         5   F   155.0    .    .   J   20000      .          .         .     
         6   F   156.0   49   85   J   25000   -18.5337    -7.3945   -1.08079
         7   M   156.0   61   90   J       0    -6.8765   -12.1894   -4.26168
         8   F   156.0    .    .   J   30000      .          .         .     
      
         9   F   156.0    .    .   J   50000      .          .         .     
        10   F   156.0    .    .   G       .      .          .         .     
        11   F   156.5    .    .   J   20000      .          .         .     
        12   F   157.0   43    .   J   20000      .          .         .     
        13   F   158.0   49   85   J       0   -17.6549    -5.7779   -0.29694
        14   F   159.0   49   88   J   30000   -16.0334    -6.6662    2.26858
        15   F   159.0   52    .   J   50000      .          .         .     
      
                                    SAS システム                             9
                                             18:59 Wednesday, October 18, 2000
      
              プロット : PRIN2*PRIN1.  凡例: A = 1 OBS, B = 2 OBS, ...
             (NOTE: 114 オブザベーションが欠損値です.)
         20 +                          |
            |                          |
      PRIN2 |                     A   A|  A
            |             A        A   |      B      AA
            |       B            AA  A B     A
          0 +--------A-A--A------AA--A-BD------AAA-----A-----A----------------
            |     A    A          A  A |   B A     A  A    A
            |    A  A A                |   A                      A A
            |                  A       |A
            |                          |
        -20 +                          |
            ---+-----------+-----------+-----------+-----------+-----------+--
              -20         -10          0          10          20          30
                                           PRIN1
      
                                    SAS システム                            10
                                             18:59 Wednesday, October 18, 2000
      
              プロット : PRIN3*PRIN2.  凡例: A = 1 OBS, B = 2 OBS, ...
             (NOTE: 114 オブザベーションが欠損値です.)
      PRIN3 |                                |
         10 +               A                |
            |                            A   |                A
            |      A          A B B A       A|A B A       A       A    A
          0 +-----------------A--A----AA-AAAAAAB--C-A--A----B------------A----
            |        A                 AA  AB|  A A            A
            |                          A    A|     A        A
        -10 +                                |
            |                A               |
            |                                |
        -20 +                                |
            ---+---------+---------+---------+---------+---------+---------+--
              -15       -10       -5         0         5        10        15
                                           PRIN2
      
                                    SAS システム                            11
                                             18:59 Wednesday, October 18, 2000
      
              プロット : PRIN3*PRIN1.  凡例: A = 1 OBS, B = 2 OBS, ...
             (NOTE: 114 オブザベーションが欠損値です.)
      PRIN3 |                          |
         10 +                          |                            A
            |                          |   A          A
            |       A A          AA  B BA AB  A       AA
          0 +----AA-BA-B--A-------B--AAAC----AA------A-------A----------------
            |                  A  AA   |A    A AAA         A
            |             A      A     A           A
        -10 +                          |
            |                          |                          A
            |                          |
        -20 +                          |
            ---+-----------+-----------+-----------+-----------+-----------+--
              -20         -10          0          10          20          30
                                           PRIN1
      
      

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

      • 第3軸 : 胸囲の因子。無視しても良い軸だが。(9.7%)。

  4. 相関行列を使う理由

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

       /* Lesson 15-3 */
       /*    File Name = les1503.sas   10/26/00   */
      
      data gakusei;
        infile 'all00.prn';
        input seibetsu $ height weight chest jitaku $ kodukai;
      
      proc print data=gakusei(obs=10);
      
      run;                                          :
      proc princomp data=gakusei out=out_prin;      : 相関係数を使って
        var height weight chest;                    :
      run;                                          :
      proc print data=out_prin(obs=15);
      run;
      proc plot data=out_prin;
        plot prin2*prin1/vref=0 href=0;
        plot prin3*prin2/vref=0 href=0;
        plot prin3*prin1/vref=0 href=0;
      run;
      
      

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

      
                                    SAS システム                             3
                                             18:59 Wednesday, October 18, 2000
      
                            Principal Component Analysis
      
            52 Observations
             3 Variables
                                 Simple Statistics
      
                             HEIGHT            WEIGHT             CHEST
      
             Mean       170.5442308       62.13653846       88.90384615
             StD          6.7399428        8.65128414        5.95492749
      
                                    SAS システム                             4
                                             18:59 Wednesday, October 18, 2000
      
                            Principal Component Analysis
      
                                 Correlation Matrix
      
                                 HEIGHT      WEIGHT       CHEST
      
                     HEIGHT      1.0000      0.5084      0.1691
                     WEIGHT      0.5084      1.0000      0.5963
                     CHEST       0.1691      0.5963      1.0000
      
                                    SAS システム                             5
                                             18:59 Wednesday, October 18, 2000
      
                            Principal Component Analysis
      
                       Eigenvalues of the Correlation Matrix
      
                  Eigenvalue      Difference      Proportion      Cumulative
      
       PRIN1         1.87195         1.03875        0.623982         0.62398
       PRIN2         0.83320         0.53835        0.277734         0.90172
       PRIN3         0.29485          .             0.098284         1.00000
      
                                    SAS システム                             6
                                             18:59 Wednesday, October 18, 2000
      
                            Principal Component Analysis
      
                                    Eigenvectors
      
                                 PRIN1         PRIN2         PRIN3
      
                  HEIGHT      0.497025      0.765603      0.408434
                  WEIGHT      0.668310      -.037521      -.742936
                  CHEST       0.553469      -.642218      0.530309
      
                                    SAS システム                             7
                                             18:59 Wednesday, October 18, 2000
      
             S
             E                             K
             I     H      W        J       O
             B     E      E    C   I       D       P          P          P
             E     I      I    H   T       U       R          R          R
        O    T     G      G    E   A       K       I          I          I
        B    S     H      H    S   K       A       N          N          N
        S    U     T      T    T   U       I       1          2          3
      
         1   F   145.0   38    .   J   10000     .          .          .     
         2   F   148.0   42    .   J   50000     .          .          .     
         3   F   148.9    .    .   J   60000     .          .          .     
         4   F   154.0   46    .           .     .          .          .     
         5   F   155.0    .    .   J   20000     .          .          .     
         6   F   156.0   49   85   J   25000   -2.45017   -1.17412   -0.10091
         7   M   156.0   61   90   J       0   -1.05846   -1.76539   -0.68615
         8   F   156.0    .    .   J   30000     .          .          .     
      
         9   F   156.0    .    .   J   50000     .          .          .     
        10   F   156.0    .    .   G       .     .          .          .     
        11   F   156.5    .    .   J   20000     .          .          .     
        12   F   157.0   43    .   J   20000     .          .          .     
        13   F   158.0   49   85   J       0   -2.30268   -0.94693    0.02029
        14   F   159.0   49   88   J   30000   -1.95011   -1.15688    0.34805
        15   F   159.0   52    .   J   50000     .          .          .     
      
                                    SAS システム                             9
                                             18:59 Wednesday, October 18, 2000
      
              プロット : PRIN2*PRIN1.  凡例: A = 1 OBS, B = 2 OBS, ...
                 (NOTE: 114 オブザベーションが欠損値です.)
              2 +                         A A|
                |                        A   |  A
          PRIN2 |                A           |    A    A A
                |                     A      A     A
                |               B        A  B|A  A       A
              0 +---------------A---A-----BAA+D--AAA--------A-------------
                |                 A      A   |  AA A      A
                |             A   A          A   A       A   A
                |            A  A A          |   A
                |                     A      |                       A
             -2 +                            |  A
                ---+------------+------------+------------+------------+--
                  -4           -2            0            2            4
                                           PRIN1
      
                                    SAS システム                            10
                                             18:59 Wednesday, October 18, 2000
      
              プロット : PRIN3*PRIN2.  凡例: A = 1 OBS, B = 2 OBS, ...
             (NOTE: 114 オブザベーションが欠損値です.)
      PRIN3 |                                |
          1 +                 A              |
            |                        A  A    |A       A  A  A   A
            |          A         C AA     AA |CAC        A
          0 +--------------------A--A--A---AB+-A-AA--A--A----------A----------
            |                            A B A    A         A
            |              A              A  AB A          A
         -1 +                              A |      A
            |                                |
            |                                |
         -2 +                        A       |
            ---+---------+---------+---------+---------+---------+---------+--
              -3        -2        -1         0         1         2         3
                                           PRIN2
      
                                    SAS システム                            11
                                             18:59 Wednesday, October 18, 2000
      
              プロット : PRIN3*PRIN1.  凡例: A = 1 OBS, B = 2 OBS, ...
                 (NOTE: 114 オブザベーションが欠損値です.)
          PRIN3 |                            |
              1 +                            |                       A
                |                         B  |  AB A     A
                |               C B A     A AAB AAA      B
              0 +------------AA-A-A---------BAC--A-----A------------------
                |                        C   |    A       A A
                |                A    A    AA|  AA A
             -1 +                     A      |     A
                |                            |
                |                            |
             -2 +                            |               A
                ---+------------+------------+------------+------------+--
                  -4           -2            0            2            4
                                           PRIN1
      
      

    3. 解釈方法
      • 寄与率 : 2軸まで取れば十分のようだ(90.2%)。
      • 第1軸 : 全体的な体格の因子。
      • 第2軸 : 身長の因子。
      • 分散共分散行列を使ったときよりも第1軸の固有ベクトルが近い値になった。 ただ、軸の解釈に違いはない。 その理由はこの例では 3変量のスケールや分散に それほどの違いがないためと思われる。

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

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

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

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

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

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

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

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

  7. 次回は、... : 11月2日 14:45
    • 因子分析
    • データを転送しておくこと
    • ...
[DIR]講義のホームページへ戻ります