图 28为身高的正态QQ图,其中画出了班上19个学生的19个点,每个点的纵坐标为变量值,而横坐标为该值的累计百分比频数对应的标准正态分位数。比如,身高最低的一个为51.3,其累计百分比频数(即51.3的经验分布函数值)为5.3%,即身高小于51.3的占5.3%,而标准正态分布的0.053分位数为-1.84570,所以此点的横坐标即-1.84570。如果身高服从正态分布,QQ图的散点应大致在一条直线附近变动。QQ图的各种不同形状能够反映出变量分布的偏斜情况和重、轻尾情况。在QQ图中也可以选观测、刷亮等。画出QQ图后选主菜单中的“Curves | QQ Ref Line ”可以为图中散点画一条拟合直线。
图 28的身高的QQ图显示身高基本服从正态分布。如果我们画SASUSER.GPA中GPA分数的QQ 图(图 30):
就可以看到GPA的分布呈现左偏的情况。这是因为,在QQ图的左下端,GPA散点的走向比正态(图中直线)偏下,说明GPA分布的左尾比正态长;在QQ图的右上端,GPA散点的走向比正态偏右下,说明GPA分布的右尾比正态短,即分布左偏。作为验证,可以看一看的图 29直方图:
图 32给出了与正态相比左偏、右偏、轻尾、重尾的分布的QQ图的典型模式:
除了可以作正态分布QQ图外,还可以作对数正态、指数分布、威布尔分布的QQ图。对数正态要指定参数Sigma,威布尔分布要指定形状参数C。
SAS/INSIGHT为研究一维变量分布除画直方图外还提供了两类 分布密度估计:参数估计和非参数估计。参数估计可以拟合正态、对数正态、指数、威布尔分布密度。非参数估计使用核估计。
比如,为了估计身高的正态密度并把密度曲线叠加在直方图上,选“Curves | Parametric Density ”,弹出对话框图 31:
指定正态分布且方法为用样本估计分布密度参数。按OK后作出的图见图 33:
为了作身高密度的核估计图,选“Curves | Kernel Density”,弹出一个对话框,可以选三种核函数:正态核、三角核、二次函数核,可以自动拟合最优的密度估计(方法为AMISE )或者自己指定平滑参数C。见图 33。 作了密度曲线图后在图形下面将出现显示密度估计主要参数的表格,见图 34:
单击其中的曲线标志可以加亮显示图中的曲线。对参数密度估计,给出了估计的参数,比如正态的均值、方差;对核估计,给出了核函数类型,及平滑参数值。有些参数旁边有一个滑块,可以手工选择参数的值。比如拖动核估计中的平滑参数,此参数变小时估计的曲线变粗糙,变大时曲线变光滑。
在“Curves”菜单中还提供了对样本经验分布函数的估计。选“Curves | Empirical CDF ”即绘制样本经验分布函数。选“Curves | CDF Confidence Band”并选一个置信限可以在经验分布函数两边画分布函数的置信限,见图 35:
用经验分布函数估计分布函数相当于用直方图估计分布密度。分布函数也可以用参数分布函数(如正态分布)来估计。选“Curves | Parametric CDF”并选分布类型可以画出估计的分布函数。图 35中的光滑曲线即用正态分布估计身高的分布函数。
SAS/INSIGHT还可以进行分布检验,可以检验数据是否来自某一类分布(参数未知),或检验数据是否来自某一特定分布(参数已知)。选“Analyze | Test for Distribution”,并选择是检验正态、对数正态、指数、威布尔分布中哪一个,选正态后,得到图 36的结果。
它给出了分布类型、估计的分布均值、标准差,及Kolmogorov D统计量的值,并给出了检验H0 :样本来自正态分布的检验p值(Prob > D)为>.15,说明检验结果不显著,不能否定正态假设。
如果要检验数据是否来自某一特定分布,选“Curves | Test for a Specific Distribution ”,并指定分布类型、分布参数,可以计算检验的Kolmogorov D统计量及相应p值。图 37是检验身高是否标准正态分布的结果,可以看出p值为0.0001高度显著,应该否定数据来自标准正态的假设。
说明:在SAS中,统计假设检验的结果一般用检验的p值给出。这与我们习惯的做法稍有不同,以单正态总体的均值检验为例。假设我们要检验SASUSER.CLASS中学生的身高是否均值为零(这当然不可能,我们为简单起见用这种假设),设总体服从
,要检验的零假设为
,水平0.05,统计量
使用t统计量 ,一般我们用的假设检验方法定否定域为W={|t|>C} ,其中C为n-1自由度t分布的双侧0.05分位数(Pr{|t|>C}=0.05),当用样本算出的t统计量的值(如t=A)落入否定域时(|A|>C)否定零假设。在SAS中不需要这样指定否定域,它可以先用样本计算出t统计量的值(A),如果这个A绝对值很大就否定零假设,t统计量绝对值值是不是很大可以用这样一个p=Pr{|t|>|A|}来衡量,p是一个0到1之间的数值,显然|A| 越大,p越小。p<0.05与|A|>C是等价的。所以,如果p小于0.05,就否定零假设,称检验结果是显著的。否则不否定零假设。对SASUSER.CLASS中HEIGHT变量,在其分布窗口中选菜单“Tables | Location Tests”并从弹出的对换框中选中t检验,要检验的均值为0,得到的结果见图 38。计算得到的t统计量值为A=52.9971,p值为Pr{|t|>52.9971}小于等于0.0001 。因p值小于0.05所以结果是否定零假设,结论是身高均值不为零。
SAS/INSIGHT还提供了曲线拟合、回归、logistic回归、Poisson回归、相关分析、主成分分析等高等统计功能。
SAS语言构成
SAS语句
SAS语言程序由数据步和过程步组成。数据步用来生成数据集、计算、整理数据,过程步用来对数据进行分析、报告。SAS语言的基本单位是语句,每个SAS语句一般由一个关键字(如DATA,PROC,INPUT,CARDS,BY)开头,包含SAS名字、特殊字符、运算符等,以分号结束。
SAS关键字是用于SAS语句开头的特殊单词,SAS语句除了赋值、累加、注释、空语句以外都以关键字开头。SAS名字在SAS程序中标识各种SAS成分,如变量、数据集、数据库,等等。SAS 名字由1到8个字母、数字、下划线组成,第一个字符必须是字母或下划线。SAS关键字和SAS 名字都不分大小写。
SAS表达式
SAS数据步程序中的计算用表达式完成。表达式把常量、变量、函数调用用运算符、括号连接起来得到一个计算结果。
SAS常量主要有数值型、字符型两种,并且还提供了用于表达日期、时间的数据类型。例如
? ? ? ? ?
数值型:12,-7.5,2.5E-10
字符型:'Beijing',\,\李明\日期型:'13JUL1998'd 时间型:'14:20't
日期时间型:'13JUL1998:14:20:32'dt
数值型常数可以用整数、定点实数、科学计数法实数表示。字符型常数为两边用单撇号或两边用双撇号包围的若干字符。日期型常数是在表示日期的字符串后加一个字母d(大小写均可),中间没有空格。时间型常数是在表示时间的字符串后加一个字母t。日期时间型常数在表示日期时间的字符串后加字母dt。 因为SAS是一种数据处理语言,而实际数据中经常会遇到缺失值,比如没有观测到数值,被访问人不肯回答,等等。SAS中用一个单独的小数点来表示缺失值常量。
SAS变量的基本类型有两种:数值型和字符型。日期、时间等变量存为数值型。SAS的数值型变量可以存储任意整数、定点实数、浮点实数,一般不关心其区别。数值型变量在数据集中的存贮一般使用8个字节。SAS的字符型变量缺省的长度是8个字符,但是如果在INPUT 语句中输入字符型变量时指定了长度则不受此限制。可以用LENGTH语句直接指定变量长度,LENGTH 语句一般应出现在变量定义之前,格式为: LENGTH 变量名 $ 长度; 例如
LENGTH name $ 20;
SAS运算符包括算术、比较、逻辑等运算符。
算术运算符为 + - * / **,运算优先级按通常的优先规则。 比较运算符用于比较常量、变量的值大小、相等,包括
= EQ
^= NE
> GT
< LT
>= GE
<= LE
IN
其中EQ等名字和=等特殊字符是同一运算符的等价写法。比较运算符得到“真”或“假” 的结果,主要用于需要条件的分支、循环等语句中。运算符IN是一个SAS特有的比较运算符,用来检查某个变量的取值是否在一个给定列表中,比如
prov in ('Beijing', 'Tianjin', 'Shanghai', 'Chongqing') 可以判断变量prov的取值是否为四个直辖市之一。