/* Lesson 12-1 */
/* File Name = les1201.sas 07/08/04 */
data gakusei;
infile 'all04a.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; :
SAS システム 2 23:20 Thursday, July 1, 2004 プロット : SHINTYOU*TAIJYUU. 凡例: A = 1 OBS, B = 2 OBS, ... (NOTE: 42 オブザベーションが欠損値です.) SHINTYOU | 200 + | | B A 180 + A ADCDDDBEA B B A A | AAEDKHTMGGCEDCB BA | AEAGIFEDCBBEAA AA A A 160 + ADCEBHDDAABB | A EB DCDA A A | A AAA 140 + ---+-----------+-----------+-----------+-----------+-- 20 40 60 80 100 TAIJYUU SAS システム 3 23:20 Thursday, July 1, 2004 Principal Component Analysis 254 Observations 2 Variables Simple Statistics SHINTYOU TAIJYUU Mean 168.6755906 58.73031496 StD 8.0222834 9.22268568 SAS システム 4 23:20 Thursday, July 1, 2004 Principal Component Analysis Covariance Matrix SHINTYOU TAIJYUU SHINTYOU 64.35703028 52.38386543 TAIJYUU 52.38386543 85.05793113 Total Variance = 149.41496141 Eigenvalues of the Covariance Matrix Eigenvalue Difference Proportion Cumulative PRIN1 128.104 106.793 0.857371 0.85737 PRIN2 21.311 . 0.142629 1.00000 SAS システム 5 23:20 Thursday, July 1, 2004 Principal Component Analysis Eigenvectors PRIN1 PRIN2 SHINTYOU 0.634885 0.772606 TAIJYUU 0.772606 -.634885 SAS システム 6 23:20 Thursday, July 1, 2004 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 . -31.0477 -5.13053 2 F 148.0 42.0 . J 50000 . -26.0526 -5.35226 3 F 148.0 43.0 80 J 50000 DoCoMo 4000 -25.2800 -5.98714 4 F 148.9 . . J 60000 . . . 5 F 149.0 45.0 . G 60000 . -23.0999 -6.48431 6 F 150.0 46.0 86 40000 . -21.6924 -6.34659 7 F 151.0 50.0 . G 60000 J-PHONE . -17.9671 -8.11352 8 F 151.7 41.5 80 J 35000 . -24.0898 -2.17617 SAS システム 8 23:20 Thursday, July 1, 2004 プロット : PRIN2*PRIN1. 凡例: A = 1 OBS, B = 2 OBS, ... (NOTE: 42 オブザベーションが欠損値です.) PRIN2 | | 10 + A A BA | AA BB BABBAAACA B | A BC ACAGCCFFCGGFC CD A 0 +-------------BBA-AACBAI-BDBFEEDFCACCBAE--A-----A--------- | AA CABCB ABCA BB DDBADB A A | A AAAA AAA A A ABBAAC A BA AABA -10 + A A | AB A | | | | A -20 + | A A ---+------------+------------+------------+------------+-- -40 -20 0 20 40 PRIN1 SAS システム 9 23:20 Thursday, July 1, 2004 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 システム 43 23:20 Thursday, July 1, 2004 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 273 M 182.0 64.0 . G 0 . 12.5309 6.9489 274 M 165.0 78.0 . G 0 2098 12.5543 -15.0738 275 M 170.0 74.0 90 J 0 . 12.6383 -8.6713 276 M 178.0 68.0 . J 100000 DoCoMo 4000 13.0817 1.3189 277 M 175.0 74.0 . J 0 . 15.8127 -4.8082 278 M 180.0 70.0 94 G 70000 au 5000 15.8967 1.5944 279 M 180.0 70.0 . J 40000 au 4000 15.8967 1.5944 280 M 180.0 70.0 . . . 15.8967 1.5944 281 M 180.0 70.0 . J 40000 DoCoMo 6500 15.8967 1.5944 282 M 178.7 71.2 95 0 . 15.9985 -0.1719 283 M 173.5 76.5 . G 100000 . 16.7919 -7.5543 284 M 184.0 68.0 85 30000 . 16.8911 5.9545 285 M 182.0 70.0 90 G 100000 . 17.1665 3.1396 286 M 185.0 68.0 93 J 0 . 17.5259 6.7272 287 M 175.0 77.0 95 G 130000 . 18.1305 -6.7129 288 M 179.1 74.2 . 0 au 4000 18.5703 -1.7675 289 M 176.5 78.0 96 J 10000 . 19.8555 -6.1889 290 M 177.0 78.0 . J 40000 . 20.1729 -5.8026 291 M 181.5 74.5 . G 120000 au 3000 20.3258 -0.1037 292 M 178.0 78.0 110 G 50000 . 20.8078 -5.0299 293 M 169.3 88.5 94 J 0 . 23.3967 -18.4179 294 M 186.0 82.0 . J 0 . 28.9773 -1.3886 295 M 182.0 90.0 100 J 40000 . 32.6186 -9.5581 296 M 178.0 100.0 112 G 60000 . 37.8051 -18.9974
/* Lesson 12-2 */ /* File Name = les1202.sas 07/08/04 */ data gakusei; infile 'all04a.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; :
SAS システム 3
23:20 Thursday, July 1, 2004
Principal Component Analysis
93 Observations
3 Variables
Simple Statistics
SHINTYOU TAIJYUU KYOUI
Mean 167.7602151 59.19569892 86.72043011
StD 8.6631170 10.96744108 7.89794358
SAS システム 4
23:20 Thursday, July 1, 2004
Principal Component Analysis
Covariance Matrix
SHINTYOU TAIJYUU KYOUI
SHINTYOU 75.0495956 67.9609140 27.0767999
TAIJYUU 67.9609140 120.2847639 58.5074801
KYOUI 27.0767999 58.5074801 62.3775129
SAS システム 5
23:20 Thursday, July 1, 2004
Principal Component Analysis
Total Variance = 257.71187237
Eigenvalues of the Covariance Matrix
Eigenvalue Difference Proportion Cumulative
PRIN1 198.838 157.733 0.771550 0.77155
PRIN2 41.104 23.334 0.159497 0.93105
PRIN3 17.770 . 0.068953 1.00000
SAS システム 6
23:20 Thursday, July 1, 2004
Principal Component Analysis
Eigenvectors
PRIN1 PRIN2 PRIN3
SHINTYOU 0.505436 -.687310 0.521669
TAIJYUU 0.752185 0.054727 -.656675
KYOUI 0.422790 0.724299 0.544646
SAS システム 7
23:20 Thursday, July 1, 2004
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 148.0 42.0 . J 50000 . . . .
3 F 148.0 43.0 80 J 50000 DoCoMo 4000 -25.0110 7.8275 -3.33323
4 F 148.9 . . J 60000 . . . .
5 F 149.0 45.0 . G 60000 . . . .
6 F 150.0 46.0 86 40000 . -19.2069 10.9628 -0.99204
7 F 151.0 50.0 . G 60000 J-PHONE . . . .
8 F 151.7 41.5 80 J 35000 . -24.2692 5.2023 -0.41804
9 F 152.0 35.0 77 J 60000 DoCoMo 2000 -30.2751 2.4675 2.37292
10 F 152.0 43.0 . J 20000 au 3500 . . .
11 F 153.0 41.0 . J 125000 No . . . .
12 F 153.0 42.0 . G 0 Vodafone 1000 . . .
13 F 153.0 46.5 87 G 10000 . -16.8917 9.6525 0.78927
14 F 153.0 50.0 . G 70000 DoCoMo 10000 . . .
15 F 153.0 55.0 78 J 30000 . -14.3032 3.5990 -9.69428
SAS システム 9
23:20 Thursday, July 1, 2004
プロット : PRIN2*PRIN1. 凡例: A = 1 OBS, B = 2 OBS, ...
(NOTE: 203 オブザベーションが欠損値です.)
PRIN2 | |
20 + |
| A A | A A A A
| B A BCABA AA | A AB A A
0 +--------A---A---BABCCBAD--D-BF-ACBB-AAAA--------A----------------
| A A A BAAB BAC AA
| A |A A A
-20 + A |
| |
| |
-40 + |
---+-----------+-----------+-----------+-----------+-----------+--
-40 -20 0 20 40 60
PRIN1
SAS システム 10
23:20 Thursday, July 1, 2004
プロット : PRIN3*PRIN2. 凡例: A = 1 OBS, B = 2 OBS, ...
(NOTE: 203 オブザベーションが欠損値です.)
PRIN3 | |
10 + |
| A A AB A| A A A
| A A A AA AEAE|C AA ACC A
0 +--------------------------A-A--B--A--CDB-BB-CAAA--AA-------------
| AA AA CC C AAA A
| A B A | B A A
-10 + | A
| A | A
| |
-20 + |
---+-----------+-----------+-----------+-----------+-----------+--
-30 -20 -10 0 10 20
PRIN2
SAS システム 11
23:20 Thursday, July 1, 2004
プロット : PRIN3*PRIN1. 凡例: A = 1 OBS, B = 2 OBS, ...
(NOTE: 203 オブザベーションが欠損値です.)
PRIN3 | |
10 + |
| A AA A C A A
| A A AACAA C A CE BAAA CA
0 +-----------A--A-CBAACAAA--CA-DAAA--------------------------------
| AA AA A A A | AA ABBA AA
| A A AA A A A A
-10 + A |
| A | A
| |
-20 + |
---+-----------+-----------+-----------+-----------+-----------+--
-40 -20 0 20 40 60
PRIN1
/* Lesson 12-3 */
/* File Name = les1203.sas 07/08/04 */
data gakusei;
infile 'all04a.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;
SAS システム 3
23:20 Thursday, July 1, 2004
Principal Component Analysis
93 Observations
3 Variables
Simple Statistics
SHINTYOU TAIJYUU KYOUI
Mean 167.7602151 59.19569892 86.72043011
StD 8.6631170 10.96744108 7.89794358
SAS システム 4
23:20 Thursday, July 1, 2004
Principal Component Analysis
Correlation Matrix
SHINTYOU TAIJYUU KYOUI
SHINTYOU 1.0000 0.7153 0.3957
TAIJYUU 0.7153 1.0000 0.6754
KYOUI 0.3957 0.6754 1.0000
SAS システム 5
23:20 Thursday, July 1, 2004
Principal Component Analysis
Eigenvalues of the Correlation Matrix
Eigenvalue Difference Proportion Cumulative
PRIN1 2.20118 1.59596 0.733725 0.73373
PRIN2 0.60522 0.41161 0.201739 0.93546
PRIN3 0.19361 . 0.064535 1.00000
SAS システム 6
23:20 Thursday, July 1, 2004
Principal Component Analysis
Eigenvectors
PRIN1 PRIN2 PRIN3
SHINTYOU 0.554911 -.676206 0.484582
TAIJYUU 0.633593 -.033949 -.772921
KYOUI 0.539105 0.735930 0.409601
[注意] データによっては解釈が困難なことも有り得る。
[参考] 「J:\コンピュータによる統計解析02(林 篤裕)\」に以下のデータを置いておく。
data seito04; infile 'seito.prn'; input id $ sex $ kesseki $ koku $ suu1 $ suu2 $ tireki $ koumin $ rika $; if sex^='M' then delete; /* male only */ if kesseki^='0' then delete; /* syusseki-sya only */ if tireki="世界史-0" then tireki="世界史"; if tireki="世界史-2" then tireki="世界史"; if tireki="日本史-2" then tireki="日本史"; if tireki="日本史-3" then tireki="日本史"; ...
[例3] 複数の処理をさせたい場合 : do 〜 end で囲む
if tireki="世界史-0" then do; tireki="世界史"; koumin=.; end; ...
[比較演算子]
[論理演算子]
data math; infile 'foomath.dat' lrecl=230;
data math; infile 'foomath.dat' lrecl=230 truncover;
input kamoku $ 2 kesseki $ 3 k_code $ 10-11 t_score 12-14 s_scor01 103-104 s_scor02 105-106 s_scor03 107-108 s_scor04 109-110 ;
data math; infile 'foo.dat' firstobs=4;
data rei01; do i=1 to 200; x=rannor(12345); output; end; run;
/* Lesson 12-5 */ /* File Name = les1205.sas 07/08/04 */ 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;
/* Lesson 12-6 */ /* File Name = les1206.sas 07/08/04 */ 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; :