options ls = 79 ps = 55 ; data info ; infile 'd:\sasdata\st521\place1.dat' ; input climate housing health crime transp educ arts recreat econ obs ; run ; *proc print ; data names ; infile 'd:\sasdata\st521\plnam1.txt' missover ; length city $ 30 ; input obs city $ 6-12 ; run ; *proc print ; data all ; merge info names ; by obs ; if obs ne 43 ; if obs ne 65 ; if obs ne 179 ; if obs ne 213 ; if obs ne 227 ; if obs ne 234 ; if obs ne 237 ; if obs ne 270 ; if obs ne 314 ; if obs ne 76 ; if obs ne 282 ; if health +educ +arts +climate +housing +crime +transp +recreat +econ ne . ; proc print ; var obs city climate ; run ; proc cancorr data = all out = plscores vprefix = edu wprefix = other ; var health educ arts ; with climate housing crime transp recreat econ ; run ; proc plot data = plscores ; plot edu1*other1 edu2*other2 ; run ; proc iml ; use all ; *read all var {health educ arts} into group1 ; *read all var {climate housing crime transp recreat econ} into group2 ; read all var {health educ arts climate housing crime transp recreat econ} into alldata ; n = nrow(alldata) ; p = ncol(alldata) ; mean = ((j(1,n)*alldata)/n)` ; s = (alldata`*alldata -n*mean*mean`)/(n-1) ; s11 = s[1:3,1:3] ; s22 = s[4:9,4:9] ; s12 = s[1:3,4:9] ; s21 = s12` ; s122221 = s12*inv(s22)*s21 ; s211112 = s21*inv(s11)*s12 ; print s s11 s22 s12 ; call geneig(ueval,uevec,s122221,s11) ; call geneig(veval,vevec,s211112,s22) ; print ueval uevec ; print veval vevec ; quit ; run ;