主成分分析

統計処理 01 クラス : 第18回目(11/01/01)

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

    いくつか(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   11/01/01   */
      
      data gakusei;
        infile 'all01.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=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
                                             16:17 Wednesday, October 31, 2001
      
             プロット : HEIGHT*WEIGHT.  凡例: A = 1 OBS, B = 2 OBS, ...
                   (NOTE: 30 オブザベーションが欠損値です.)
           HEIGHT |
              200 +
                  |
                  |                               B       A
              180 +                       A ACBCDBABA   B      A     A
                  |                    AABAHFNMFFCBCCB BA
                  |                   C FFDDCBBBCAA           A
              160 +                A BBAGCBAABB
                  |               A  CC   A   A
                  |             A A A
              140 +
                  ---+-----------+-----------+-----------+-----------+--
                    20          40          60          80          100
                                          WEIGHT
      
                                    SAS システム                             3
                                             16:17 Wednesday, October 31, 2001
      
                            Principal Component Analysis
      
           175 Observations
             2 Variables
                                 Simple Statistics
      
                                      HEIGHT            WEIGHT
      
                      Mean       169.5337143       59.90685714
                      StD          7.6143358        8.85332971
      
                                    SAS システム                             4
                                             16:17 Wednesday, October 31, 2001
      
                            Principal Component Analysis
      
                                 Covariance Matrix
      
                                       HEIGHT            WEIGHT
      
                     HEIGHT       57.97810969       44.27189392
                     WEIGHT       44.27189392       78.38144696
      
                           Total Variance = 136.35955665
      
                        Eigenvalues of the Covariance Matrix
      
                  Eigenvalue      Difference      Proportion      Cumulative
      
       PRIN1         113.612         90.8642        0.833179         0.83318
       PRIN2          22.748           .            0.166821         1.00000
      
                                    SAS システム                             5
                                             16:17 Wednesday, October 31, 2001
      
                            Principal Component Analysis
      
                                    Eigenvectors
      
                                        PRIN1         PRIN2
      
                         HEIGHT      0.622677      0.782479
                         WEIGHT      0.782479      -.622677
      
                                    SAS システム                             6
                                             16:17 Wednesday, October 31, 2001
      
         OBS SEIBETSU HEIGHT WEIGHT CHEST JITAKU KODUKAI   PRIN1    PRIN2
      
           1    F      145.0  38.0     .    J      10000 -32.4182  -5.5562
           2    F      148.0  42.0     .    J      50000 -27.4203  -5.6995
           3    F      148.9    .      .    J      60000    .        .    
           4    F      149.0  45.0     .    G      60000 -24.4502  -6.7851
           5    F      150.0  46.0    86           40000 -23.0450  -6.6253
           6    F      151.7  41.5    80    J      35000 -25.5076  -2.4930
           7    F      153.0  46.5    87    G      10000 -20.7857  -4.5892
           8    F      153.0  55.0    78    J      30000 -14.1347  -9.8819
           9    F      154.0  46.0     .               . -20.5543  -3.4953
          10    F      155.0  48.0    83    G     180000 -18.3667  -3.9582
          11    F      155.0    .      .    J      20000    .        .    
          12    F      156.0  48.0    70    J      30000 -17.7440  -3.1757
          13    F      156.0  49.0    85    J      25000 -16.9615  -3.7984
          14    M      156.0  61.0    90    J          0  -7.5718 -11.2705
          15    F      156.0    .      .    J      30000    .        .    
      
                                    SAS システム                             7
                                             16:17 Wednesday, October 31, 2001
      
              プロット : PRIN2*PRIN1.  凡例: A = 1 OBS, B = 2 OBS, ...
                 (NOTE: 30 オブザベーションが欠損値です.)
             20 +                            |
                |                            |
          PRIN2 |                            | A
                |                        AA AAABA CBA  B
                |                  B AB ECABFCEFDB CD  A
              0 +--------------A---AA-I--DBDCDCHBABBA-B--------A----------
                |       A  AA  AABAAAAAB  B CB CDB EB A  BA
                |            AA     A A  A B A   A  A  AA        A
                |                       A    |
                |                            |             A
            -20 +                            |                       A
                ---+------------+------------+------------+------------+--
                  -40          -20           0           20           40
                                           PRIN1
      
                                    SAS システム                             8
                                             16:17 Wednesday, October 31, 2001
      
        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    .      .  
          5     F       156.0     .      .      G           .    .      .  
      <略>
      
                                    SAS システム                            20
                                             16:17 Wednesday, October 31, 2001
      
      OBS  SEIBETSU  HEIGHT  WEIGHT  CHEST  JITAKU  KODUKAI   PRIN1     PRIN2
      181     M       179.0   65.0      .     J           0   9.8797   4.23579
      182     M       180.0   65.0     88     J       30000  10.5024   5.01827
      183     M       180.0   65.0      .     G      100000  10.5024   5.01827
      184     M       179.0   66.0      .             30000  10.6622   3.61311
      185     M       178.0   67.0      .     J           0  10.8220   2.20796
      186     M       173.0   71.0    100     G           0  10.8385  -4.19514
      187     M       182.0   64.0      .     G           0  10.9653   7.20591
      188     M       177.0   68.0      .     G       80000  10.9818   0.80280
      189     M       172.0   72.0     89     G      150000  10.9983  -5.60030
      190     M       170.0   74.0     90     J           0  11.3179  -8.41061
      191     M       180.0   70.0      .                 .  14.4148   1.90489
      192     M       175.0   74.0      .     J           0  14.4313  -4.49822
      193     M       178.7   71.2     95                 0  14.5443   0.14045
      194     M       184.0   68.0     85             30000  15.3405   6.28016
      195     M       173.5   76.5      .     G      100000  15.4535  -7.22863
      
                                    SAS システム                            21
                                             16:17 Wednesday, October 31, 2001
      
      OBS  SEIBETSU  HEIGHT  WEIGHT  CHEST  JITAKU  KODUKAI   PRIN1      PRIN2
      196     M       182.0    70.0    90     G      100000  15.6601    3.4698
      197     M       185.0    68.0    93     J           0  15.9632    7.0626
      198     M       175.0    77.0    95     G      130000  16.7788   -6.3662
      199     M       176.5    78.0    96     J       10000  18.4953   -5.8152
      200     M       177.0    78.0     .     J       40000  18.8066   -5.4240
      201     M       178.0    78.0   110     G       50000  19.4293   -4.6415
      202     M       169.3    88.5    94     J           0  22.2280  -17.9872
      203     M       186.0    82.0     .     J           0  27.5406   -0.8724
      204     M       182.0    90.0   100     J       40000  31.3097   -8.9837
      205     M       178.0   100.0   112     G       60000  36.6438  -18.3404
      
      

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

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

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

       /* Lesson 18-2 */
       /*    File Name = les1802.sas   11/01/01   */
      
      data gakusei;
        infile 'all01.prn';
        input seibetsu $ height weight chest jitaku $ kodukai;
      
      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
                                             16:17 Wednesday, October 31, 2001
      
                            Principal Component Analysis
      
            72 Observations
             3 Variables
                                 Simple Statistics
      
                             HEIGHT            WEIGHT             CHEST
      
             Mean       168.6805556       60.95972222       87.55555556
             StD          8.2911057       10.76027723        7.86127770
      
                                    SAS システム                             4
                                             16:17 Wednesday, October 31, 2001
      
                            Principal Component Analysis
      
                                 Covariance Matrix
      
                              HEIGHT            WEIGHT             CHEST
      
            HEIGHT        68.7424335        58.5427269        22.6194053
            WEIGHT        58.5427269       115.7835661        55.6536776
            CHEST         22.6194053        55.6536776        61.7996870
      
                                    SAS システム                             5
                                             16:17 Wednesday, October 31, 2001
      
                            Principal Component Analysis
      
                           Total Variance = 246.32568662
      
                        Eigenvalues of the Covariance Matrix
      
                  Eigenvalue      Difference      Proportion      Cumulative
      
       PRIN1         183.884         141.255        0.746507         0.74651
       PRIN2          42.628          22.815        0.173057         0.91956
       PRIN3          19.814            .           0.080436         1.00000
      
                                    SAS システム                             6
                                             16:17 Wednesday, October 31, 2001
      
                            Principal Component Analysis
      
                                    Eigenvectors
      
                                 PRIN1         PRIN2         PRIN3
      
                  HEIGHT      0.474436      -.725195      0.499003
                  WEIGHT      0.764499      0.058410      -.641974
                  CHEST       0.436409      0.686062      0.582122
      
                                    SAS システム                             7
                                             16:17 Wednesday, October 31, 2001
               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.0   .  J   10000     .         .        .     
            2  F  148.0  42.0   .  J   50000     .         .        .     
            3  F  148.9    .    .  J   60000     .         .        .     
            4  F  149.0  45.0   .  G   60000     .         .        .     
            5  F  150.0  46.0  86      40000  -20.9783   11.6060  -0.62342
            6  F  151.7  41.5  80  J   35000  -26.2304    5.9940  -0.37897
            7  F  153.0  46.5  87  G   10000  -18.7363   10.1457   1.13472
            8  F  153.0  55.0  78  J   30000  -16.1657    4.4676  -9.56115
      
                                    SAS システム                             8
                                             16:17 Wednesday, October 31, 2001
      
               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
      
            9  F  154.0  46.0   .          .     .         .        .     
           10  F  155.0  48.0  83  G  180000  -18.3863    6.0387  -1.15872
           11  F  155.0    .    .  J   20000     .         .        .     
           12  F  156.0  48.0  70  J   30000  -23.5852   -3.6053  -8.22731
           13  F  156.0  49.0  85  J   25000  -16.2746    6.7440  -0.13745
           14  M  156.0  61.0  90  J       0   -4.9185   10.8753  -4.93052
           15  F  156.0    .    .  J   30000     .         .        .     
      
                                    SAS システム                             9
                                             16:17 Wednesday, October 31, 2001
      
              プロット : PRIN2*PRIN1.  凡例: A = 1 OBS, B = 2 OBS, ...
             (NOTE: 133 オブザベーションが欠損値です.)
         20 +                          |
            |                          |
      PRIN2 |             A A       A  | A                        A
            |               AA AA   A  |   A           A
            |          A     AAA A    A|A BA    A    A
          0 +----------------AAAB-AA--C+BD-AABA-A-AA-------A------------------
            |            A     B  A  AA|AC A
            |                     A   A|   AB   B
            |                         A|  A   A
            |                          |A
        -20 +              A           |
            ---+-----------+-----------+-----------+-----------+-----------+--
              -40         -20          0          20          40          60
                                           PRIN1
      
                                    SAS システム                            10
                                             16:17 Wednesday, October 31, 2001
      
              プロット : PRIN3*PRIN2.  凡例: A = 1 OBS, B = 2 OBS, ...
             (NOTE: 133 オブザベーションが欠損値です.)
      PRIN3 |                                      |
         10 +                                      |
            |                       A  A  AA      A|  A        A
            |                     A       B    ADCCAD    ABB       A
          0 +-----------------------A--A----A--A---CA-AAAABAA--A-A------------
            |                           AA      A BBBB    AA    A
            |                                A AA  | A            A
        -10 +                                      |    A
            |            A                         |      A
            |                                      |
        -20 +                                      |
            ---+-----------+-----------+-----------+-----------+-----------+--
              -30         -20         -10          0          10          20
                                           PRIN2
      
                                    SAS システム                            11
                                             16:17 Wednesday, October 31, 2001
      
              プロット : PRIN3*PRIN1.  凡例: A = 1 OBS, B = 2 OBS, ...
             (NOTE: 133 オブザベーションが欠損値です.)
      PRIN3 |                          |
         10 +                          |
            |                         B|  B A   A      A
            |                AACB A   B|DE BA   C
          0 +----------A--A-BAAAAA-A--C+-BAA--A-------------------------------
            |                  A  A B  |AA BAB    AA       A
            |            A        A  A |      A                   A
        -10 +                A         |
            |              A           |             A
            |                          |
        -20 +                          |
            ---+-----------+-----------+-----------+-----------+-----------+--
              -40         -20          0          20          40          60
                                           PRIN1
      
      

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

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

  4. 相関行列を使う理由

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

       /* Lesson 18-3 */
       /*    File Name = les1803.sas   11/01/01   */
      
      data gakusei;
        infile 'all01.prn';
        input seibetsu $ height weight chest jitaku $ kodukai;
      
      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
                                             16:17 Wednesday, October 31, 2001
      
                            Principal Component Analysis
      
            72 Observations
             3 Variables
                                 Simple Statistics
      
                             HEIGHT            WEIGHT             CHEST
      
             Mean       168.6805556       60.95972222       87.55555556
             StD          8.2911057       10.76027723        7.86127770
      
                                    SAS システム                             4
                                             16:17 Wednesday, October 31, 2001
      
                            Principal Component Analysis
      
                                 Correlation Matrix
      
                                 HEIGHT      WEIGHT       CHEST
      
                     HEIGHT      1.0000      0.6562      0.3470
                     WEIGHT      0.6562      1.0000      0.6579
                     CHEST       0.3470      0.6579      1.0000
      
                                    SAS システム                             5
                                             16:17 Wednesday, October 31, 2001
      
                            Principal Component Analysis
      
                       Eigenvalues of the Correlation Matrix
      
                  Eigenvalue      Difference      Proportion      Cumulative
      
       PRIN1         2.11881         1.46584        0.706270         0.70627
       PRIN2         0.65296         0.42474        0.217655         0.92392
       PRIN3         0.22823          .             0.076075         1.00000
      
                                    SAS システム                             6
                                             16:17 Wednesday, October 31, 2001
      
                            Principal Component Analysis
      
                                    Eigenvectors
      
                                 PRIN1         PRIN2         PRIN3
      
                  HEIGHT      0.543582      0.708392      0.450221
                  WEIGHT      0.638921      -.001360      -.769271
                  CHEST       0.544334      -.705818      0.453346
      
      

    3. 解釈方法
      • 寄与率 : 2軸まで取れば十分のようだ(92.4%)。
      • 第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. Excel との比較 : おまけ
    • 様々なオプション
    • 欠損値の取り扱い
    • ...

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