用橢圓把數據包起來
data a ;input x1-x5;
cards;
0.0130338 -0.0078431 -0.0031889 -0.0447693 0.0052151
0.0084862 0.0166886 -0.0062100 0.0119560 0.0134890
-0.0179153 -0.0086393 0.0100360 0.0000000 -0.0061428
0.0215589 -0.0034858 0.0174353 -0.0285917 -0.0069534
0.0108225 0.0037167 -0.0101345 0.0291900 0.0409751
0.0101713 -0.0121978 -0.0083768 0.0137083 0.0029895
0.0111288 0.0280044 0.0080721 0.0305433 0.0032290
0.0484801 -0.0051480 0.0182495 0.0063348 0.0076752
-0.0344914 -0.0137991 -0.0080468 -0.0299011 -0.0108108
-0.0046596 0.0209882 -0.0060841 -0.0203940 -0.0126677
-0.0018205 -0.0055675 -0.0107587 -0.0089898 -0.0183648
0.0148515 0.0346684 -0.0060004 0.0362855 0.0287032
-0.0092426 -0.0052029 0.0047161 0.0264916 0.0129547
-0.0458668 -0.0278243 -0.0142696 0.0374776 0.0332022
-0.0244432 -0.0182914 0.0059048 -0.0259572 -0.0202333
-0.0183742 -0.0140289 0.0011361 0.0073284 -0.0097182
-0.0297788 -0.0284571 -0.0164555 0.0310847 0.0164377
-0.0225080 -0.0228833 0.0344231 -0.0062006 0.0067584
0.0119617 -0.0067916 0.0185908 -0.0193632 -0.0153440
0.0209811 0.0240509 0.0129586 0.0355419 0.0150962
0.0118669 0.0025328 -0.0036036 0.0021186 0.0028784
0.0140160 0.0172255 0.0003617 0.0150106 0.0141115
-0.0149506 0.0031610 -0.0001808 0.0310352 0.0226415
0.0203322 -0.0148548 -0.0182607 -0.0028283 -0.0161439
0.0112265 -0.0221613 -0.0051565 -0.0247164 0.0105485
-0.0327505 -0.0158879 -0.0037023 0.0143332 0.0164695
-0.0261119 -0.0313390 0.0156076 0.0024575 0.0082154
0.0182675 0.0156863 -0.0219539 -0.0498468 -0.0110910
0.0219907 0.0043436 0.0136551 0.0152655 0.0217441
-0.0331257 -0.0204229 -0.0101495 -0.0186362 -0.0255376
0.0213763 0.0188864 0.0210664 0.0228744 0.0013793
0.0484518 0.0440539 0.0087639 0.0160338 0.0073462
0.0276183 0.0168319 0.0104977 0.0004153 0.0043300
0.0031932 0.0024943 0.0103887 0.0228311 0.0356251
-0.0010610 0.0085953 -0.0023046 -0.0040584 0.0065732
-0.0037175 -0.0060552 0.0035537 0.0114099 0.0211145
0.0023987 -0.0597924 -0.0118626 -0.0251813 -0.0110851
0.0148897 0.0163187 0.0265185 0.0200455 0.0219875
-0.0089075 -0.0068477 0.0047129 0.0129660 0.0196161
-0.0227333 -0.0140276 -0.0069493 0.0024000 -0.0165494
-0.0329997 -0.0313480 -0.0362141 0.0055866 -0.0065208
0.0302098 0.0522778 0.0317662 0.0267857 0.0105865
0.0195493 0.0395079 0.0381773 0.0216425 0.0238843
-0.0045273 0.0204825 0.0174547 0.0253452 0.0059341
-0.0446763 -0.0408118 -0.0163225 -0.0035049 -0.0008137
0.0070008 0.0060451 0.0154081 0.0320252 0.0252443
0.0100111 0.0048532 -0.0016675 -0.0050224 -0.0266084
-0.0112885 0.0057498 0.0100217 -0.0173067 -0.0024480
0.0236703 0.0155500 -0.0162064 0.0001835 -0.0069530
0.0165941 0.0457104 0.0065557 0.0284299 0.0434514
-0.0040139 -0.0118432 -0.0041750 0.0039237 -0.0136175
-0.0069855 0.0098061 0.0003354 -0.0261148 -0.0286114
-0.0154221 -0.0233060 -0.0238055 0.0113097 0.0257467
-0.0252817 0.0088378 -0.0094453 0.0075758 -0.0124498
0.0039470 0.0094174 0.0067614 0.0241676 0.0164701
0.0188149 0.0379692 0.0154985 0.0510400 0.0784157
-0.0055127 -0.0075251 -0.0111921 -0.0044903 0.0198479
-0.0260532 -0.0168492 -0.0080604 0.0432676 0.0587486
0.0128059 -0.0059983 0.0013831 0.0148919 0.0649373
0.0146108 0.0025862 0.0100138 0.0362891 0.0048395
-0.0373858 -0.0126827 -0.0114530 -0.0272533 -0.0396532
-0.0028769 -0.0195950 -0.0070897 -0.0100172 0.0262454
-0.0300058 -0.0497446 -0.0167189 -0.0507510 -0.0583157
-0.0193337 0.0021033 0.0178888 0.0154897 0.0262930
0.0172884 0.0174907 0.0022620 0.0195178 -0.0089331
-0.0163983 0.0077928 -0.0072917 -0.0358752 -0.0636054
0.0275841 0.0125085 -0.0078699 0.0196896 0.0573919
0.0176991 0.0233603 0.0216816 -0.0127639 -0.0401924
0.0034783 -0.0079017 0.0050035 0.0071275 0.0100215
-0.0323512 -0.0146018 -0.0084120 -0.0482225 -0.0628987
0.0465672 0.0410867 0.0349723 0.0152170 0.0056721
-0.0071306 -0.0107828 -0.0086986 0.0303185 0.0517014
-0.0071818 0.0058862 0.0091124 -0.0064473 0.0060779
-0.0031829 0.0017339 -0.0006689 0.0064892 0.0214996
0.0182874 -0.0038944 0.0046854 0.0619937 0.0431379
-0.0142531 -0.0106429 -0.0141572 0.0001557 -0.0450225
-0.0046270 -0.0169045 0.0089542 0.0390661 0.0027938
-0.0072632 0.0075927 0.0000000 -0.0049431 0.0186314
0.0301434 -0.0019947 0.0261219 -0.0307090 -0.0208547
-0.0071023 -0.0430824 -0.0177872 -0.0518714 0.0230447
-0.0128755 -0.0109074 -0.0066456 0.0167076 -0.0126280
0.0028986 0.0030502 -0.0073591 0.0443048 -0.0112340
-0.0265896 -0.0002339 -0.0033698 0.0615551 0.0561091
0.0068290 0.0124006 0.0076078 -0.0419997 -0.0365773
-0.0259510 -0.0240351 -0.0303691 -0.0209345 -0.0068717
0.0136240 0.0182335 0.0086520 0.0568640 0.0387476
0.0209080 0.0165116 0.0089209 -0.0230172 0.0416320
0.0049737 0.0187600 0.0023805 0.0123049 0.0078337
-0.0262009 -0.0044914 -0.0166243 -0.0096353 0.0020622
-0.0041854 0.0060907 -0.0067276 0.0134710 -0.0045908
0.0090063 -0.0022422 0.0000000 -0.0429774 -0.0620229
0.0053555 -0.0083146 0.0069469 -0.0188272 -0.0161072
0.0307783 -0.0160888 0.0031045 -0.0539478 -0.0556609
0.0373241 0.0359281 0.0252751 0.0581879 0.0169708
0.0238029 0.0031125 -0.0068757 0.0122545 0.0281715
0.0256826 0.0525266 0.0406957 -0.0316623 -0.0188482
-0.0060622 0.0086334 0.0058413 0.0445584 0.0305941
0.0217449 0.0229645 0.0291983 0.0084395 0.0319296
0.0033740 -0.0153061 -0.0238245 -0.0016738 -0.0172270
0.0033626 0.0029016 -0.0030507 -0.0012193 -0.0097005
0.0170147 0.0095061 0.0181994 -0.0161758 -0.0075614
0.0103929 -0.0026612 0.0044290 -0.0024818 -0.0164502
-0.0127948 -0.0143678 -0.0187402 -0.0049759 -0.0163732
;
proc princomp n=2 out=aout outstat=sout;/*相關矩陣的特徵值 看累計 當大於70%代表就取那幾個*/
var x1-x5;
proc sort data=aout;
by prin1;
proc corr data=aout;
var x1-x5;
with prin1 prin2;
data b;
pi=3.14159263;
do t=0 to 200;
x=sqrt(2.437*5.99)*cos(2*pi*t/200);
y=sqrt(1.407*5.99)*sin(2*pi*t/200);
output;end;
data c; set aout b;
symbol1 c=red v=star i=none;
symbol2 c=blue v=none i=join;
proc gplot;
plot prin2*prin1 y*x/overlay;
data aout;set aout;
retain i 0;i=i+1;
dist=print1**2/2.437+print2**2/1.407;
if dist<5.99 then delete;
run;
data demog;
input country $ 1-15 x1-x7;
label x1='PER CAPITA GNP, 1957, U.S. DOLLARS';
label x2='INFANT DEATHS PER 1,000 LIVE BIRTHS';
label x3='NUMBER OF INHABITANTS PER PHYSICIAN';
label x4='DENSITY PER SQUARE KILOMETER';
label x5='POPULATION PER 1,000 HECTARES OF AG LAND';
label x6='PERCENT LITERATE OF POPULATION AGED 15+';
label x7='STUDENTS IN HIGHER ED PER 100,000 POP';
cards;
AUSTRALIA 1316 19.5 860 1 21 98.5 856
BELGIUM 1196 35.4 819 301 5257 96.7 536
CANADA 1947 27.3 900 2 257 97.5 645
DENMARK 1057 23.7 830 107 1434 98.5 570
EL SAVADOR 219 76.3 5400 127 1497 39.4 89
FRANCE 943 27.4 1014 83 1288 96.4 667
GUATEMALA 189 91.9 6400 36 1365 29.4 135
HONG KONG 272 41.5 3300 3082 98143 57.5 176
INDIA 73 225.0 5200 138 2279 19.3 220
JAPAN 306 37.7 930 254 7563 98.0 750
LUXEMBERG 1388 31.5 910 123 2286 96.5 36
MEXICO 262 77.7 1700 18 296 50.0 258
NEW ZEALAND 1310 22.8 700 9 170 98.5 839
POLAND 475 74.7 1100 96 1411 95.0 351
ROMANIA 360 75.7 788 78 1248 89.0 226
SWITZERLAND 1428 21.1 765 133 2320 98.5 398
TRINIDAD 423 45.4 2300 168 4383 73.8 61
UNITED STATES 2577 26.4 780 20 399 98.0 1983
WEST GERMANY 927 33.8 798 217 3631 98.5 528
YUGOSLAVIA 265 100.0 1637 73 1215 77.0 524
;
proc princomp data=demog n=7 out=pcdata outstat=sout;
proc print data=sout;
proc corr data=pcdata;
var prin1-prin7;
with x1-x7;
options ps=30;
proc plot data=pcdata;
plot prin2*prin1=country;
run;
data a;input x1 x2 x3;
cards;
3.7 48.5 9.3
5.7 65.1 8.0
3.8 47.2 10.9
3.2 53.2 12.0
3.1 55.5 9.7
4.6 36.1 7.9
2.4 24.8 14.0
7.2 33.1 7.6
6.7 47.4 8.5
5.4 54.1 11.3
3.9 36.9 12.7
4.5 58.8 12.3
3.5 27.8 9.8
4.5 40.2 8.4
1.5 13.5 10.1
8.5 56.4 7.1
4.5 71.6 8.2
6.5 52.8 10.9
4.1 44.1 11.2
5.5 40.9 9.4
;
symbol c=blue v=star i=none;
proc gplot;
plot x3*x1;
data b;
a1=5.101;
b1=1.406;
pi=3.14159263;
fac=0.95;/*縮放橢圓*/
do i=0 to 200;
th=i*(2*pi/200);
z1=sqrt(a1)*cos(th)*sqrt(5.99)*fac;
w1=sqrt(b1)*sin(th)*sqrt(5.99)*fac;
output;end;
data b;set b;
u1=-0.631*z1+0.775*w1;
v1=0.775*z1+0.631*w1;
u1=u1+4.64;
v1=v1+9.964;
data d;input xml yml;
cards;
4.64 9.965
;
data c;set a b d;
symbol1 c=blue v=circle i=none;
symbol2 c=red v=none i=join;
symbol3 c=blue v="X" i=none h=1;
proc gplot;
plot x3*x1 v1*u1 yml*xml /overlay;/*把圖重疊起來*/
data a;set a;drop x2;/*丟掉x2*/
proc iml;
use a;
read all into dat;
x=dat;
n=nrow(dat);
one=j(n,1,1);
xb=one`*x/n;/*取平均*/
print xb;
xbb=one*xb;
xd=x-xbb;
cov=xd`*xd/(n-1);
print cov;
call eigen(m,p,cov);
print m p;
run;