1、基础统计描述与SAS,第二讲 基础统计描述与SAS,主讲人:张国权,邮编:手机:13380055668,SAS程序结构,程序结构 在SAS系统中任何一个完整的处理过程均可分为两大步数据步和过程步 数据步将不同来源的数据读入SAS系统建立起SAS数据集。由DATA语句开始,以RUN语句结束。数据可以由外部或过程读入;或者由CARDS语句开始,直接输入数据,数据输入完后提行单独加“;”结束 过程步调用SAS系统中已编好的各种过程来处理和分析数据集中的数据。每一个过程步均以PROC语句开始,RUN语句结束,并且每个语句后均以“;”,一 SAS基础服务过程,CHART、GPLOT(绘图)SORT(排序
2、) PRINT(按要求输出结果)STANDARD(数据标准化),Base SAS功能 1、Base/SAS软件是SAS系统的基本部分,主要用于:信息存储和检索、数据修改 与程序设计、报表生成、基础统计计算、文件管理。 2、Base/SAS软件还提供了几十个Base/SAS过程,主要用于基础统计计算、生成报表、绘图及文件管理等方面,是更简捷、易用、有效的方法。 3、按用途可归为四大类: 基础统计计算、报表生成、得分方法、实用方法,(二)、过程简介 (1)、SAS基础统计过程:分别计算单个变量的关于位置、变异性及形状等方面的基础统计量;关于检验均值假设的有关统计量;关于检验正态性假设的有关统计量;
3、还有两个变量的有关相关性统计量。 例:MEANS,SUMMARY,UNIVARIATE,CORR,FREQ,TABULATE,CHART,(2)、SAS报表过程:生成一些信息显示。显示的信息可以是数据的列表,或图形显示。许多统计过程也用报表来输出结果。 例:PRINT,PLOT,CHART,FORMS,CALENDAR,TIMEPLOT,TABULATE,(3) SAS得分过程:用来产生包含新变量的输出数据集。这些新变量是输入数据集中数据的变换。 例:STANDARD,RANK (4)、SAS实用过程:完成中间操作或数据处理的特殊形式。 例:SORT,FORMAT,TRANSPOSE,APPE
4、ND,CONTENTS,DAASETS,1 对数据排序的sort过程 简介 sort过程常用于将数据集分类排序,以便其它SAS过程通过使用BY语句,可以直接调用它。 语句说明 PROC SORT 选择项;BY descending (递减) 变量;,程序段:proc sort data=a1 out=list1;by name;proc print;title按姓名排序;proc sort data=a1 out=list2;by room name;proc print;title 按房间号码和姓名排序;run;,1.学生成绩按平均分排序后输出 title 0401班学生成绩排名; data
5、 c0401; input name $ 1-10 sex $ math chinese; avg = math*0.5 + chinese/120*100*0.5;cards; 李明 男 92 98 张红艺 女 89 106 王思明 男 86 90 张聪 男 98 109 刘颍 女 80 110 ; proc print;run; proc sort data=c0401; by descending avg; proc print;run;,0401班学生成绩原始输出,0401班学生成绩排名 Obs name sex math chinese avg1 李明 男 92 98 86.8333
6、2 张红艺 女 89 106 88.66673 王思明 男 86 90 80.50004 张聪 男 98 109 94.41675 刘颍 女 80 110 85.83330401班学生成绩按平均分排序(递减)后输出 0401班学生成绩排名 Obs name sex math chinese avg1 张聪 男 98 109 94.41672 张红艺 女 89 106 88.66673 李明 男 92 98 86.83334 刘颍 女 80 110 85.83335 王思明 男 86 90 80.5000,学生成绩按分组排序程序 data a;input NAME$ x y g$ ;datali
7、nes; a 83.00 10 1 b 119.95 11 2 c 145.22 16 3 d 129.98 23 4 e 37.95 31 1 f 103.49 47 2 g 39.95 49 3 h 37.95 51 1 i 65.79 52 2 j 69.95 63 4 k 100.79 72 1 l 33.12 89 2 m 88.05 91 3 n 97.95 99 1 ;proc sort data=a out=b; by g x; run;proc print data=b;var NAME g x y ; run;,Obs NAME g x y1 e 1 37.95 312 h
8、 1 37.95 513 a 1 83.00 104 n 1 97.95 995 k 1 100.79 726 l 2 33.12 897 i 2 65.79 528 f 2 103.49 479 b 2 119.95 1110 g 3 39.95 4911 m 3 88.05 9112 c 3 145.22 1613 j 4 69.95 6314 d 4 129.98 23,学生成绩按分组递增排序输出,2.学生成绩按分类输出 data a;input NAME$ x y g$ ;datalines; a 83.00 10 1 b 119.95 11 2 c 145.22 16 3 d 129
9、.98 23 4 e 37.95 31 1 f 103.49 47 2 g 39.95 49 3 h 37.95 51 1 i 65.79 52 2 j 69.95 63 4 k 100.79 72 1 l 33.12 89 2 m 88.05 91 3 n 97.95 99 1 ;data aa;set a;if y=80 then yy=“优秀“;proc print data=aa; var NAME g yy x y ; run;,学生成绩按分类输出,Obs NAME g yy x y1 a 1 不称职 83.00 102 b 2 不称职 119.95 113 c 3 不称职 145.
10、22 164 d 4 不称职 129.98 235 e 1 不称职 37.95 316 f 2 称职 103.49 477 g 3 称职 39.95 498 h 1 称职 37.95 519 i 2 称职 65.79 5210 j 4 称职 69.95 6311 k 1 称职 100.79 7212 l 2 优秀 33.12 8913 m 3 优秀 88.05 9114 n 1 优秀 97.95 99,2 对数据集进行转置的TRANSPOSE过程 OBS A B C OBS _NAME_ COL1 COL2 COL31 1 2 3 1 A 1 4 72 4 5 6 2 B 2 5 83 7 8
11、 9 3 C 3 6 9 一、简介 该过程读入一个SAS数据集并通过转置创建一个新的数据集作为它的唯一输出集。原数据集中的行变为列、列变为行。,data a; input x y z; cards; 1 2 3 4 5 6 7 8 9 ; proc transpose;var x y z; proc print; run;,语句说明 1、proc transpose语句中的选择项:data、out、phefix、name 2、var语句 3、copy语句 4、by语句 5、id语句 三、例题 例3:使用COPY语句的转置结果 data a; input x y z; cards; 1 2 3
12、4 5 6 ; proc transpose;copy z; proc print;run; Obs z _NAME_ COL1 COL21 3 x 1 42 6 y 2 5,使用ID语句后转置结果; data b; input a b x$; cards; 1 2 x 3 4 y 5 6 . 7 8 z ; proc transpose; id x; proc print; run;,Obs _NAME_ x y z1 a 1 3 72 b 2 4 8,对数据进行标准化的standard过程 proc standard m=0 s=1; var 变量表 ; Freq 变量 ; Weight
13、变量 ; By 变量 ;,语句说明 freq:该语句用来指定输入SAS数据集中的一个数值变量,它的值表示该观测重复的次数。 weight:该语句规定输入SAS数据集中的一个数值变量,它的值用来对相应观测加权。 by:由by变量定义的几个观测组分开的分析结果。 二、输出SAS数据集包含给定变量的标准化变量。标准化值计算公式:,3.数据标准化 data a;input NAME$ x y g$ ;datalines; a 83.00 10 1 b 119.95 11 2 c 145.22 16 3 d 129.98 23 4 e 37.95 31 1 f 103.49 47 2 g 39.95 4
14、9 3 h 37.95 51 1 i 65.79 52 2 j 69.95 63 4 k 100.79 72 1 l 33.12 89 2 m 88.05 91 3 n 97.95 99 1 ; Proc print;var x y;run; proc standard m=0 s=1; var x y ; run; Proc print;var x y;run;,数据标准化,标准化前 Obs x y1 83.00 102 119.95 113 145.22 164 129.98 235 37.95 316 103.49 477 39.95 498 37.95 519 65.79 5210 6
15、9.95 6311 100.79 7212 33.12 8913 88.05 9114 97.95 99,标准化后数据 Obs x y1 0.01735 -1.346502 1.03053 -1.313073 1.72344 -1.145954 1.30555 -0.911995 -1.21793 -0.644606 0.57919 -0.109827 -1.16309 -0.042978 -1.21793 0.023879 -0.45455 0.0573010 -0.34048 0.4249611 0.50516 0.7257712 -1.35037 1.2939713 0.15583 1.
16、3608214 0.42729 1.62821,4 4. 秩得分过程(rank) 简介 通过SAS数据集中的观测计算一个或几个数值变量的秩得分,这些秩得分被输出到新的SAS数据集中。 语句proc rank ties=mean; var 变量表 ; Ranks rankx; Run; 二、秩及秩的应用rank把数值从最小到最大排列,对最小值赋予秩1,对第二小值赋予秩2,等等一直到秩为n,即未丢失的观测个数。出现结值时,其秩可以赋予平均秩或最高秩、最低秩。许多非参数统计方法使用秩而不用原始变量值。例如,对一个数据集首先通过rnak得到响应变量的秩,然后使用anova,glm过程至秩拟合方差分析模
17、型。,三、实例测得两组数据,并对每个数据求比率得分。 (1):5 5 6 7 9 12 13 15 18 21 (2):17 18 20 25 34 43data aa;input x g ;datalines; 5 1 5 1 6 1 7 1 9 1 12 1 13 1 15 1 18 1 21 1 17 2 18 2 20 2 25 2 34 2 43 2 44 2 ; proc rank ties=mean; var x ; Ranks rankx; run; Proc print;run;,Obs x g rankx得分1 5 1 1.52 5 1 1.53 6 1 3.04 7 1
18、4.05 9 1 5.06 12 1 6.07 13 1 7.08 15 1 8.09 18 1 10.510 21 1 13.011 17 2 9.012 18 2 10.513 20 2 12.014 25 2 14.015 34 2 15.016 43 2 16.017 44 2 17.0,分支结构 如果需要在某条件满足时执行某一操作,可以用 IF 条件 THEN程序块ELSE程序块 的结构,其中Else语句及其后的程序块可以省略。需要注意的是,如果程序块只有一句,则可直接写出,否则应以DO开始,以END结束。,5. 条件语句与用循环语句,比如,if max(a)0 THEN DO;PU
19、T X为正数;x = 2*x;PUT x=;END; 注意SAS的分支结构的写法与其它语言有些不同,它不用ENDIF结束。,循环结构 SAS数据步可以使用循环结构,主要的是两种:计数DO循环和当型、直到型循环。 计数DO循环的写法是: DO 计数变量 起始值 TO 结束值 BY 步长; 循环体语句END; 在循环体中可以用LEAVE语句跳出循环,相当于C语言的break语句;用CONTINUE语句可以立即结束本轮循环并转入下一轮循环的判断与执行 .,当型循环的语法是:DO WHILE(循环继续条件);循环体语句END; 程序先判断循环继续条件是否成立,成立时执行循环体语句,再判断循环继续条件,
20、如此重复,直到循环继续条件不再成立。 直到型循环的写法是: DO UNTIL (循环退出条件);循环体语句END; 程序先执行循环体,然后判断循环退出条件是否成立,成立则结束循环,否则继续。注意每轮循环都是先执行循环体再判断是否退出。,如: data; DO i = 1 TO 20 BY 2; j = i*3;put i 3. j 5.;END; run; 可以输出一个1,3,5,7,19的立方表。,用循环语句输入数据例,data a; label i=姓名 j=学期 x=常识 y=算术 z=制图; do i=1 to 6;do j=1 to 2;input x y z ; output;en
21、d; end; cards; 14 13 28 15 14 20 10 14 15 15 13 18 19 14 22 20 10 28 9 10 14 10 12 10 9 8 25 11 10 24 9 9 12 13 11 15 ; title 学生成绩; proc print data=a label; run;,6 SAS函数 (一) .SAS函数的定义SAS函数是一个子程序,它由0个或几个自变量返回一个结果值。每个SAS函数都有一个关键词名字。为了引用函数,要写出它的名字,然后写出一个自变量或几个自变量,它们用括号括起来,这个函数对这些自变量执行某种运算。SAS函数的形式funct
22、ionname(argument,.)例如: INT(1.453) SUM(X1,X2)MIN(SUM(cash,credit),1000),(二) SAS函数自变量和结果 1. SAS函数的自变量1) 自变量的类型:自变量可以是简单的变量名、常数或者表达式。这个表达式还可以包含其它的函数。例如:m=max(cash,credit)n=sqrt(2500)h=min(sum(of x1-x10),y),2) 自变量的个数:有些函数不需要自变量(如DATE(),有些只需要一个自变量,有些函数是对几个自变量作分析处理。所有函数都不允许超过2000个自变量。如果函数的自变量是表达式,则先计算作为自变
23、量的表达式。如:LOG(x+y)这个函数,是先计算x+y,然后调用对数函数LOG来计算x+y的对数。,3) 自变量的表示法:一般地,当函数有几个自变量时,它们必须用逗号分隔开。不过,以下三种写法均是合法的:functionname(OF variable1-variablen)functionname(OF variable variable .)functionname(variable, variable, .)例如: sum(of x1-x5)sum(of x1 x2 x3 x4 x5)sum(x1,x2,x3,x4,x5)是等价的。,2. 函数的结果作为函数结果的目标变量(因变量),其
24、取值通常取决于自变量,当自变量是字符变量时,因变量取字符为值;当自变量为数值变量时,因变量取数值为值。 对大多数函数而言,数值目标变量的长度是8个字节,字符目标变量的长度为200个字节。,(三). 函数的分类 SAS函数主要分为以下四类: 数学函数abs():求绝对值mod(var1,var2):求var1除以var2后的余数sqrt():求平方根值log():计算以e为底的对数值log10():计算以10为底的对数值,样本统计函数max():求最大值 min():求最小值mean():求均数 std():求标准差sum():求和 随机函数normal():产生一个正态分布的伪随机数ranno
25、r():产生一个标准正态分布的随机数 日期时间函数year():从变量中抽取“年份”值month():从变量中抽取“月份”值day():返回变量的天数值,data;x=0.5;y=sin(x);put Sine function value of x is y; run; 结果将在运行记录窗口显示一行 Sine function value of 0.5 is 0.4794255386 在PUT语句中使用“变量名”来指定输出项可以显示带有变量名的输出结果,比如把上程序中的PUT语句改为put x= y=; 则结果在LOG窗口显示为 X=0.5 Y=0.4794255386,二 利用SAS作样本
26、数据描述性统计,1.PROC UNIVARIATE、 2. PROC MEANS 定量资料的描述、配对t检验,一个样本对应总体与一个已知总体的比较t检验,SAS过程,(一) univariate过程,一、过程简介该过程是单变量过程。用来估计描述统计量的过程,除可以完成类似means过程的基本统计量的计算外,还可以计算其它统计量:计算变量值分布的位置参数,生成若干个描述变量分布的图,对数据进行正态性检验,描述极端值的情况。 二、语句结构proc univariate 选择项; var 变量表;by 变量表;freq 变量;weight 变量;id 变量表;output out=输出数据集 关键字
27、=名1 名2.;,三、输出结果 1、prob|T|的含义及判断标准 A 学生t统计量大于T绝对值的概率。 B 如PRT,则拒绝原假设(检验总体均值为0的假设) 2、procw的含义及判断标准 A 检验数据来自正态总体假设时,相应的显著性概率。 B 如PRT ,拒绝原假设(检验数据来自正态总体的假设)或W ,拒绝原假设。,DATA EX1; input x; cards; 75.0 54.8 64.0 64.8 47.4 62.2 66.9 52.0 62.2 65.0 62.2 65.0 57.5 63.5 55.2 66.6 73.5 64.0 57.0 57.0 63.9 69.0 58.
28、0 56.9 57.5 50.0 52.2 72.0 57.0 55.4 48.5 57.0 75.5 50.5 62.9 63.4 61.0 58.5 61.5 52.5 61.0 69.5 62.5 ; proc univariate normal plot; var x; RUN;,例1 给出了43个试验田的小麦产量,数据如下:试作统计描述,并检验数据是否符合正态分布. 75.0 54.8 64.0 64.8 47.4 62.2 66.9 52.0 62.2 65.0 62.2 65.0 57.5 63.5 55.2 66.6 73.5 64.0 57.0 57.0 63.9 69.0
29、58.0 56.9 57.5 50.0 52.2 72.0 57.0 55.4 48.5 57.0 75.5 50.5 62.9 63.4 61.0 58.5 61.5 52.5 61.0 69.5 62.5 SAS程序,The UNIVARIATE ProcedureVariable: xMoments(容量) N 43 (权重和) Sum Weights 43(均值) Mean 60.744186 (总和)Sum Observations 2612 (标准差) Std Deviation 6.91021681 (方差) Variance 47.7510963 (偏度系数) kewness
30、0.18055079峦 (峰度系数)Kurtosis -0.2825567 ( 未校正平方和) Uncorrected SS 160669.36 ( 未校正平方和) Corrected SS 2005.54605(变异系数)Coeff Variation 11.3759312 (标准误)Std Error Mean 1.05379818Basic Statistical MeasuresLocation Variability (均值) Mean 60.74419 (标准差) Std Deviation 6.91022 (中位数) Median 61.50000 (方差) Variance 4
31、7.75110 (众数) Mode 57.00000 ( 极差) Range 28.10000 (内间距Q3-Q1=64.8- 56.9=7.9) Interquartile Range 7.90000,作均值为0 的检验H0: u0=0 Tests for Location: Mu0=0Test -Statistic- -p Value-(t检验 ) Students t t 57.64309 Pr |t| = |M| = |S| D 0.1500Cramer-von Mises W-Sq 0.050824 Pr W-Sq 0.2500Anderson-Darling A-Sq 0.3072
32、63 Pr A-Sq 0.2500 不拒绝H0,The UNIVARIATE ProcedureVariable: xQuantiles (Definition 5)百分位数与四分位数的估计Quantile Estimate100% Max 75.599% 75.595% 73.5 P(X69.5)=90% 90% 69.5 P(X64.8)=75% 75% Q3 64.850% Median 61.525% Q1 56.910% 52.05% 50.01% 47.40% Min 47.4,分别列出5个最小值与最大值和它们的序号 Extreme Observations-Lowest- -Hi
33、ghest-Value Obs Value Obs47.4 5 69.5 4248.5 31 72.0 2850.0 26 73.5 1750.5 34 75.0 152.0 8 75.5 33,数据的探索性分析 画出数据的盒子图径叶图,描述数据的集中和波动趋势,Stem Leaf # Boxplot74 05 2 |72 05 2 |70 |68 05 2 |66 69 2 |64 00800 5 +-+Q362 22259459 8 | |60 005 3 *-+-*Q258 05 2 | |56 9000055 7 +-+Q154 824 3 |52 025 3 |50 05 2 |48
34、 5 1 |46 4 1 |-+-+-+-+,The UNIVARIATE ProcedureVariable: xNormal Probability Plot 75+ * +*| * +| +| *+| +* | *| *61+ *+| +*| *| *+| *| *+| *+ 47+ *+-+-+-+-+-+-+-+-+-+-+-2 -1 0 +1 +2,画出分布形态图,从直观上检验数据的是否正态分布,当 * 与 + 重合较多表明数据基本符合正态分,画出直方图的输出,(1).给定中位数及间隔 proc chart ; VBAR 变量/MIDPOINTS=44 TO 76 BY 4;(2)
35、. proc capability graphics ;var X;histogram;run;(3). proc gchart;vbar x; run;,data EX1; input x; cards; 75.0 54.8 64.0 64.8 47.4 62.2 66.9 52.0 62.2 65.0 62.2 65.0 57.5 63.5 55.2 66.6 73.5 64.0 57.0 57.0 63.9 69.0 58.0 56.9 57.5 50.0 52.2 72.0 57.0 55.4 48.5 57.0 75.5 50.5 62.9 63.4 61.0 58.5 61.5 5
36、2.5 61.0 69.5 62.5 ; proc univariate data=EX1 normal plot; var x; RUN; proc chart data=EX1 ; VBAR X/MIDPOINTS=44 TO 76 BY 4; proc capability graphics noprint;var X;histogram;run; proc gchart;vbar x; run;,DATA t; INPUT x ; gr=2; x1=gr*INT(x/gr); CARDS; 7.42 8.65 23.02 21.61 21.31 21.46 9.97 22.73 14.
37、94 20.18 21.62 23.07 20.38 8.40 17.32 29.64 19.69 21.69 23.90 17.45 19.08 20.52 24.14 23.77 18.36 23.04 24.22 24.13 21.53 11.09 18.8918.26 23.29 17.67 15.38 18.61 14.27 17.40 22.55 17.55 16.10 17.98 20.13 21.00 14.56 19.89 19.82 17.48 14.89 18.37 19.50 17.08 18.12 26.02 11.34 13.81 10.25 15.94 15.83
38、 18.54 24.52 19.26 26.13 16.99 18.89 18.46 20.87 17.51 13.12 11.75 17.40 21.36 PROC FREQ DATA=t; TABLES x1; PROC GCHART DATA=t;VBAR x1/DISCRETE TYPR=FREQ SPACE=0; VBAR x/TYPR=FREQ MIDPOINTS=7 TO 29 BY 2 SPACE=0; RUN;,(二)计算描述统计量的MEANS、SUMMARY过程 一、简介对数值变量计算单个变量的基本统计量。如果使用by语句,可把数据按by变量分为几个观测组,并对每个观测组计
39、算数值变量的描述统计量。 二、语句介绍proc means 选择项;var 变量表;by 变量表;class 变量表;freq 变量;weight 变量;id 变量;output 选择项;,MEANS过程所计算的统计量是用关键词及其含义如下:N:输入的观测值个数NMISS:每个变量所含缺失值的个数MEAN:变量的平均数STD:变量的标准差MIN:变量的最小值MAX:变量的最大值RANGE:变量的极差SUM:变量所有值的和VAR:变量的方差USS:每一变量原始数据的平方和(未校正平方和)CSS:每一变量的离均差平方和(校正平方和)CV:变异系数STDERR:每一变量的标准误(平均数的标准差)T:
40、在H0:= 0时的t 值 PRT:在H0:= 0 的假设下,统计量t 大于t 临界值绝对值的概率,MEANS过程所计算的统计量是用关键词及其含义如下:,SKEWNESS:偏斜度KURTOSIS:峭度CLM:置信区间的上限和下限LCLM:置信区间的下限UCLM:置信区间的上限 ALPHA(值):选用的统计显著性水平,DATA EX2; INPUT X; CARDS;20.3 21.5 22.0 19.8 22.5 23.7 25.4 24.323.2 26.8 18.7 21.9 24.4 22.8 26.2 21.4;PROC MEANS mean std stderr n CLM ; pro
41、c chart data=EX2 ; VBAR X/MIDPOINTS=14 TO 28 BY 2; RUN;,结果输出The MEANS ProcedureAnalysis Variable : XLower 95% Upper 95%Mean Std Dev Std Error N CL for Mean CL for Mean-22.8062500 2.2708203 0.5677051 16 21.5962153 24.0162847-,DATA EX2; INPUT X; CARDS;20.3 21.5 22.0 19.8 22.5 23.7 25.4 24.323.2 26.8 1
42、8.7 21.9 24.4 22.8 26.2 21.4;PROC MEANS mean std stderr n CLM ;proc capability graphics noprint;var X;histogram;run; proc gchart;vbar x; run; proc capability graphics noprint;var x;histogram / midpoint=20 to 28 by 1vscale=count;run;,Data zhili; input name $ x1 x2 x3; cards; Zhang 14 13 28 Li 10 14 1
43、5 Liu 19 14 22 Yang 9 10 14 Zeng 9 8 25 He 9 9 12 ; Proc print data=zhili; Proc means data=zhili; var x1 x2 x3; run;,在这个例子中,我们看到: data, input, cards, proc, var, run是关键词; zhili是数据集名; name, x1, x2, x3是变量名; means是过程名; data=是means语句中的选项; $是特殊字符。,The MEANS ProcedureVariable N Mean Std Dev Minimum Maximum-x1 6 11.6666667 4.0824829 9.0000000 19.0000000x2 6 11.3333333 2.6583203 8.0000000 14.0000000x3 6 19.3333333 6.5625198 12.0000000 28.0000000-,