分享

SAS 分析常用的过程 过程步大全

 wenasunny 2017-12-31

为区分过程名称的拼写,故意部分小写,以便识别和记忆。

 

基本SAS程序代码结构:

---------

PROC MODE data=Arndata.moddat;          /* 命令的解释 */

                var y x1-x6;                           /* 命令的解释 */

                model y = x1-x6;

run;

------------------------------------------

 

 


 

正态性检验

PROC UNIvariate

---------

PROC UNIvariate data=Arndata.unidat;

                var x1;

run;

 ------------------------------------------

 

 

 


 

相关分析和回归分析

PROC REG 回归

---------

PROC REG data=Arndata.regdat;

                var y x1-x6;

                model y = x1-x6 / selection=stepwise; /* 加入逐步回归选项 */

                print cli;                                            /* 加入输出预测结果部分,还可以输出acov,all,cli,clm,collin,collinoint,cookd,corrb,

                                                                            covb,dw(时序检验统计量),i,influence,p,partial,pcorr1,pcorr2,r,

                                                                            scorr1,scorr2,seqb,spec,ss1,ss2,stb,tol,vif(异方差检验统计量),xpx*/

                plot y*x2 / conf95;                            /* 做散点图 */

run;

 ------------------------------------------

---------

DATA Arndata.regdat;

x2x2 = x2*x2;

x1x2 = x1*x2;

PROC REG data=Arndata.regdat;

                var y x1 x2 x2x2 x1x2 ;                                /* 多项式回归,非线性回归 */

                model y = x1 x2 x2x2 x1x2 / selection=stepwise;    /* 加入逐步回归选项 */

                print cli; 

                plot y*x2 / conf95;                              /* 做散点图 */

run;

 ------------------------------------------

PROC RSreg 二次响应面回归

PROC ORTHOreg 病态数据回归

PROC NLIN 非线性回归

PROC TRANSreg 变换回归

PROC CALIS 线性结构方程和路径分析

PROC GLM 一般线性模型

PROC GENmod 广义线性模型

 


 

方差分析

PROC ANOVA 单因素均衡数据和非均衡数据

---------

PROC ANOVA data=Arndata.anovadat;          /* 命令的解释 */

                class typ;                                   /* 命令的解释 */

                model y = typ;                            /* 可以看出此处是 单因素方差分析(分类型自变量对数值型自变量的影响) */

run;

------------------------------------------

PROC GLM 多因素非均衡数据:

---------

 

PROC GLM data=Arndata.glmdat;          /* 命令的解释 */

                class typea typeb;                /* 命令的解释 */

                model y = typea typeb;        /* 可以看出此处是 不考虑交互作用的多因素方差分析(分类型自变量对数值型自变量的影响) */

run;

------------------------------------------

---------

 

PROC GLM data=Arndata.glmdat;          /* 命令的解释 */

                class typea typeb;                /* 命令的解释 */

                model y = typea typeb typea*typeb;        /* 可以看出此处是 考虑交互作用的多因素方差分析(分类型自变量对数值型自变量的影响) */

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;                                          /* 一句话,其实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;              /* 主成分的散点图,也就是载荷图 */

run;

------------------------------------------

 

因子分析

PROC FACTOR

---------

PROC FACTOR data=Arndata.factordat simple corr ;         

                var y x1-x6;                         

                title'18个财务指标的分析';

                title2'主成分解';

run;

PROC FACTOR data=Arndata.factordat n=4 ;                        /* 选择4个公共因子 */

                var y x1-x6;   

run;

PROC FACTOR data=Arndata.factordat n=4

                rotate=VARImax REorder;                                   /* 因子旋转:方差最大因子法 */

                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;     /* 因子的散点图,也就是载荷图 */

run;

------------------------------------------

 

 

 


 

典型相关分析

PROC CANcorr

基本SAS程序代码结构:

---------

DATA jt(TYPE=CORR);                               /* TYPE=CORR 表明数据类型为相关矩阵,而不是原始数据, type还可以是cov,ucov,factor,sscp,ucorr等*/

         input names$ 1-2(x1 x2 y1-y3)(6.);   /* name $ 表示读取左侧的变量名,1-2表示变量名的字符落在第1,2列上 */

         cards;

x1 1 0.8 ……

x2 ……

y1 ……

y2 ……

y3 ……

;

PROC CANcorr data=Arndata.cancorrdat

                edf=70 redundancy;                  /* 误差自由度的参考值,默认值是n=1000; redundancy表示输出冗余度分析的结果 */

                var x1 x2;

                with y1 y2 y3;

run;

------------------------------------------

对应分析                 /* 交叉表分析的拓展,寻找行和列的关系,一般行指代各种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; /* 系统默认使用主成分法聚类 */

                       var x1-x6; 
run;

 
---------

PROC VARclus hierarchy data=Arndata.clusdat; /* 保证分析过程中不同水平的谱系结构 */

                       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过程绘制聚类谱系图 */

var x1-x6; 
run;

 

------------------------------------------

 

判别分析

PROC DISCRIM

---------

PROC DISCRIM data=Arndata.discrimdat
                       list out=discrimdat_Out distance pool=yes;
                       class Typ; /* 指定分类变量 */
                       var x1-x6; /* 用于建立判别识别函数的变量 */
                       id iddiscrim; /* 标注样本的变量 */
run;
---------

第二种方法,将需要判别的新样本放在testdata里:

---------

PROC DISCRIM data=Arndata.discrimdat1 testdata=Arndata.discrimdat2
                       testlist testout=discrimdat_Out; /* 将原来的几个选项加注test标示 */
                       class Typ; /* 指定分类变量 */
                       var x1-x6; /* 用于建立判别识别函数的变量 */
                       id iddiscrim; /* 标注样本的变量 */
run;

 ------------------------------------------

PROC STEPdisc: 逐步判别分析过程

---------

PROC STEPdisc method=stepwise data=Arndata.discrimdat
                       SLentry=0.10 SLstay=0.10; /* 设定引入和剔除的显著性水平 */
                       class Typ; /* 指定分类变量 */
                       var x1-x6; /* 用于建立判别识别函数的变量 */
run;

------------------------------------------

PROC CANdisc: Fisher判别分析过程

---------

PROC CANdisc data=Arndata.discrimdat out=discrimdat_Out
                       distance simple;
                       class Typ; /* 指定分类变量 */
                       var x1-x6; /* 用于建立判别识别函数的变量 */
run;
proc print data=discrimdat_Out;
run;
 

------------------------------------------

 

-----------------------------------------------------------------------------------------------------------------

友情协助:

特征库 www.
豆瓣统计学小组 www.douban.com/group/stats

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多