《应用多元分析第三版各章附录中SAS程序的说明等DOC.docx》由会员分享,可在线阅读,更多相关《应用多元分析第三版各章附录中SAS程序的说明等DOC.docx(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、应用多元分析(第三版)各章附录中SAS程序的说明等(王学民 编)附录1-1 SAS的应用例1-1.1的SAS程序: proc iml; x=1 2 3 4 5, 2 4 7 8 9, 3 7 10 15 20, 4 8 15 30 20, 5 9 20 20 40; g=inv(x); e=eigval(x); d=eigvec(x); h=det(x); t=trace(x); print g e d h t;程序说明:“proc iml”是一个矩阵运算的过程步;“x=1 2 3 4 5,2 4 7 8 9,3 7 10 15 20,4 8 15 30 20,5 9 20 20 40”是输入
2、矩阵,并赋值给变量x;inv(x)是x的逆矩阵函数,eigval(x)是x的特征值函数,eigvec(x)是x的特征向量函数,det(x) 是x的行列式函数,trace(x)是x的迹函数,这些函数分别赋值给我们取的变量g,e,d,h,t;“print g e d h t”是打印语句,指定将g e d h t的值输出。附录2-1 SAS的应用例2.3.3和例2.3.6的SAS程序:proc iml; a=2 -1 4,0 1 -1,1 3 -2; b=5,-2,7; c=4 1 2,1 9 -3,2 -3 25; d=block(2,3,5); e=a*b; v=a*c*t(a); r=inv(
3、d)*c*inv(d);print e v r;程序说明:“proc iml”是一个矩阵运算的过程步;“a=2 -1 4,0 1 -1,1 3 -2”是输入矩阵,并赋值给变量a;“b=5,-2,7”是输入向量,并赋值给变量b;“c=4 1 2,1 9 -3,2 -3 25”是输入矩阵,并赋值给变量c;“d=block(2,3,5)”是输入对角阵diag(2,3,5),并赋值给变量d;“e=a*b”是将a与b相乘,并赋值给变量e;“v=a*c*t(a)”是将a,c,a三个矩阵相乘,并赋值给变量v,其中t(a)是a的转置函数;“r=inv(d)*c*inv(d)”是将d-1,c,d-1相乘,并赋值
4、给变量r,其中inv(d)是d的逆矩阵函数;”print e v r”是打印语句,指定将e v r的值输出。附录3-1 SAS的应用例3-1.1的SAS程序: proc corr data=sasuser.examp3a1 cov; var x1-x7; run; proc corr data=sasuser.examp3a1 nosimple cov; var x5 x6 x7;with x3 x4; partial x1 x2; run;程序说明:Proc步是以proc开头的一组或几组语句,它以另一个proc步、data步或run语句结束。SAS程序中的所有语句均以“;”结束。“proc
5、corr”调用corr过程,进行有关的相关分析计算。“data=sasuser.examp3a1”规定过程分析的是sasuser逻辑库中的examp3a1数据集;选项“cov”要求输出样本协差阵;“var x1-x7”指定要分析的变量是x1至x7,缺省var语句,将对所有数值型变量进行分析计算。上述程序中有两个proc步,第一个proc步中的语句“var x1-x7”和“run”可以省略。第二个proc步是作偏相关分析。选项“nosimple”要求不输出简单统计量;选项“cov” 要求输出样本偏协差阵;“partial x1 x2”指定在作偏相关计算时给定的变量是x1和x2;“var x5 x
6、6 x7”和“with x3 x4”表明计算x5、x6、x7与x3、x4之间的偏相关。该proc步中,语句“var x5 x6 x7”可以省略。附录4-1 SAS的应用例4.6.1的SAS程序:proc anova data=sasuser.examp461; class g; model x1-x4=g; manova h=g;run;程序说明:“proc anova”是一个(均衡数据的)方差分析过程;“data=sasuser.examp461”规定过程分析的是sasuser逻辑库中的examp461数据集;class语句规定了分组变量是g;model语句规定了模型的因变量是x1,x2,x
7、3,x4,自变量是g;manova语句要求计算另外的多元统计量。附录5-1 SAS的应用例5.2.3的SAS程序:proc discrim data=sasuser.examp523 listerr crosslisterr; class g; var x1-x4;run;程序说明:“proc discrim” 是一个判别分析的过程;“data=sasuser.examp523”规定过程分析的是sasuser.examp523数据集;class语句规定了分组变量是g;“var x1-x4”指定要分析的变量是x1至x4,缺省var语句,将对所有数值型变量进行分析计算;选项“listerr”要求列
8、出所有误判的观测;选项“crosslisterr” 要求列出使用交叉验证法时所有误判的观测。例5.4.2的SAS程序:proc candisc data=sasuser.examp542 out=outcan; class g; var x1-x4;run; proc plot; plot can2*can1=g;run;程序说明:“proc candisc” 是一个典型判别分析的过程;选项“out=outcan”要求生成一个包含原始数据和典型变量得分的SAS数据集,并命名为outcan,属于work(临时)库。“proc plot”是一个用来画散点图的过程;语句“plot can2*can1
9、=g”要求作散点图,can2为垂直变量,can1为水平变量,用变量g的值作为散点的标记。附录6-1 SAS的应用例6.3.2的SAS程序:data examp632(type=distance); array x(8) x1-x8; input v $ x1-x8; do i=1 to 8; x(i)=1-x(i); end; drop i; cards;x1 1.000 . . . . . . .x2 .846 1.000 . . . . . .x3 .805 .881 1.000 . . . . .x4 .859 .826 .801 1.000 . . . .x5 .473 .376 .3
10、80 .436 1.000 . . .x6 .398 .326 .319 .329 .762 1.000 . .x7 .301 .277 .237 .327 .730 .583 1.000 .x8 .382 .415 .345 .365 .629 .577 .539 1.000proc print data=examp632;run;proc cluster data=examp632 method=com; var x1-x8; id v;proc tree horizontal; id v;run;程序说明:“data examp632”是用data步产生一个数据集,并命名为examp63
11、2,这是一个临时数据集,属于临时库work;“(type= distance)”表明计算包含(1-相关系数)的距离矩阵;“array x(8) x1-x8”是数组语句,名为x的数组有8个元素,数组x(1),x(8)对应x1,x8;“input v $ x1-x8”是input语句,$表示此前面的变量v是字符型变量,该语句用于从cards语句后面的数据区中读取数据,通过读取数据为变量命名、确定变量的类型等;“cards”指定本语句后面的是数据行;“do i=1 to 8; x(i)=1-x(i);end”是循环语句,用于将相关系数转为“距离”(1-相关系数);“drop i”是删除变量语句,要求
12、从产生的数据集中删除变量i。“proc print data=examp632”是一个打印过程,数据集中的每个变量形成输出报表的列,每个观测形成行。“proc cluster data=examp632”是一个聚类分析过程;规定过程分析的是work逻辑库中的examp632数据集;“method=com” 指定了采用的系统聚类方法是最长距离法;“var x1-x8”指定用于聚类分析中的数值型变量。如果缺省,则使用所有未列入其他语句中的数值型变量,该语句此处可省略;“id v”是一个id语句,用于识别打印输出中的观测,并以变量v的取值显示;如果缺省,则用OBn显示,其中n为观测序号。“proc
13、tree”是一个使用由cluster过程产生的数据集来画树形图的过程;选项“horizontal”要求树形图的取向为水平方向,且树根在左边。如果没有指明此选项,则其高度轴为垂直方向,树根在上部。例6.3.3的SAS程序:proc cluster data=sasuser.examp633 method=com std; id region;proc tree horizontal; id region;proc cluster data=sasuser.examp633 method=med std; id region;proc tree horizontal; id region;proc
14、 cluster data=sasuser.examp633 method=ave std; id region;proc tree horizontal; id region;proc cluster data=sasuser.examp633 method=ave nosquare std; id region;proc tree horizontal; id region;proc cluster data=sasuser.examp633 method=war std; id region;proc tree horizontal; id region;run;程序说明:“proc c
15、luster”是一个聚类分析过程;“data=sasuser.examp633”规定过程分析的是sasuser逻辑库中的examp633数据集;“method=com” 规定了采用的系统聚类方法是最长距离法(“method= med”是采用中间距离法;“method=ave”是采用类平均法,缺省时类之间的距离为均方距离,如使用选项“nosquare”,则类之间的距离为平均距离;“method= war”是采用离差平方和法);选项“std” 规定了在聚类之前须先对各变量数据作标准化变换,缺省时是直接对原始数据进行聚类,而不作事先的标准化处理。语句“id region”用于识别打印输出中的观测,并
16、以变量region的取值显示;如果缺省,则用OBn显示,其中n为观测序号。“proc tree”是一个使用由cluster过程产生的数据集来画树形图的过程;选项“horizontal”要求树形图的取向为水平方向,且树根在左边。如果没有指明此选项,则其高度轴为垂直方向,树根在上部。例6.4.2的SAS程序:proc standand data=sasuser.examp633 mean=0 std=1 out=stan;proc fastclus data=stan maxc=5 drift list; var x1-x8; id region;run;程序说明:“proc standand”是
17、一个将SAS数据集中的一些或所有变量按给定的均值和标准差进行标准化变换;“data=sasuser.examp633” 规定过程是对sasuser逻辑库中的examp633数据集进行;选项“mean=0 std=1”规定按均值为0、标准差为1进行标准化变换;选项“out=stan”要求生成一个包含标准化值的新数据集,并命名为stan,这是一个临时数据集,属于临时库work。“proc fastclus”是一个动态聚类分析过程;“data= stan”规定对数据集stan进行;“maxc=5”指定所允许的最大分类个数为5,如果缺省,其值假定为100;“var x1-x8”指定用于聚类分析中的数值
18、型变量。如果缺省,则使用所有未列入其他语句中的数值型变量;选项“drift”表明使用k均值法;选项“list”要求列出各观测归属的类别。附录7-1 SAS的应用例7.3.3的SAS程序:proc princomp data=sasuser.examp733 out=prin; var x1-x8;proc sort; by prin1;proc print; id region; var prin1 prin2 ;proc sort; by prin2;proc print; id region; var prin1 prin2 ;proc plot; plot prin2*prin1=alp
19、habet/haxis=-4 to 6 by 1 vaxis=-3.5 to 2.5 by 0.5;run;程序说明: “proc princomp”是一个主成分分析过程;“data= sasuser.examp733”规定过程分析的是sasuser.examp733数据集;“out=prin” 要求生成一个包含原始数据和主成分得分的SAS数据集,并取名为prin,属于临时库work;“var x1-x8”指定分析变量为x1至x8。“proc sort”是一个排序过程;“by prin1”要求按数据集work.prin中的变量prin1进行升序排列。“proc print”是一个打印过程,数据
20、集中的每个变量形成输出报表的列,每个观测形成行;“id region”是一个id语句,用于识别打印输出中的观测,并以变量region的取值显示;如果缺省,则用OBn显示,其中n为观测序号。“var prin1 prin2”要求输出包含prin1、prin2的数据列表。“proc plot”是一个图形过程;“prin2*prin1=alphabet”是一个plot语句,指示prin2为垂直变量,prin1为水平变量,作图字符由变量alphabet给出;“haxis=-4 to 6 by 1 vaxis=-3.5 to 2.5 by 0.5”是斜杠“/”后面的选项,haxis=-4 to 6 by
21、 1定义水平轴上的刻度从-4至6,增量为1,vaxis=-3.5 to 2.5 by 0.5定义垂直轴上的刻度从-3.5至2.5,增量为0.5。例7.3.3的SAS/INSHIGT菜单系统操作在inshigt中打开数据集sasuser.examp633,见图7-1。选菜单过程如下:在图7-1中选分析多元(Y X)在变量框中选 x1,x2,x3,x4,x5,x6,x7,x8 (见图7-2)Y选输出选主分量分析,主分量选项(见图7-3)在图7-4中作图中的选择(主成分个数缺省时为“自动”选项,此时只输出特征值大于1的主成分)确定确定确定图7-1图7-2图7-3图7-4得到如图7-5、图7-6所示的
22、结果:图7-5图7-6在图7-1中选分析散点图(Y X)选 PCR1X ;PCR2Y ;region标签变量 (见图7-7)确定 随即出现如图7-8所示的散点图,接下来我们对该图进行设置、调整,使之符合我们的要求。图7-7图7-8在图7-9的数据窗口中点击左上角的“31”,以使所有观测都选中将鼠标移至观测号中,点击右键,选在图中加标签在图7-8中点击左下角,出现上托菜单刻度作图7-10中的选择确定作图7-11中的选择确定调整好散点图:拉大图外围方框;图7-8 中点击标记大小 ,选择6号字;下拉横坐标,左拉纵坐标;图7-8 中点击参考线。图7-9图7-10图7-11图7-12附录8-1 SAS的
23、应用例8.3.1例8.3.3的SAS程序:proc factor data=sasuser.exec65 n=2 rotate=varimax out=out831; var x1-x8;proc factor data=sasuser.exec65 n=2 priors=smc rotate=varimax; var x1-x8;proc factor data=sasuser.exec65 n=2 method=ml heywood rotate=varimax; var x1-x8;proc plot; plot factor2*factor1=alphabet;run;程序说明:“pr
24、oc factor”是一个因子分析过程;“data=sasuser.exec65”规定过程分析的是sasuser逻辑库中的exec65数据集;选项“n=2”指定了选用两个因子; “rotate=varimax”要求使用最大方差旋转法旋转因子;“var x1-x8”指定分析变量为x1至x8。在第一个proc步中,选项 “out=out842”的作用是将所有观测的两个因子得分及原数据集中的所有数据保存在数据集work.out842中。程序中未指明用何种参数估计方法,缺省时的选项为“priors=one”,即参数估计是用主成分法。在第二个proc步中,选项 “priors=smc”指明参数估计是用主
25、因子法,对每个原始变量令初始共性方差为该变量与所有其余变量的样本复相关系数的平方。在第三个proc步中,选项 “method=ml”要求用适当的算法完成对参数的极大似然估计;选项“heywood”(或“hey”)指定当共性方差大于1时令其为1,并允许迭代继续进行。“proc plot”是一个图形过程;“factor2*factor1=alphabet”是一个plot语句,指示factor2为垂直变量,factor1为水平变量,作图字符由变量alphabet给出。附录9-1 SAS的应用例9.1.1的SAS程序:proc corresp data=sasuser.examp911 out=res
26、ults rp cp short; var A B C D E; id mental;run;proc plot data=results; plot dim1*dim2=mental /box vspace=6 hspace=10 haxis=-.30 to .30 by .15 vaxis=-.30 to .30 by .15;run;程序说明: “proc corresp”是一个对应分析过程;“data= sasuser.examp911”规定过程分析的是sasuser库中的examp911数据集;“out=results”指示生成包含行、列、附加的观测和附加的变量坐标的数据集,并将其命
27、名为results,属work(临时)库;选项“rp”和“cp”分别指示打印行轮廓矩阵和列轮廓矩阵;选项“short”指示不打印除坐标之外的所有点和坐标统计量;“var A B C D E” 是一个var语句,指示列联表中的列是A、B、C、D、E;“id mental”是一个id语句,指定用mental的值作为输出列联表中行的名称。“proc plot”是一个图形过程;“data=results”规定作图的是临时库中的results数据集;“plot dim1*dim2=mental”是一个plot语句,指示dim1为垂直变量,dim2为水平变量,作图字符由变量mental给出;“box vs
28、pace=6 hspace=10 vaxis=-.30 to .30 by .15 haxis=-.30 to .30 by .15”是斜杠“/”后面的选项,box要求画出的边框围住整个图形,vspace=6规定垂直轴上刻度标记之间输出的行数目是6,hspace=10规定水平轴上刻度标记之间输出的列数目是10,vaxis=-.30 to .30 by .15定义垂直轴上的刻度从-0.30至0.30,增量为0.15,haxis=-.30 to .30 by .15定义水平轴上的刻度从-0.30至0.30,增量为0.15。书中图9.1.1的SAS制作将书中表9.1.3的数据按每一个人逐条输入,共1
29、660个观测,有一个行变量和一个列变量,均设置为列名型的,保存为数据集sasuser.examp911mosaic(下载的本书数据集中有)。在inshigt环境下打开数据集sasuser.examp911mosaic,见图9-1。选菜单过程如下:在图9-1的界面中,分析盒形图/马赛克图(Y)(B)选rowX(见图9-2);columnY输出作图9-3中的选择确定确定随即出现如图9-4所示的马赛克图。图9-1图9-2图9-3图9-4在图9-1的界面中,分析盒形图/马赛克图(Y)(B)选columnX(见图9-5);rowY 输出作图9-6中的选择确定确定随即出现如图9-7所示的马赛克图。图9-5
30、图9-6图9-7附录10-1 SAS的应用例10.3.1的SAS程序: proc cancorr data=sasuser.examp1031 vprefix=u wprefix=v; var x1-x3; with y1-y3; run;程序说明:“proc cancorr”是一个典型相关分析过程;“data= sasuser.examp1031”规定过程分析的是sasuser.examp1031数据集;选项“vprefix=u wprefix=v”规定第一组典型变量的前缀是u,第二组典型变量的前缀是v;“var x1-x3”指定分析的第一组变量为x1至x3;“with y1-y3”指定分析的第二组变量为y1至y3。