1、医学数据统计处理及 SAS软件的应用,I:SAS入门,SAS(Statistical Analysis System)是由美国北卡罗来纳州州立大学1966年开发的统计分析软件。1976年SAS软件研究所(SAS Institute Inc.)成立,开始进行SAS系统的维护、开发、销售和培训工作。期间经历了许多版本,并经过多年来的完善和发展,SAS系统在国际上已被誉为统计分析的标准软件,在各个领域得到广泛应用。,SAS 是一个模块化、集成化的大型应用软件系统。它由数十个专用模块构成,功能包括数据访问、数据储存及管理、应用开发、图形处理、数据分析、报告编制、运筹学方法、计量经济学与预测等等。,SA
2、S系统基本上可以分为四大部分:SAS数据库部分;SAS分析核心;SAS开发呈现工具;SAS对分布处理模式的支持及其数据仓库设计。 SAS系统主要完成以数据为中心的四大任务:数据访问;数据管理(sas 的数据管理功能并不很出色,而是数据分析能力强大所以常常用微软的产品管理数据,再导成sas数据格式要注意与其他软件的配套使用);数据呈现;数据分析。截止2007年,软件最高版本为SAS9.2。,商业智能软件和服务提供商SAS公司在即将庆祝其成立30周年之际宣布,客户对SAS企业级智能平台和行业解决方案需求的不断增长,验证了SAS的智能化战略所取得的卓越成效,并在2005年创下了新的销售记录:总收入从
3、2004年的15.3亿美元增长到2005年的16.8亿美元,增幅为10%,这标志着SAS连续29年保持收入增长和盈利。,从全球收入细分从行业分布上看,SAS银行业解决方案的收入继续保持领先,增长率达10%,占SAS行业解决方案收入的28%。零售业解决方案则增长了20%、教育业16%、保险业12%、政府应用11%。 为什么没有医学?,SAS三个最重要的子窗口,程序窗口(PROGRAM EDITOR)、运行记录窗口(LOG)、输出窗口(OUTPUT)。 程序窗口的使用类似于Windows中的记事本程序,可以在其中编辑文本文件,主要是编辑SAS 程序。程序可以直接在窗口中键入,插入新行用回车,插入点
4、光标(闪动的竖线)可以用光标键(上下左右箭头、Home、End)移动或用鼠标单击到某一处。按住Shift再按光标键可以加亮显示一块文本,然后用复制、剪切、粘贴命令(Edit菜单中的Cut、Copy、Paste,或工具栏图标)可以复制或移动加亮显示的文本。这些编辑操作具体请参考Windows的有关文档。,运行记录窗口记录程序的运行情况,运行是成功还是出错,运行所用时间,如果出错,错在什么地方。运行记录窗口中以红色显示的是错误信息。 输出窗口显示SAS程序的文本型输出(图形输出单独有一个GRAPHICS窗口)。输出分页显示。,SAS主窗口主菜单,SAS菜单是动态的,其内容随上下文而不同,即光标在不
5、同窗口其菜单也不同。其中,File(文件)菜单主要是有关SAS文件调入、保存及打印的功能。Edit (编辑)菜单用于窗口的编辑(如清空、复制、剪切、粘贴、查找、替换)。Locals(局部)菜单与当前正在进行的操作有关,如果你正在程序窗口中编辑程序,则Locals菜单有提交运行、调回修改等项,如果在运行记录窗口或输出窗口则Locals菜单项根本不出现。,SAS主窗口主菜单,Globals 菜单内容比较复杂,它可以打开被关闭的程序窗口、运行记录窗口、输出窗口、图形窗口,可以进入SAS提供的各个独立模块。主菜单下是一个命令条和工具栏菜单。命令条主要是用于与SAS较早版本的兼容性,可以在这里键入SAS
6、的显示管理命令。工具栏图标提供了常见任务的快捷方式,比如保存、打印、帮助等等。鼠标光标在某一工具栏图标上停留几秒可以显示一个说明。,工具栏图标的解释,Submit 提交编辑窗口中的程序New 清空编辑窗口Open 打开文件到编辑窗口。用户指定一个文件调入到编辑窗口内。这个文件从此与编辑窗口相关联,以后的存盘操作将自动存入这个文件。Save 存盘,保存编辑窗口内容,注意如果此窗口已经与一个文件相联系的话此功能将覆盖文件的原有内容而不提示。Print 打印当前窗口内容,Print preview 打印预览。Cut 剪切选定文本。Copy 复制选定文本。Paste 粘贴。注意这些操作是对Window
7、s 剪贴板进行的,可以用来与其它Windows应用程序交换文本、数据等。剪切或复制到剪贴板的内容可以被其它应用程序粘贴,其它应用程序放到剪贴板的内容也可以粘贴到SAS的编辑窗口中。Undo 撤销刚才的编辑操作。,Add new library 添加新图书馆。SAS explorer SAS系统内浏览器。Clear all 清除屏幕内容。Break 中断正在运行的程序 。Help 启动Windows的帮助系统进入SAS 的帮助。,简单运行样例 假设我们2010级1班学生的英语成绩和统计成绩,英语满分为100,统计满分为120,希望计算学生的平均分数(按百分制)并按此排名,可以在程序窗口输入此程序
8、:,title the ranked of the 2010(1) students grade; data example1;input name$ sex $ english statistics;avg = english*0.5 + statistics/120*100*0.5; cards; liming m 92 98 zhanghongyi f 89 106 wangsiming m 86 90 zhangcong m 98 109 liuying f 80 110 ; run;proc print;run; proc sort data=example1;by descendi
9、ng avg; run; proc print;run;,查看运行过程及出错信息,激活LOG窗口( F6 ) 黑色文字:源程序及运行情况 蓝色文字:程序运行情况的说明信息 红色文字:出错信息 绿色文字:警告信息,166 title the ranked of the 2010(1) students grade; 167 data example1; 168 input name$ sex $ english statistics; 169 avg = english*0.5 + statistics/120*100*0.5; 170 cards;NOTE: SAS went to a new
10、 line when INPUT statement reached past the end of a line. NOTE: The data set WORK.EXAMPLE1 has 5 observations and 5 variables. NOTE: DATA statement used (Total process time):real time 0.00 secondscpu time 0.00 seconds176 ; 177 run; 178 179 180 proc print;run;NOTE: There were 5 observations read fro
11、m the data set WORK.EXAMPLE1. NOTE: PROCEDURE PRINT used (Total process time):real time 0.01 secondscpu time 0.01 seconds181 proc sort data=example1; 182 by descending avg; 183 run;NOTE: There were 5 observations read from the data set WORK.EXAMPLE1. NOTE: The data set WORK.EXAMPLE1 has 5 observatio
12、ns and 5 variables. NOTE: PROCEDURE SORT used (Total process time):real time 0.01 secondscpu time 0.01 seconds184 proc print;run;NOTE: There were 5 observations read from the data set WORK.EXAMPLE1. NOTE: PROCEDURE PRINT used (Total process time):real time 0.00 secondscpu time 0.00 seconds,the ranke
13、d of the 2010(1) students grade 08:29 Wednesday, September 15, 2010 13 Obs name sex english statistics avg1 liming m 92 98 86.83332 zhanghon f 89 106 88.66673 wangsimi m 86 90 80.50004 zhangcon m 98 109 94.41675 liuying f 80 110 85.8333the ranked of the 2010(1) students grade 08:29 Wednesday, Septem
14、ber 15, 2010 14 Obs name sex english statistics avg1 zhangcon m 98 109 94.41672 zhanghon f 89 106 88.66673 liming m 92 98 86.83334 liuying f 80 110 85.83335 wangsimi m 86 90 80.5000,SAS程序的一些特点,SAS程序由 语句组成,语句用分号结束。SAS程序中大小写一般不区分(字符串中要区分大小写)。SAS程序中的空格、空行一般可以任意放置,这样我们可以安排适当的缩进格式使得源程序结构清楚易读。SAS程序由两种“步”构
15、成,一种叫 数据步(data step),一种叫 过程步(proc step),分别以DATA语句和PROC语句开始。数据步和过程步由若干个语句组成,一般以RUN语句结束。,SAS基本概念,SAS数据集 SAS数据集(SAS Datasets)可以看作由若干行和若干列组成的表格,类似于一个矩阵,但各列可以取不同的类型值,比如整数值、浮点值、时间值、字符串、货币值等等。,数据集的每一行叫做一个观测(Observation),每列叫做一个变量(Variable)。SAS数据集等价于关系数据库系统中的一个表,实际上一个SAS数据集有时也称作一张表。在数据库术语中一个观测称作一个记录,一个变量称作一个
16、域。在example数据集中有5个观测,分别代表5个学生的情况,而每个学生有5个数据,分别为姓名、性别、英语成绩、统计成绩、平均分,所以此数据集有5个变量。 从上面看出,数据集要有名字,变量要有名字,所以SAS中对 名字(数据集名、变量名、数据库名,等等)有约定:SAS名字由英文字母、数字、下划线组成,第一个字符必须是字母或下划线,名字最多用8个字符,大写字母和小写字母不区分。比如,name,abc,aBC,x1,year12,_NULL_等是合法的名字,且abc和aBC是同一个名字,而class-1(不能有减号)、a bit(不能有空格)、serial#(不能有特殊字符)、Documents
17、 (超长)等不是合法的名字。,II:SAS语言与数据管理程序,SAS系统强大的数据管理能力、计算能力、分析能力依赖于作为其基础的SAS语言。SAS语言是一个专用的数据管理与分析语言,它的数据管理功能类似于数据库语言,但又添加了一般高级程序设计语言的许多成分(如分支、循环、数组),以及专用于数据管理、统计计算的函数。SAS系统的数据管理、报表、图形、统计分析等功能都可以用SAS语言程序来调用,只要指定要完成的任务就可以由SAS系统按照预先设计好的程序去进行。,SAS语句,SAS语言程序由数据步和过程步组成。数据步用来生成数据集、计算、整理数据,过程步用来对数据进行分析、报告。SAS语言的基本单位
18、是语句,每个SAS语句一般由一个关键字(如DATA,PROC,INPUT,CARDS,BY)开头,包含SAS名字、特殊字符、运算符等,以分号结束。SAS关键字是用于SAS语句开头的特殊单词,SAS语句除了赋值、累加、注释、空语句以外都以关键字开头。SAS名字在SAS程序中标识各种SAS成分,如变量、数据集、数据库,等等。SAS 名字由1到8个字母、数字、下划线组成,第一个字符必须是字母或下划线。SAS关键字和SAS 名字都不分大小写。,SAS表达式,SAS数据步程序中的计算用表达式完成。表达式把常量、变量、函数调用用运算符、括号连接起来得到一个计算结果。SAS常量主要有数值型、字符型两种,并且
19、还提供了用于表达日期、时间的数据类型。例如 数值型:12,7.5,2.5E10 字符型:Beijing,“Li Ming“,“李明“ 日期型:13JUL1998d 时间型:14:20t 日期时间型:13JUL1998:14:20:32dt,数值型常数可以用整数、定点实数、科学计数法实数表示。 字符型常数为两边用单撇号或两边用双撇号包围的若干字符。 日期型常数是在表示日期的字符串后加一个字母d(大小写均可),中间没有空格。 时间型常数是在表示时间的字符串后加一个字母t。 日期时间型常数在表示日期时间的字符串后加字母dt。 因为SAS是一种数据处理语言,而实际数据中经常会遇到缺失值,比如没有观测到
20、数值,被访问人不肯回答,等等。SAS中用一个单独的小数点来表示缺失值常量。,SAS运算符,包括算术、比较、逻辑等运算符。 算术运算符为 * / *,运算优先级按通常的优先规则。 比较运算符用于比较常量、变量的值大小、相等,包括 EQ NE GT LT GE LE 其中EQ等名字和等特殊字符是同一运算符的等价写法。比较运算符得到“真”或“假” 的结果,主要用于需要条件的分支、循环等语句中。,逻辑运算符用来连接比较得到的结果以构成复杂的条件,有三种逻辑运算符: &(AND) |(OR) (NOT) 其中AND是&(与)的等价写法,OR是|(或)的等价写法,NOT是(非)的等价写法。 例如 (sal
21、ary = 1000) AND (salary = 1000) AND (salary 2000) 表示工资收入 不在10002000之间,SAS程序规则,SAS程序由语句构成。每个语句以分号结尾(最常见的SAS编程错误就是丢失分号)。因为分号作为语句结束标志,所以SAS语句不需要单独占一行,一个语句可以写到多行(不需任何续行标志),也可以在一行连续写几个语句。SAS语言中只要允许用一个空格的地方就可以加入任意多个空白(空格、制表符、回车),允许用空格的地方是名字周围、运算符周围。比如,程序 proc printdata=example;by avg; run; 和 proc print da
22、ta=example;by avg;run; 是等效的。另外,SAS关键字和名字大小写不分,但字符型数据值要区分大小写,比如“Beijing“ 和“BEIJING“被认为是不同的数据值。,在SAS程序中可以加入注释,注释使用C语言语法,用/*和*/在两端界定注释,这种注释可以出现在任何允许加入空格的位置,可以占多行。我们一般只把注释单独占一行或若干行,不把注释与程序代码放在同一行。注释的另一个作用是把某些代码暂时屏蔽使其不能运行。下面是一个注释的例子: /* the ranked of the 2010(1) students grade */,赋值语句,在SAS中用赋值语句计算一个值并存放到
23、变量中。格式为 变量名 表达式; 例如: avg = (english + statistics/120*100)/2; isfem = (sex=女); y=sin(x)*2; newv = .; 其中第一个赋值语句用一个公式计算平均分数。第二个生成一个取值为0或1的变量,性别为女时为1,否则为0。第三个使用了正弦函数和乘方运算。第四个给变量赋了缺失值。 注意想试验上述语句要把它们放入数据步中,并且等号右边的表达式中的各变量应该是存在的,否则会得到缺失值结果。,输出语句,PUT语句在关键字后面列出要输出的各项,每一项可以是变量名或字符串,不能为数值常量或表达式,各项之间用空格分开。PUT语句
24、的输出结果显示在LOG窗口。例如: 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,分支结构 IF 条件 THEN 语句; ELSE 语句; 循环结构 DO 计数变量 起始值 TO 结束值 BY 步长; 循环体语句
25、END;,data;DO i = 1 TO 20 BY 2;j = i*3;put i 3. j 5.;END; run;,各样本统计函数为:,MEAN 均值 MAX 最大值 MIN 最小值 N 非缺失数据的个数 NMISS 缺失数值的个数。 SUM 求和 VAR 方差 STD 标准差 STDERR 均值估计的标准误差,用STD/SQRT(N)计算。 CV 变异系数 RANGE 极差 CSS 离差平方和 USS 平方和 SKEWNESS 偏度 KURTOSIS 峰度,III:SAS过程初步,proc means data=sasuser.gpa; run;,SAS 系统 2010年09月15日
26、 星期三 下午12时19分15秒 11MEANS 过程变量 标签 N 均值 标准差 最小值 最大值-GPA College Grade Point Average 224 4.6352232 0.7793949 2.1200000 6.0000000HSM High School Math Average 224 8.3214286 1.6387367 2.0000000 10.0000000HSS High School Science Average 224 8.0892857 1.6996627 3.0000000 10.0000000HSE High School English Av
27、erage 224 8.0937500 1.5078736 3.0000000 10.0000000SATM Math SAT Score 224 595.2857143 86.4014437 300.0000000 800.0000000SATV Verbal SAT Score 224 504.5491071 92.6104591 285.0000000 760.0000000-,proc univariate data=sasuser.gpa; var gpa; run;,SAS 系统 2010年09月15日 星期三 下午12时19分15秒 12UNIVARIATE 过程变量: GPA
28、(College Grade Point Average)矩N 224 权重总和 224均值 4.63522321 观测总和 1038.29标准差 0.77939493 方差 0.60745645偏度 -0.6895022 峰度 0.36481671未校平方和 4948.1687 校正平方和 135.462789变异系数 16.8146148 标准误差均值 0.05207551基本统计测度位置 变异性均值 4.635223 标准差 0.77939中位数 4.740000 方差 0.60746众数 5.060000 极差 3.88000四分位极差 1.05000,位置检验: Mu0=0检验 -统
29、计量- -P 值-学生 t t 89.00965 Pr |t| = |M| = |S| .0001分位数(定义 5)分位数 估计值100% 最大值 6.00099% 6.00095% 5.73090% 5.61075% Q3 5.21550% 中位数 4.74025% Q1 4.16510% 3.6605% 3.1101% 2.4000% 最小值 2.120极值观测-最小值- -最大值-值 观测 值 观测2.12 159 5.9 932.39 75 6.0 482.40 13 6.0 492.58 221 6.0 1412.65 87 6.0 188,proc corr data=sasuse
30、r.gpa;var hsm hss hse; run;,SAS 系统 2010年09月15日 星期三 下午12时19分15秒 14CORR 过程3 变量: HSM HSS HSE简单统计量 变量 N 均值 标准差 总和 最小值 最大值 标签 HSM 224 8.32143 1.63874 1864 2.00000 10.00000 High School Math Average HSS 224 8.08929 1.69966 1812 3.00000 10.00000 High School Science Average HSE 224 8.09375 1.50787 1813 3.000
31、00 10.00000 High School English Average Pearson 相关系数, N = 224当 H0: Rho=0 时,Prob |r|HSM HSS HSEHSM 1.00000 0.57569 0.44689High School Math Average .0001 .0001HSS 0.57569 1.00000 0.57937High School Science Average .0001 .0001HSE 0.44689 0.57937 1.00000High School English Average .0001 .0001,proc gplot
32、 data=sasuser.gpa;symbol i=none v=star;plot satv*satm; run;,proc gplot data=sasuser.air;symbol i=join v=star;plot co*datetime; run;,proc gplot data=sasuser.air;symbol1 i=join v=none line=1 ;symbol2 i=join v=none line=2 ;plot co*datetime=1 so2*datetime=2 / overlay; run;,proc gplot data=sasuser.gpa;sy
33、mbol i=rlcli95 v=star;plot satv*satm; run;,proc gchart data=sasuser.gpa;vbar gpa; run; proc gchart data=sasuser.gpa;vbar gpa / group=sex; run;,proc gchart data=sasuser.gpa;pie sex; run;,data dnorm2;a=2;a2=sqrt(a);r=0.5;det=a*(1-r*r);do x=-3 to 3 by 0.1;do y=-3*a2 to 3*a2 by 0.1*a2;z=1/(2*3.1415926*d
34、et)*exp(-0.5/det*(a*x*x + y*y - 2*r*a2*x*y);output;end;end;keep x y z; run;proc g3d data=dnorm2;plot x*y=z; run;,IV:SAS的基本统计功能,对单个变量,我们可能需要作正态性检验、两独立样本均值相等的检验、成对样本均值相等的检验。,data ex2_1;input x ;low=2.3;dis=0.3;z=x-mod(x-low,dis); cards; 2.35 4.21 3.32 5.35 4.17 4.13 2.78 4.26 3.58 4.34 4.84 4.41 4.78
35、3.95 3.92 3.58 3.66 4.28 3.26 3.50 2.70 4.61 4.75 2.91 3.91 4.59 4.19 2.68 4.52 4.91 3.18 3.68 4.83 3.87 3.95 3.91 4.15 4.55 4.80 3.41 4.12 3.95 5.08 4.53 3.92 3.58 5.35 3.84 3.60 3.51 4.06 3.07 3.55 4.23 3.57 4.83 3.52 3.84 4.50 3.96 4.50 3.27 4.52 3.19 4.59 3.75 3.98 4.13 4.26 3.63 3.87 5.71 3.30
36、4.73 4.17 5.13 3.78 4.57 3.80 3.93 3.78 3.99 4.48 4.28 4.06 5.26 5.25 3.98 5.03 3.51 3.86 3.02 3.70 4.33 3.29 3.25 4.15 4.36 4.95 3.00 3.26 ; proc freq;tables z; run;,SAS 系统 2010年09月15日 星期三 下午03时38分48秒 1FREQ 过程累积 累积z 频数 百分比 频数 百分比-2.3 1 0.99 1 0.992.6 3 2.97 4 3.962.9 6 5.94 10 9.903.2 8 7.92 18 17.
37、823.5 17 16.83 35 34.653.8 20 19.80 55 54.464.1 17 16.83 72 71.294.4 12 11.88 84 83.174.7 9 8.91 93 92.085 5 4.95 98 97.035.3 2 1.98 100 99.015.6 1 0.99 101 100.00,proc means data=ex2_1n mean std stderr clm; var x; run;,SAS 系统 2010年09月15日 星期三 下午03时38分48秒 2MEANS 过程分析变量:x均值下限95% 均值上限95%N 均值 标准差 标准误差 均
38、值的置信限 均值的置信限-101 4.0295050 0.6592183 0.0655947 3.8993670 4.1596429-,proc univariate data=ex2_1;var x; run;,SAS 系统 2010年09月15日 星期三 下午03时38分48秒 3UNIVARIATE 过程变量: x矩N 101 权重总和 101均值 4.02950495 观测总和 406.98标准差 0.65921829 方差 0.43456875偏度 0.04113715 峰度 -0.1503689未校平方和 1683.3848 校正平方和 43.4568752变异系数 16.3597
39、836 标准误差均值 0.06559467,基本统计测度位置 变异性均值 4.029505 标准差 0.65922中位数 3.980000 方差 0.43457众数 3.580000 极差 3.36000四分位极差 0.92000NOTE: 显示的众数是 2 个众数的最小值(计数为 3)。位置检验: Mu0=0检验 -统计量- -P 值-学生 t t 61.43037 Pr |t| = |M| = |S| .0001,分位数(定义 5)分位数 估计值100% 最大值 5.7199% 5.3595% 5.1390% 4.8475% Q3 4.5050% 中位数 3.9825% Q1 3.5810
40、% 3.255% 3.001% 2.680% 最小值 2.35极值观测-最小值- -最大值-值 观测 值 观测2.35 1 5.25 872.68 28 5.26 862.70 21 5.35 42.78 7 5.35 472.91 24 5.71 72,proc univariate data=ex2_1;var x;output out=pct pctlpre=p pctlpts=2.5 97.5; run; proc print data=pct; run;,SAS 系统 2010年09月15日 星期三 下午03时38分48秒 5Obs p2_5 p97_51 2.7 5.35,proc
41、 univariate data=ex2_1 Normal plot;var x; run;,正态性检验检验 -统计量- -P 值-Shapiro-Wilk W 0.996093 Pr D 0.1500Cramer-von Mises W-Sq 0.023939 Pr W-Sq 0.2500Anderson-Darling A-Sq 0.141791 Pr A-Sq 0.2500,茎 叶 # 盒形图 正态概率图56 1 1 | 5.7+ +*54 | | +52 5655 4 | | *+50 383 3 | | *+48 033415 6 | | *46 1358 4 | | *44 18002235799 11 +-+ | *42 136688346 9 | | | *40 6623355779 10 | + | | +*38 044677112235556889 18 *-* | *36 03680588 8 | | | *34 1011257888 10 +-+ | *32 5667902 7 | | *30 02789 5 | | *28 1 1 | | +*+26 808 3 | | *+*24 | | +22 5 1 | 2.3+*-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+茎.叶乘以 10*-1 -2 -1 0 +1 +2,