為區(qū)分過(guò)程名稱的拼寫,故意部分小寫,以便識(shí)別和記憶。
基本SAS程序代碼結(jié)構(gòu):
---------
PROC MODE data=Arndata.moddat; /* 命令的解釋 */
var y x1-x6; /* 命令的解釋 */
model y = x1-x6;
run;
------------------------------------------
正態(tài)性檢驗(yàn)
PROC UNIvariate
---------
PROC UNIvariate data=Arndata.unidat;
var x1;
run;
------------------------------------------
相關(guān)分析和回歸分析
PROC REG 回歸
---------
PROC REG data=Arndata.regdat;
var y x1-x6;
model y = x1-x6 / selection=stepwise; /* 加入逐步回歸選項(xiàng) */
print cli; /* 加入輸出預(yù)測(cè)結(jié)果部分,還可以輸出acov,all,cli,clm,collin,collinoint,cookd,corrb,
covb,dw(時(shí)序檢驗(yàn)統(tǒng)計(jì)量),i,influence,p,partial,pcorr1,pcorr2,r,
scorr1,scorr2,seqb,spec,ss1,ss2,stb,tol,vif(異方差檢驗(yàn)統(tǒng)計(jì)量),xpx*/
plot y*x2 / conf95; /* 做散點(diǎn)圖 */
run;
------------------------------------------
---------
DATA Arndata.regdat;
x2x2 = x2*x2;
x1x2 = x1*x2;
PROC REG data=Arndata.regdat;
var y x1 x2 x2x2 x1x2 ; /* 多項(xiàng)式回歸,非線性回歸 */
model y = x1 x2 x2x2 x1x2 / selection=stepwise; /* 加入逐步回歸選項(xiàng) */
print cli;
plot y*x2 / conf95; /* 做散點(diǎn)圖 */
run;
------------------------------------------
PROC RSreg 二次響應(yīng)面回歸
PROC ORTHOreg 病態(tài)數(shù)據(jù)回歸
PROC NLIN 非線性回歸
PROC TRANSreg 變換回歸
PROC CALIS 線性結(jié)構(gòu)方程和路徑分析
PROC GLM 一般線性模型
PROC GENmod 廣義線性模型
方差分析
PROC ANOVA 單因素均衡數(shù)據(jù)和非均衡數(shù)據(jù)
---------
PROC ANOVA data=Arndata.anovadat; /* 命令的解釋 */
class typ; /* 命令的解釋 */
model y = typ; /* 可以看出此處是 單因素方差分析(分類型自變量對(duì)數(shù)值型自變量的影響) */
run;
------------------------------------------
PROC GLM 多因素非均衡數(shù)據(jù):
---------
PROC GLM data=Arndata.glmdat; /* 命令的解釋 */
class typea typeb; /* 命令的解釋 */
model y = typea typeb; /* 可以看出此處是 不考慮交互作用的多因素方差分析(分類型自變量對(duì)數(shù)值型自變量的影響) */
run;
------------------------------------------
---------
PROC GLM data=Arndata.glmdat; /* 命令的解釋 */
class typea typeb; /* 命令的解釋 */
model y = typea typeb typea*typeb; /* 可以看出此處是 考慮交互作用的多因素方差分析(分類型自變量對(duì)數(shù)值型自變量的影響) */
run;
------------------------------------------
主成分分析
PROC PRINcomp
---------
PROC PRINcomp data=Arndata.pmdat n=4 out=w1 outstat=w2 ;
var x1-x6;
PROC print data=w1;
PROC plot data=w1 vpct=80; /* 一句話,其實(shí)print就是plot輸出圖形的文字形式而已 */
plot prin1*prin2 $ districts='*'/
haxis=-3.5 to 3 by 0.5 HREF=-2,0,2
vaxis=-3 to 4.5 by 1.5 HREF=-2,0,2; /* 主成分的散點(diǎn)圖,也就是載荷圖 */
run;
------------------------------------------
因子分析
PROC FACTOR
---------
PROC FACTOR data=Arndata.factordat simple corr ;
var y x1-x6;
title'18個(gè)財(cái)務(wù)指標(biāo)的分析';
title2'主成分解';
run;
PROC FACTOR data=Arndata.factordat n=4 ; /* 選擇4個(gè)公共因子 */
var y x1-x6;
run;
PROC FACTOR data=Arndata.factordat n=4
rotate=VARImax REorder; /* 因子旋轉(zhuǎn):方差最大因子法 */
var y x1-x6;
run;
------------------------------------------
PROC SCORE
---------
PROC FACTOR data=Arndata.factordat n=4
rotate=VARImax REorder score out=score_Out; /* 輸出因子得分矩陣 */
run;
PROC print data=score_Out;
var districts factor1 factor2 factor3 factor4;
run;
PROC plot data=score_Out;
plot factor1*factor2 $ districts='*' / href=0 Vref=0; /* 因子的散點(diǎn)圖,也就是載荷圖 */
run;
------------------------------------------
典型相關(guān)分析
PROC CANcorr
基本SAS程序代碼結(jié)構(gòu):
---------
DATA jt(TYPE=CORR); /* TYPE=CORR 表明數(shù)據(jù)類型為相關(guān)矩陣,而不是原始數(shù)據(jù), type還可以是cov,ucov,factor,sscp,ucorr等*/
input names$ 1-2(x1 x2 y1-y3)(6.); /* name $ 表示讀取左側(cè)的變量名,1-2表示變量名的字符落在第1,2列上 */
cards;
x1 1 0.8 ……
x2 ……
y1 ……
y2 ……
y3 ……
;
PROC CANcorr data=Arndata.cancorrdat
edf=70 redundancy; /* 誤差自由度的參考值,默認(rèn)值是n=1000; redundancy表示輸出冗余度分析的結(jié)果 */
var x1 x2;
with y1 y2 y3;
run;
------------------------------------------
對(duì)應(yīng)分析 /* 交叉表分析的拓展,尋找行和列的關(guān)系,一般行指代各種cases,而列代表各種visions */
PROC CORResp
---------
PROC CORResp data=Arndata.correspdat out=result;
var x1-x6;
id Type;
run;
options ps=40;
proc plot data=result;
plot dim2*dim1="*" $ Type / box
haxis=-0.2 to 0.3 by 0.1
Vaxis=-0.1 to 0.3 by 0.1
Href=0 Vref=0;
run;
------------------------------------------
聚類分析
PROC CLUSTER
---------
PROC CLUSTER data=Arndata.clusdat
method=ave outtree=clusdat_Out;var x1-x6;
id datid;
run;
proc tree horizontal; /* 做聚類樹 */
run;
------------------------------------------
PROC FASTclus
---------
PROC FASTclus data=Arndata.clusdat
maxclusters=3 list out=clusdat_Out;var x1-x6;
id datid;
run;
------------------------------------------
PROC ACEclus
PROC VARCLUS
---------
PROC VARclus data=Arndata.clusdat; /* 系統(tǒng)默認(rèn)使用主成分法聚類 */
var x1-x6;
run;
---------
PROC VARclus hierarchy data=Arndata.clusdat; /* 保證分析過(guò)程中不同水平的譜系結(jié)構(gòu) */
var x1-x6;
run;
---------
PROC VARclus centroid data=Arndata.clusdat outtree=clusdat_out; /* 使用重心法聚類 */
var x1-x6;
run;
------------------------------------------
PROC TREE
---------
PROC TREE data=Arndata.clusdat horizontal; /* 使用TREE過(guò)程繪制聚類譜系圖 */
var x1-x6;
run;
------------------------------------------
判別分析
PROC DISCRIM
---------
PROC DISCRIM data=Arndata.discrimdat
list out=discrimdat_Out distance pool=yes;
class Typ; /* 指定分類變量 */
var x1-x6; /* 用于建立判別識(shí)別函數(shù)的變量 */
id iddiscrim; /* 標(biāo)注樣本的變量 */
run;
---------
第二種方法,將需要判別的新樣本放在testdata里:
---------
PROC DISCRIM data=Arndata.discrimdat1 testdata=Arndata.discrimdat2
testlist testout=discrimdat_Out; /* 將原來(lái)的幾個(gè)選項(xiàng)加注test標(biāo)示 */
class Typ; /* 指定分類變量 */
var x1-x6; /* 用于建立判別識(shí)別函數(shù)的變量 */
id iddiscrim; /* 標(biāo)注樣本的變量 */
run;
------------------------------------------
PROC STEPdisc: 逐步判別分析過(guò)程
---------
PROC STEPdisc method=stepwise data=Arndata.discrimdat
SLentry=0.10 SLstay=0.10; /* 設(shè)定引入和剔除的顯著性水平 */
class Typ; /* 指定分類變量 */
var x1-x6; /* 用于建立判別識(shí)別函數(shù)的變量 */
run;
------------------------------------------
PROC CANdisc: Fisher判別分析過(guò)程
---------
PROC CANdisc data=Arndata.discrimdat out=discrimdat_Out
distance simple;
class Typ; /* 指定分類變量 */
var x1-x6; /* 用于建立判別識(shí)別函數(shù)的變量 */
run;
proc print data=discrimdat_Out;
run;
------------------------------------------
聯(lián)系客服