いくつか(p個)の変量の値を情報の損失をできるだけ少なくして、
少数変量(m個、m>p)の総合的指標(主成分)で代表させる方法である。
いくつかのテストの成績を総合した総合的成績、
いろいろな症状を総合した総合的な重症度、
種々の財務指標に基づく企業の評価...
を求めたいといった場合に用いられる。
p変量(p次元)の観測値をm個(m次元)の主成分に縮約させるという意味で、
次元を減少させる方法と言うこともでき、
多変量データを要約する一つの有力な方法である。
/* 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; :
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
/* 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; :
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
/* 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;
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
[注意] データによっては解釈が困難なことも有り得る。
[参考] 「J:\コンピュータによる統計処理01(林 篤裕)\」に以下のデータを置いておく。
次回の講義中に使う予定のデータも 2つ置いておくので、 次回までに各自の SAS ディレクトリ(stat システム内)に転送しておくこと。