主成分分析

統計解析 02 クラス : 第12回 (07/07/05)

 いくつか(p個)の変量の値を情報の損失をできるだけ少なくして、 少数変量(m個、m<p)の総合的指標(主成分)で代表させる方法として 主成分分析(Principal Component Analysis, PCA)がある。 いくつかのテストの成績を総合した総合的成績、 いろいろな症状を総合した総合的な重症度、 種々の財務指標に基づく企業の評価 等を求めたいといった場合に用いられる。
 p変量(p次元)の観測値をm個(m次元)の主成分に縮約させるという意味で、 次元を減少させる方法ということもでき、 多変量データを要約する一つの有力な方法である。
  1. 2変量の場合の主成分分析 : 理解を助けるため
    1. 定式化 : 配布資料 54ページ〜
      • 重み(係数) : a1、a2
      • 合成変量(線形結合) : z
      • よく代表するように、a1 と a2 を決める。
      • より広がって測定できる軸に沿うと情報量が多い。
           [参考:立体の測定] ノギスノギスの使い方・目盛りの読み方
      • 全測定値の分散を最大化する軸を決定する。

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

       /* Lesson 12-1 */
       /*    File Name = les1201.sas   07/07/05   */
      
      data gakusei;
        infile 'all05a.prn'
          firstobs=2;
        input sex $ shintyou taijyuu kyoui
              jitaku $ kodukai carryer $ tsuuwa;
      
      proc print data=gakusei(obs=10);
      run;
      
      proc plot data=gakusei;                        : 散布図
        plot shintyou*taijyuu;                       : 元の変量のプロット
      run;                                           :
      proc princomp cov data=gakusei out=outprin;    : 主成分分析(分散共分散行列)
        var shintyou taijyuu;                        : 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. 出力結果 : les1201.lst
      • 身長と体重の散布図
      • 各変量の平均、標準偏差、分散共分散行列
      • 固有値、比率(寄与率)、累積寄与率 : 解釈に使う
      • 固有ベクトル(係数a1とa2) : 解釈に使う
      • 主成分得点 : 各個人の得点(z)、2つある
      • 第1軸と第2軸の主成分得点の散布図
                                    SAS システム                             2
                                                 23:15 Wednesday, July 6, 2005
           プロット : SHINTYOU*TAIJYUU.  凡例: A = 1 OBS, B = 2 OBS, ...
                    (NOTE: 46 オブザベーションが欠損値です.)
          SHINTYOU |
               200 +
                   |
                   |                               B       A
               180 +                       A BDCFDDBEA B B      A  A  A
                   |                    BAFDKHTOHHCFECB BA
                   |                  AEAGIIFECBCEAA  AA A     A
               160 +                ADCFDIDDBABB
                   |           A   ECAEDDA A   A
                   |             A BAA
               140 +
                   ---+-----------+-----------+-----------+-----------+--
                     20          40          60          80          100
                                           TAIJYUU
      
                                    SAS システム                             3
                                                 23:15 Wednesday, July 6, 2005
                            Principal Component Analysis
           282 Observations
             2 Variables
                                 Simple Statistics
      
                                    SHINTYOU           TAIJYUU
      
                      Mean       168.4446809       58.56382979
                      StD          8.1382706        9.36408887
      
                                    SAS システム                             4
                                                 23:15 Wednesday, July 6, 2005
                            Principal Component Analysis
      
                                 Covariance Matrix
      
                                      SHINTYOU           TAIJYUU
      
                    SHINTYOU       66.23144847       54.25158628
                    TAIJYUU        54.25158628       87.68616037
      
                           Total Variance = 153.91760884
      
                        Eigenvalues of the Covariance Matrix
      
                  Eigenvalue      Difference      Proportion      Cumulative
      
       PRIN1         132.261         110.604        0.859296         0.85930
       PRIN2          21.657            .           0.140704         1.00000
      
                                    SAS システム                             5
                                                 23:15 Wednesday, July 6, 2005
                            Principal Component Analysis
      
                                    Eigenvectors
      
                                         PRIN1         PRIN2
      
                        SHINTYOU      0.634832      0.772651
                        TAIJYUU       0.772651      -.634832
      
                                    SAS システム                             6
                                                 23:15 Wednesday, July 6, 2005
                 S
                 H      T               K  C
                 I      A       J       O  A           T
                 N      I    K  I       D  R           S       P         P
                 T      J    Y  T       U  R           U       R         R
        O   S    Y      Y    O  A       K  Y           U       I         I
        B   E    O      U    U  K       A  E           W       N         N
        S   X    U      U    I  U       I  R           A       1         2
      
         1  F  145.0  38.0   .  J   10000               .  -30.7721  -5.05998
         2  F  146.7  41.0  85  J   10000  Vodafone  6000  -27.3749  -5.65097
         3  F  148.0  42.0   .  J   50000               .  -25.7770  -5.28135
      <中略>
      
                                    SAS システム                             8
                                                 23:15 Wednesday, July 6, 2005
              プロット : PRIN2*PRIN1.  凡例: A = 1 OBS, B = 2 OBS, ...
                 (NOTE: 46 オブザベーションが欠損値です.)
             20 +                            |
                |                            |
          PRIN2 |                          A |  A
                |                         A BCABABBCCA  AA
                |         A        BBABDADEBFGDBJGC DE  A
              0 +-------------B-DAB-FC-JACEGEEFDKCACFBA-EAA-----A---------
                |        A AAABA CBCDAABCA C C BEEB FD A  AA
                |             AA  B  A A  A B|BA  A  A  AAA       A
                |                        A   |       B
                |                            |       A             A
            -20 +                            |              A         A
                ---+------------+------------+------------+------------+--
                  -40          -20           0           20           40
                                           PRIN1
      
                                    SAS システム                             9
                                                 23:15 Wednesday, July 6, 2005
                      S
                      H     T                K   C
                      I     A       J        O   A            T
                      N     I   K   I        D   R            S     P   P
                      T     J   Y   T        U   R            U     R   R
           O    S     Y     Y   O   A        K   Y            U     I   I
           B    E     O     U   U   K        A   E            W     N   N
           S    X     U     U   I   U        I   R            A     1   2
      
            1   F   148.9   .   .   J    60000                  .   .   .
            2   F   153.0   .   .   G   120000   DoCoMo       200   .   .
            3   F   155.0   .   .   J    20000                  .   .   .
      <中略>
      
                                    SAS システム                            45
                                                 23:15 Wednesday, July 6, 2005
      
                 S
                 H      T                K  C
                 I      A        J       O  A         T
                 N      I    K   I       D  R         S       P         P
                 T      J    Y   T       U  R         U       R         R
        O   S    Y      Y    O   A       K  Y         U       I         I
        B   E    O      U    U   K       A  E         W       N         N
        S   X    U      U    I   U       I  R         A       1         2
      
       289  M  180.0  64.0   90  J   35000              .  11.5359    5.4772
       290  M  180.0  64.0   90  G   60000  au      10000  11.5359    5.4772
       291  M  168.0  74.0    .  G  120000  DDIp    15000  11.6445  -10.1430
       292  M  179.0  65.0    .  J       0              .  11.6738    4.0697
       293  M  173.8  69.6   90  J   30000  DoCoMo  13000  11.9268   -2.8683
       294  M  177.0  67.0    .       4000  DoCoMo   8000  11.9494    1.2547
       295  M  180.0  65.0   88  J   30000              .  12.3086    4.8423
       296  M  180.0  65.0    .  G  100000              .  12.3086    4.8423
       297  M  168.0  75.0    .  G  150000              .  12.4171  -10.7778
       298  M  179.0  66.0    .      30000              .  12.4464    3.4349
       299  M  173.0  71.0  100  G       0              .  12.5007   -4.3752
       300  M  178.0  67.0    .  J       0              .  12.5842    2.0274
       301  M  172.0  72.0   89  G  150000              .  12.6385   -5.7827
       302  M  177.0  68.0    .  G   80000              .  12.7220    0.6199
       303  M  182.0  64.0    .  G       0              .  12.8056    7.0225
       304  M  165.0  78.0    .  G       0           2098  12.8306  -15.0002
       305  M  170.0  74.0   90  J       0              .  12.9141   -8.59765
       306  M  175.0  70.0   95  G   50000           8000  12.9977   -2.19507
       307  M  178.0  68.0    .  J  100000  DoCoMo   4000  13.3569    1.39254
       308  M  175.0  74.0    .  J       0              .  16.0883   -4.73440
       309  M  180.0  70.0   94  G   70000  au       5000  16.1718    1.66818
       310  M  180.0  70.0    .  J   40000  au       4000  16.1718    1.66818
       311  M  180.0  70.0    .          .              .  16.1718    1.66818
       312  M  180.0  70.0    .  J   40000  DoCoMo   6500  16.1718    1.66818
       313  M  178.7  71.2   95          0              .  16.2737   -0.0981
       314  M  173.5  76.5    .  G  100000              .  17.0677   -7.4805
       315  M  184.0  68.0   85      30000              .  17.1659    6.0284
       316  M  182.0  70.0   90  G  100000              .  17.4415    3.2135
       317  M  185.0  68.0   93  J       0              .  17.8007    6.8011
       318  M  175.0  77.0   95  G  130000              .  18.4062   -6.6389
       319  M  179.1  74.2    .          0  au       4000  18.8456   -1.6935
       320  M  176.5  78.0   96  J   10000              .  20.1311   -6.1147
       321  M  177.0  78.0    .  J   40000              .  20.4486   -5.7284
       322  M  181.5  74.5    .  G  120000  au       3000  20.6010   -0.0296
       323  M  178.0  78.0  110  G   50000              .  21.0834   -4.9558
       324  M  169.3  88.5   94  J       0              .  23.6732  -18.3436
       325  M  186.0  82.0    .  J       0              .  29.2526   -1.3139
       326  M  182.0  90.0  100  J   40000              .  32.8945   -9.4831
       327  M  178.0  95.0    .       1000  No          .  34.2184  -15.7479
       328  M  178.0 100.0  112  G   60000              .  38.0817  -18.9221
      

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

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

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

       /* Lesson 12-2 */
       /*    File Name = les1202.sas   07/07/05   */
      
      data gakusei;
        infile 'all05a.prn'
          firstobs=2;
        input sex $ shintyou taijyuu kyoui
              jitaku $ kodukai carryer $ tsuuwa;
      
      proc print data=gakusei(obs=10);
      run;
      
      proc princomp cov data=gakusei out=outprin;    : 主成分分析(分散共分散行列)
        var shintyou taijyuu kyoui;                  : 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. 出力結果 : les1202.lst
      • 各変量の平均、標準偏差、共分散行列
      • 固有値、比率(寄与率)、累積寄与率
      • 固有ベクトル
      • 主成分得点
      • 第1軸〜第3軸の散布図

                                    SAS システム                             3
                                                 23:16 Wednesday, July 6, 2005
                            Principal Component Analysis
           104 Observations
             3 Variables
                                 Simple Statistics
      
                           SHINTYOU           TAIJYUU             KYOUI
      
             Mean       167.2798077       58.69615385       86.49038462
             StD          8.8277737       10.85357015        7.64249132
      
                                    SAS システム                             4
                                                 23:16 Wednesday, July 6, 2005
                            Principal Component Analysis
      
                                 Covariance Matrix
      
                             SHINTYOU           TAIJYUU             KYOUI
      
           SHINTYOU        77.9295883        70.4536109        25.3187360
           TAIJYUU         70.4536109       117.7999851        54.5154966
           KYOUI           25.3187360        54.5154966        58.4076736
      
                                    SAS システム                             5
                                                 23:16 Wednesday, July 6, 2005
                            Principal Component Analysis
      
                           Total Variance = 254.13724701
      
                        Eigenvalues of the Covariance Matrix
      
                  Eigenvalue      Difference      Proportion      Cumulative
      
       PRIN1         196.291         154.890        0.772382         0.77238
       PRIN2          41.401          24.956        0.162909         0.93529
       PRIN3          16.445            .           0.064709         1.00000
      
                                    SAS システム                             6
                                                 23:16 Wednesday, July 6, 2005
                            Principal Component Analysis
      
                                    Eigenvectors
      
                                  PRIN1         PRIN2         PRIN3
      
                 SHINTYOU      0.530874      -.657814      0.534279
                 TAIJYUU       0.750236      0.071616      -.657280
                 KYOUI         0.394105      0.749768      0.531535
      
                                    SAS システム                             7
                                                 23:16 Wednesday, July 6, 2005
                S
                H     T            K C
                I     A     J      O A          T
                N     I   K I      D R          S      P       P        P
                T     J   Y T      U R          U      R       R        R
         O  S   Y     Y   O A      K Y          U      I       I        I
         B  E   O     U   U K      A E          W      N       N        N
         S  X   U     U   I U      I R          A      1       2        3
      
          1 F 145.0 38.0  . J  10000             .    .       .       .     
          2 F 146.7 41.0 85 J  10000 Vodafone 6000 -24.7889 11.1529 -0.15621
          3 F 148.0 42.0  . J  50000             .    .       .       .     
          4 F 148.0 43.0 80 J  50000 DoCoMo   4000 -24.5689  6.6921 -3.43388
          5 F 148.9   .   . J  60000             .    .       .       .     
          6 F 149.0 45.0  . G  60000             .    .       .       .     
          7 F 150.0 46.0 86    40000             . -18.8918 10.0900 -1.14796
          8 F 151.0 50.0  . G  60000 J-PHONE     .    .       .       .     
          9 F 151.7 41.5 80 J  35000             . -23.7300  4.1508 -0.47113
         10 F 152.0 35.0 77 J  60000 DoCoMo   2000 -29.6296  1.2387  2.36687
         11 F 152.0 43.0  . J  20000 au       3500    .       .       .     
         12 F 152.0 44.0  .    45000 DoCoMo   4000    .       .       .     
         13 F 153.0 41.0  . J 125000 No          .    .       .       .     
         14 F 153.0 42.0  . G      0 Vodafone 1000    .       .       .     
         15 F 153.0 46.5 87 G  10000             . -16.5299  8.9021  0.65777
      
                                    SAS システム                             9
                                                 23:16 Wednesday, July 6, 2005
              プロット : PRIN2*PRIN1.  凡例: A = 1 OBS, B = 2 OBS, ...
             (NOTE: 224 オブザベーションが欠損値です.)
      PRIN2 |                          |
         20 +                          |
            |           A   A        A |  A   A          A         A
            |           AA  ABABBB  AC | A AC     A    A
          0 +--------A----A-AABCBCD-CAAACADD-BBBAAB-AA-------A----------------
            |              A A A    B  AAA BBAD   B
            |                     A    |AAA     A
        -20 +                          |
            |                 A        |
            |                          |
        -40 +                          |
            ---+-----------+-----------+-----------+-----------+-----------+--
              -40         -20          0          20          40          60
                                           PRIN1
      
                                    SAS システム                            10
                                                 23:16 Wednesday, July 6, 2005
              プロット : PRIN3*PRIN2.  凡例: A = 1 OBS, B = 2 OBS, ...
             (NOTE: 224 オブザベーションが欠損値です.)
      PRIN3 |                                      |
         10 +                                      |
            |                       A   A   AB    A| A           A A
            |                     A  A   A AA  D EBCD  AABD A       A
          0 +----------------------A---A-A--B--A--EACBCBCBA-A-AAA-------------
            |                     A    A  A   A A CC  CBA AA
            |                           A   AA A   | AA        A     A
        -10 +                                      |  A
            |          A                           |       A
            |                                      |
        -20 +                                      |
            ---+-----------+-----------+-----------+-----------+-----------+--
              -30         -20         -10          0          10          20
                                           PRIN2
      
                                    SAS システム                            11
                                                 23:16 Wednesday, July 6, 2005
              プロット : PRIN3*PRIN1.  凡例: A = 1 OBS, B = 2 OBS, ...
             (NOTE: 224 オブザベーションが欠損値です.)
      PRIN3 |                          |
         10 +                          |
            |                  A       |B   A C   A      A
            |        A      A AAACA BB |ABDDBAA A D
          0 +-----------AA--BCACCAC-AAAABB-CA-A--A----------------------------
            |           A A  AA  AA BA |  B  BBB    AA
            |              A        AA A    A   A            A     A
        -10 +                  A       |
            |                 A        |               A
            |                          |
        -20 +                          |
            ---+-----------+-----------+-----------+-----------+-----------+--
              -40         -20          0          20          40          60
                                           PRIN1
      

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

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

  3. 相関行列を使う理由

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

       /* Lesson 12-3 */
       /*    File Name = les1203.sas   07/07/05   */
      
      data gakusei;
        infile 'all05a.prn'
          firstobs=2;
        input sex $ shintyou taijyuu kyoui
              jitaku $ kodukai carryer $ tsuuwa;
      
      proc print data=gakusei(obs=10);
      
      run;                                          :
      proc princomp data=gakusei out=outprin;       : 相関係数を使って
        var shintyou taijyuu kyoui;                 :
      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. 出力結果 : les1203.lst
      • 各変量の平均、標準偏差、相関行列
      • 固有値、比率(寄与率)、累積寄与率
      • 固有ベクトル
      • 主成分得点
      • 第1軸〜第3軸の散布図

                                    SAS システム                             3
                                                 23:16 Wednesday, July 6, 2005
                            Principal Component Analysis
           104 Observations
             3 Variables
                                 Simple Statistics
      
                           SHINTYOU           TAIJYUU             KYOUI
      
             Mean       167.2798077       58.69615385       86.49038462
             StD          8.8277737       10.85357015        7.64249132
      
                                    SAS システム                             4
                                                 23:16 Wednesday, July 6, 2005
                            Principal Component Analysis
      
                                 Correlation Matrix
      
                               SHINTYOU       TAIJYUU         KYOUI
      
                 SHINTYOU        1.0000        0.7353        0.3753
                 TAIJYUU         0.7353        1.0000        0.6572
                 KYOUI           0.3753        0.6572        1.0000
      
                                    SAS システム                             5
                                                 23:16 Wednesday, July 6, 2005
                            Principal Component Analysis
      
                       Eigenvalues of the Correlation Matrix
      
                  Eigenvalue      Difference      Proportion      Cumulative
      
       PRIN1         2.19083         1.56282        0.730277         0.73028
       PRIN2         0.62802         0.44686        0.209338         0.93962
       PRIN3         0.18115          .             0.060385         1.00000
      
                                    SAS システム                             6
                                                 23:16 Wednesday, July 6, 2005
                            Principal Component Analysis
      
                                    Eigenvectors
      
                                  PRIN1         PRIN2         PRIN3
      
                 SHINTYOU      0.560340      -.648358      0.515414
                 TAIJYUU       0.637705      -.059382      -.767989
                 KYOUI         0.528537      0.759017      0.380187
      

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

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

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

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

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

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

    1. seiseki.dat
      中学2年生の成績データ。23名x5科目。国語、社会、数学、理科、英語。
      配布資料に掲載され、例題に使われていたデータ。
    2. food.dat
      100 種類の食品の嗜好度データ。100食品x10グループ。
    3. syumi.dat
      趣味に関するアンケート調査データ。30種類x6グループ。

  6. 次回は : 07月14日 14:45
    • 因子分析
    • データを転送しておくこと
    • ...

  7. [おまけ1] データの生成 : 乱数で(正規乱数) : 種(seed)の指定。種は任意の数値(普通は整数)。
      data rei01;
       do i=1 to 200;
         x=rannor(12345);
         output;
       end;
      run;
      
    [参考] : 乱数を生成する関数
      rannor : 正規乱数を生威します。
      ranuni : (0,1)の間の一様乱数を生成します。
      ranbin : 二項分布に従う乱数を生成します。
      rancau : コーシー乱数を生成します。
      ranexp : 指数乱数を生成します。
      rangam : ガンマ分布に従う乱数を生成します。
      ranpoi : ポアソン分布に従う乱数を生成します。
      rantbl : 指定した確率重み関数から、乱数を生成します。
      rantri : 三角分布に従う乱数を生成します。

  8. [おまけ2] 乱数で疑似データを 200個生成し、発生順、および昇順に並べて、それぞれをファイルに保存する
    • 91番から 110番(中央あたり)のデータの表示
    • 91番から 110番(中央あたり)のデータについて平均を計算する
    • データのアスキー保存 : フォーマット形式の指定に注意
    • データの並べ替え

    1. プログラム : les1205.sas

       /* Lesson 12-5 */
       /*    File Name = les1205.sas   07/07/05   */
      
      options linesize=72; /* pagesize=20; */      : 出力サイズの指定
      
      data rei01;                                  : データセット名を rei01 とする
       do i=1 to 200;                              : 200回の繰り返し
         x=rannor(12345);                          : 正規乱数を発生させる
         output;                                   : データセットに追加する
       end;                                        : 繰り返しの終端
      run;                                         :
      
      proc print data=rei01(obs=10);               : 先頭 10ケースの表示
      run;                                         :
      
      proc means data=rei01;                       : 全データに対する平均の計算
      run;                                         :
      
      proc print data=rei01(firstobs=91 obs=110);  : 91番から 110番のデータの表示
      run;                                         :
      
      proc means data=rei01(firstobs=91 obs=110);  : 91番から 110番のデータについての平均
      run;                                         :
      
      data _null_;                                 : データセット名は付けない
        set rei01;                                 : 元となるデータセット名
        file "unsorted.dat";                       : 出力ファイル名
        put i 5. x 15.8;                           : 変量 i は小数点以上 5桁で
      run;                                         : 変量 x は小数点以上 15桁、以下 8桁で
      
      proc sort data=rei01;                        : 並べ替え
        by x;                                      : 変量 x について
      run;                                         :
      
      proc print data=rei01(obs=10);
      run;
      
      proc print data=rei01(firstobs=91 obs=110);
      run;
      
      proc means data=rei01(firstobs=91 obs=110);
      run;
      
      data _null_;
        set rei01;
        file "sorted.dat";
        put i 5. x 15.8;
      run;
      
    2. 出力結果 : les1205.lst unsorted.dat sorted.dat
      • 並べる前後での数値列を比較せよ。
      • 乱数の種類を取り替えて計算させてみよ。

  9. [おまけ3] 軸ラベルの値を昇順、降順に並べたい
    • 昇順と降順のヒストグラム : 数値(軸ラベル)
    • 昇順と降順の度数分布表 : 数値(軸ラベル)
    • 頻度順の度数分布表 : 頻度

    1. プログラム : les1206.sas

       /* Lesson 12-6 */
       /*    File Name = les1206.sas   07/07/05   */
      
      options linesize=72; /* pagesize=20; */
      
      data rei02;                           : データセット名を rei02 とする
        do i=1 to 100;                      :
          x=rannor(23456);                  : 上記とは別の種で乱数を発生させる
          x10=int(x*10);                    : 10倍して正数部分だけ利用
          output;                           :
        end;                                :
      run;                                  :
      
      title "Default";                      : 見出し(タイトル)を付ける : 「無指定」
      proc chart data=rei02;                : オプションを指定しない場合のヒストグラム
        hbar x;                             : 変量 x について
      run;                                  :
      
      title "Ascending order";              : 「昇順」
      proc chart data=rei02;                : 
        hbar x / midpoints=-3 to 3 by .5;   : 変量 x について昇順で。0.5 刻み。
      run;                                  :
      
      title "Descending order";             : 「降順」
      proc chart data=rei02;                :
        hbar x / midpoints=3 to -3 by -.5;  : 変量 x について降順で。-0.5 刻み。
      run;                                  :
      
      title "Default";                      : 「無指定」: x10 を昇順に表示
      proc freq data=rei02;                 : オプションを指定しない場合の度数分布表
        tables x10;                         : 変量 x10 について
      run;                                  :
      
      title "Freqency order";               : 「頻度降順」: 頻度の大きいものから
      proc freq data=rei02 order=freq;      :
        tables x10;                         : 変量 x10 についての頻度順に表示
      run;                                  :
      
      proc sort data=rei02;                 : 並べ替え
        by decending x10;                   : x10 について降順に並べる
      run;                                  :
      
      title "Descending order";             : 「数値降順」: x10 を降順に表示
      proc freq data=rei02 order=data;      : データの出現順で表示させるというオプション
        tables x10;                         :
      run;                                  : 
      
    2. 出力結果 : les1206.lst
      • どこをキーとした順で表示されているかを把握せよ。
      • 乱数の種類を取り替えて計算させてみよ。

      • 見出しを付けるには「title」を使う。

  10. 最終レポート(予告)
    半年を通して学んできた SAS の使い方、および統計手法を、 自分が興味を持ったデータに適用してみて興味深い知見を得る体験をしてもらう。

    1. 対象データ :
      • 自分で収集したデータ。
      • 一つである必要はない。複数でも良い。

    2. 作業内容 :
      1. SAS を使って解析し、興味深い知見を引き出そう。
      2. 以下の点に注意しながらレポートを作成しよう。

      3. 利用するデータ解析手法については、特に制限や指定をしないが、 「多変量解析の手法」を使うとより高度なデータ構造が把握できることがある。
      4. 前回のレポートの反省点を踏まえて作成すること。
      5. 興味を持った点や得られた知見に対する考察は人によって個々異なるもので あるので、他人と相談することなく自分の力で解析しレポートを作成すること。

    3. レポート : 以下に挙げるような項目を含めて作成すること。
      • 所属学部名、学籍番号、氏名
      • データ内容の説明
      • どのような点に興味を持ったか
      • 自分の解析目的
      • 何を知りたいためにどのような手法を使ったのか
      • 得られた知見と考察
      • その他、気付いたこと
      • 講義全体を通しての感想 : 今後の参考にしたいので

    4. 提出期限 :
      2005年07月29日(金) 15:00まで

    5. 注意 :
      1. 紙で提出する場合は、事務所の受付終了時刻に注意すること。 提出日は事務室の受領印で判断する。
      2. 電子メールで提出する場合に、添付ファイルは使わないこと。 また、提出日時はメールヘッダーから判断する。 受領確認メールを必ず返すのでこれを受け取って提出完了となる。
      3. レポートを受領した者の学籍番号は、 講義の連絡ページ に掲載するので、確認すること。 ただし、2回とも提出したからと言って単位が認定されるわけではない点には注意されたい。
[DIR]講義のホームページへ戻ります