SAS 基础 SAS 功能及历史(略) INSIGHT,Analyst,Program 是统计分析的三种方法 逻辑库与 SAS 文件(主要包括数据集和程序,访问形式:逻辑库名.文件名,不加逻辑库名,视为Work) SAS 中变量的名字(最多8个字符,不区分大小写)
SAS 编程初步 数据步和程序步(可能还会包括一些全程语句) SAS 语句书写规则(关键词开始,分号“;”结束) data exam; /* 考察某些人考试成绩的数据集*/ input name $ sex $ math computer; cards; 阿基米德 男 92 98 亚里士多德 男 89 95 居里夫人女 86 90 Gaga 女 25 82 高斯 男 98 83 ; *以下为过程步 proc print data = exam; proc means data =exam mean; var math computer; run;
SAS 编程初步 指定逻辑库 显示所有已指定的逻辑库 取消逻辑库名 libname <逻辑库名> (“<路径>” “<路径>” …); 例:libname mylib “d:\sasdata\”; 显示所有已指定的逻辑库 libname _ALL_ list; 取消逻辑库名 /*取消指定逻辑库名*/ libname <逻辑库名> clear; /*取消所有指定逻辑库名,不包括系统的四个*/ libname _ALL_ clear ;
SAS 编程初步 数据步 data <数据集名>; /*若不指定逻辑库名,缺省建立Work中的临时表*/ input <变量名1>[$] <变量名2>[$] …<变量名k>[$]; /*$为字符型*/ cards; d11 d12 … d1k d21 d22 … d2k … … ; run; /*若cards后的数据行有重复的域,可以在input语句后增加行停留符”@@”*/ data <数据集名>; input <变量名1>[$] <变量名2>[$] …<变量名k>[$] @@; cards; d11 d12 … d1k d21 d22 … d2k … … ; run;
SAS 编程初步 过程步 proc <过程名> [dada=<输入数据集>][<选项>]; <过程语句>/<选项>; run; /*过程步常用语句之一:var,指定分析变量*/ var <变量名1> <变量名2> … <变量名k>; /*过程步常用语句之二:by,指定分类变量,一般先用sort排序*/ by <变量名1> <变量名2> … ; /*过程步常用语句之三:class,指定分类变量,不需要先排序*/ class <变量名1> <变量名2> … ;
SAS 应用——方差分析 单因素方差分析 /* ANOVA过程*/ proc anova data = <数据集>; class <自变量列表>; /*必须,且位于model之前*/ model <因变量名>=<自变量表达式>[/<选项列表>]; /*主、交互及嵌套效应模型*/ means <因变量名>=<自变量表达式>[/<选项>]; /*计算各水平下因变量均值、标准差,并进行组间多重比较*/ run; *适用条件: *1. 各水平的观测彼此独立 *2. 各水平的观测均为正态分布的样本 *3. 各组方差相等
SAS 应用——方差分析 单因素方差分析 /* 例题*/ data exam; input hangye $ tousu @@; cards; 零售 57 零售 66 零售 49 零售 40 零售 44 旅游 68 旅游 39 旅游 29 旅游 45 旅游 56 航空 31 航空 49 航空 21 航空 34 航空 40 家电 44 家电 51 家电 65 家电 77 家电 58 ; proc anova data = exam; class hangye; model tousu = hangye; run;
SAS 应用——回归分析 线性回归分析 /* REG过程*/ proc reg data = <数据集>[/<选项列表>]; var <变量列表>; model <因变量>=<自变量表>[/<选项>]; /*指定要拟合的回归模型*/ print <选项列表>; plot <y变量名*x变量名>[=<符号>][/<选项列表>]; /*对两个变量绘制散点图,符号缺省即可,如果指定显示符号,则需单引号括起来*/ run;
SAS 应用——回归分析 线性回归分析 /* REG过程例*/ data sandian; input y x1 x2 @@; cards; 6.2 215 136.5 7.5 250 136.5 4.8 180 136.5 5.1 250 138.5 4.6 180 138.5 4.6 215 138.5 2.8 180 140.5 3.1 215 140.5 4.3 250 140.5 4.9 215 138.5 4.1 215 138.5 ; proc reg data = sandian; var y x1 x2; model y=x1 x2; run;
SAS 应用——回归分析 多项式回归分析——REG /* REG过程*/ proc reg data = <新数据集>[/<选项列表>]; var <变量列表>; model <因变量>=<自变量表>[/<选项>]; /*指定要拟合的回归模型*/ print <选项列表>; plot <y变量名*x变量名>[=<符号>][/<选项列表>]; /*对两个变量绘制散点图,符号缺省即可,如果指定显示符号,则需单引号括起来*/ run; /******************************* 关键是数据步,需要增加多项式项 data 新数据集; set 原数据集; 新变量=原来变量的多项式表达式; *******************************/
SAS 应用——回归分析 多项式回归分析——REG /* REG过程例*/ data sandian; input y x1 x2 @@; cards; 6.2 215 136.5 7.5 250 136.5 4.8 180 136.5 5.1 250 138.5 4.6 180 138.5 4.6 215 138.5 2.8 180 140.5 3.1 215 140.5 4.3 250 140.5 4.9 215 138.5 4.1 215 138.5 ; data sandianx; set sandian; x1x2=x1*x2; proc reg data = sandian; var y x1 x2 x1x2; model y=x1 x2 x1x2; run;
SAS 应用——回归分析 多项式回归分析——GLM /* GLM过程*/ proc glm data=<数据集>; class <变量列表>; model <因变量>=<自变量列表>[/选项] run; /**************************** 该过程省去了很多选项和参数, 只把比较有用的列了出来。 ****************************/
SAS 应用——回归分析 多项式回归分析——GLM /* GLM过程例*/ data exam; input g x y zb@@; cards; 1 30 10 280 1 25 11 260 1 35 13 330 1 40 14 400 1 45 14 410 2 20 12 270 2 18 11 210 2 25 12 280 2 25 13 300 2 23 13 290 3 40 14 410 3 45 15 420 3 48 16 425 3 50 18 450 3 55 19 470 ; proc glm data=exam; model zb=x y x*x x*y y*y; run;
SAS 应用——判别分析 判别分析 /* DISCRIM过程*/ proc discrim data=<数据集>; class <变量>; priors <先验概率值>; /*缺省为0.5*/ var <变量列表>; run; /* DISCRIM过程例,由于没有真实的数据集,该程序只是演示*/ proc discrim data = exam distance listerr; /*distance表明可根据距离判别样品有无差异,listerr列出错误归类的观测结果*/ class type; var x1-x4;
SAS 应用——聚类分析 聚类分析——系统聚类 /* CLUSTER过程&TREE过程*/ proc cluster data=<数据集> [选项]; /*选项中method为必选项,共11种方法*/ var <聚类变量列表>; copy <复制变量>; /*用来输出聚类树的数据集*/ run; proc tree data =<数据集> [选项]; copy <变量>; ; id <变量>;
SAS 应用——聚类分析 聚类分析——系统聚类 /* CLUSTER过程&TREE过程例*/ proc cluster data = exam standard method=ward outtree=otree pseudo; /*standard将数据规范化, method=ward指明实用最小方差法, outtree=otree指出输出聚类树数据集, pseudo要求计算伪F和伪t^2统计量*/ copy group; run; proc tree data = otree horizontal; id group;
SAS 应用——主成分分析 主成分分析 /* PRINCOMP过程*/ proc princomp data=<数据集> [选项列表]; var <变量列表>; run; /********************************* 选项列表中,out= 输出原始数据集和 主成分得分的数据集;outstat=统计量 的数据集;covariance或者 cov 表示从 协方差阵出发计算,缺省从相关阵出发 计算;n要计算的主成分个数,缺省时 计算全部;standard或者std要求在out= 数据集中把主成分得分标准化,默认为 相应的特征值 *********************************/
SAS 应用——主成分分析 主成分分析 /* PRINCOMP过程例*/ proc princomp data=exam n=4 out = ex1 outstat=ex2; var x1-x10; proc print data = ex1; run; /********************************* 该例子没有真实的数据集,所以只是作 为演示用,具体问题具体分析 *********************************/
SAS学习 SAS的内容比较多,前面都是针对考试的五个要求而设的,力求简洁实用。 Learn more by yourself /*或许不能运行,但规则如此*/ data learnSAS; input what you do tomorrow; cards; 1 2 3 4 …… ; proc work_life_may_be data = learnSAS; run;