*
SAS基础3
SAS程序的基本结构
Sas程序的基本结构
环境设置语句
数个完成单个动作的操作步
过程步(proc step)
利用建立的数据集完成统计分析任务
数据步(data step)
创建和修改用于统计分析的数据集
SAS过程步的一般形式
格式:
PROC 过程名 [DATA=数据集名] [选项];
<过程语句>/<选项>;
[VAR 变量序列;]
[WHERE 条件表达式...;]
[BY 变量序列;]
RUN;
DATA=输入数据集也是可选的,如果缺省的话使用最近生成的数据集
过程步一般以RUN 语句结束,也可以省略RUN语句而在下一个过程步或数据步的开始处结束
方括号里的语句均可以省略,在这时该过程按最通常的情况来处理,即:
处理最新建立的SAS数据集
处理所有的变量(或对一个计算过程来说处理全部数值变量)
一次处理整个数据集而不是某个子集
Proc print;
run;
Proc print (obs=10);
run
1. SAS过程步中常用语句
VAR
BY
CLASS
WEIGHT
FREQ
ID
FORMAT
LABEL
OUTPUT
TITLE
FOOTNOTE
MISSING
(1) VAR语句
格式:
VAR 变量名1 变量名2 … 变量n;
功能:
指定要列出的变量并指定顺序
说明:
省略该语句时,对所有变量做统计计算
例.
Proc print ;
Var x;
Run;
(2) BY语句
格式:
BY [DESCENDING] 变量…[NOTSORTED];
功能:
分组处理数据
指定一个或几个分组变量,根据这些分组变量值把观测分组,然后对每一组观测分别进行本过程指定的分析
说明:
BY语句总是首先与SORT过程一起使用,先用SORT过程对数据集排序以指定的变量值来分组处理某数据集
例
proc sort data=c9501;
by sex;
run;
proc print data=c9501;
by sex;
run;
(3 ) CLASS语句
格式:
CLASS 变量表;
功能:
用于定义分类变量
说明:
分类变量只有少数几个离散值或不连续值,字符型或数值型均可
作用类似于BY语句,但不需事先排序
(4) WHERE 语句
格式:
WHERE 条件表达式;
功能:
选择SAS数据集中的部分观测,用该语句所规定符合某种条件的子集
例:WHERE x>50 and y>50
说明:
省略该语句时,对整个数据集做统计计算
Where选项与其他选项的生效顺序
选项 Firstos=和obs=;
Where选项;
创建by组
(5 ) WEIGHT语句
格式:
WEIGHT 变量;
功能:
在过程中规定一个数值变量,并以它的值作为观测值的权重
该变量的值应大于0。若变量值<0或缺失,假定该值为0
(6) FREQ 语句
格式:
FREQ 变量;
功能:
规定一个数值变量,它的值表示数据集中某观测值实际出现的次数
该变量的值应为正整数。若变量值<1或缺失,相应的观测不参加计算统计量。若这个值不是正整数,则取整数部分
说明:
数据集中观测值总数等于FREQ变量的和
例:
DATA B;
INPUT SEX $ AGE NUMBER;
CARDS ;
F 20 10
F 22 23
M 21 19
M 22 16
PROC MEANS ;
VAR AGE ;
PROC MEANS ;
FREQ NUMBER ;
VAR AGE ;
PROC MEANS ;
WEIGHT NUMBER ;
VAR AGE ;
RUN;
简单算术平均
加权算术平均
加权算术平均
(7) OUTPUT语句
语句格式:
OUTPUT OUT=数据集名 [统计关键字=变量名]
功能:
将过程结果输出到一个新SAS数据集
说明:
数据步中OUTPUT语句的功能是将当前的观测值写入正建立的数据集中
统计关键字指明在新的数据集中想要的统计项, =变量名给包含这些统计项的变量起名
例
proc means data=;
var height weight;
output out=out_m mean=h_m w_m ;
run;
说明
例中,过程MEANS计算变量HEIGHT和 WEIGHT的均值统计量
关键词MEAN=规定输出数据集OUT_M中的变量为H_M 和W_M;
H_M和W_M分别表示变量HEIGHT和 WEIGHT的均值。
(8) FORMAT 语句
格式:
FORMAT 变量 [格式] …;
功能:
用于在过程中设置变量输出格式
说明:
使用宽度值、小数点和小数位数的格式
PROC PRINT DATA=A;
FORMAT H F $5. ;
格式名以小数点结束
FORMAT SEX SEXFMT.;
FORMAT 语句可以使用的输出格式:
SAS系统的输出格式;(13章)
PROC FORMAT过程自定义的输出格式;
DATA EMPLO;
INPUT NAME $ T DATE7.;
CARDS;
zhongli 15jan84
liuwei 03mar85
proc print;
FORMAT T WORDDATE.;
run;
例
(9) LABEL 语句
格式:
LABEL 变量1=’标签’ 变量2=’标签’;变量;
功能:
给变量指定临时表去,以便把变量名的含义更明确地在输出中表示出来。
说明:
当在一个过程步中使用LABEL语句时,仅在该过程步期间该标记与该变量相联系;
数据步中使用时,标记与变量的联系一直存在所建的数据集中。
注意
在PRINT过程中必须用PRINT语句中的LABEL或SPLIT=选项才能被显示;
(10) TITLE语句
语句:
TITLE[n] [‘标题内容’];
功能: 规定打印到SAS输出文件上的标题
说明:
n:规定标题所在行,1~10,缺省值为1
标题内容长度不超过当前规定的行长
缺省的标题是“The SAS System”
规定的标题在以后的输出中都有效,直至取消这一标题或为该行定义其它的标题为止
TITLE语句
取消所有现存标题: TITLE;
取消第n行和它后面行的标题:TITLEn;
给某个过程步的输出加上标题,语句放在前一步的RUN语句之后和下一个DATA、PROC或RUN语句之前的任何地方
例1:PROC PRINT ;
TITLE 'TITLE FOR FIRST PROC';
PROC MEANS;
例2:PROC PRINT DATA = A;
RUN ;
TITLE 'TITLE FOR SECOND PROC';
PROC MEANS ;
(11) FOOTNOTE语句
语句:
FOOTNOTE[n][‘脚注内容’];
功能:在输出页的底部打印一些脚注信息
说明:
n:规定脚注所在相对行,1~10,缺省值为1。带有最高行号的脚注出现在最底部
脚注内容长度不超过当前规定的行长
规定的脚注内容在以后的输出中都有效,直至用语句:FOOTNOTE;取消已给出的脚注
例:
PROC PRINT DATA= A;
TITLE1 'THIS IS ';
TITLE2 'A DATASET';
FOOTNOTE1 '------------';
FOOTNOTE2 'END';
RUN;
2 SAS服务过程
SAS 服务过程不直接给出统计值,常被用于准备或整理统计资料
SORT
PRINT
FORMAT
TRANSPOSE:转置
STANDARD:标准化
(1)SORT过程
格式:
PROC SORT [DATA = <数据集>] [OUT = <输出数据集名>];
[BY [DESCENDING]<变量列表>;]
RUN;
功能:
SORT过程可以把数据集按某一个或若干个变量的次序进行排序.
在SAS过程中用BY语句可以把观测分类进行处理,但在此之前需要先用SORT过程排序
说明:
其中DATA选项指定的数据集为输入数据集,OUT选项指定的数据集为输出数据集。若省略OUT选项,则输出数据集与输出数据集为同一个数据集。
可以按几个变量排序,比如,要按男、女性别排序,并在男生、女生内部按平均分由高到低排序,可以这样作:
proc sort data=c2010;
by sex descending avg; run;
(2) PRINT 过程
格式:
PROC PRINT [ DATA=数据集 ] [ NOOBS ][ LABEL ] ;
VAR 变量表;
Label语句;
WHERE 表达式;
SUM 变量表;
BY 变量;
说明:
NOOBS选项 表示不输出观测序号
为了对列标题使用中文,可以在过程内用LABEL语句给变量指定标签,同时在PROC PRINT语句中加LABEL选项
可以用SUM语句计算某个变量的总计(总和)
用BY语句与SUM语句就可以既计算总和也计算分组小计
例:有一关于两个不同地区在职人员与退休人员年平均收入与消费水平的调查, 要求:分在职与不在职打印出每一地区两种人员收入与消费的总和
DATA A;
INPUT NAME $15. D $ W $ EARN EXP @;
CARDS;
LILING A 1 5500 4700
LIUHONG B 2 4600 4000
XUHONG A 2 4000 4500
WAHAN B 1 4000 4500
;
PROC SORT;
BY D W;
PROC PRINT;
BY D W;
SUM EARN EXP;
RUN;
(3) FORMAT过程
功能:
对字符或数值变量定义一个用户所需的输入和输出格式(用户自定义格式)
用途:
DATA步中FORMAT、PUT语句;过程步中FORMAT语句中变量均可以使用该格式
值输出格式:
PROC FORMAT [选择项];
VALUE [$] 格式名 范围1=“被输出的值1”
范围2=“被输出的值2” …;
说明
[选择项]主要为: LIBRARY=库逻辑名,指定自定义格式的存储位置
格式名的命名规则与逻辑库名相同,最后一个字符不能是数字
定义输入格式 用INVALUE语句
字符型格式
VALUE语句
VALUE语句定义一种值输出格式,可把某变量的值按所定义的格式输出
可把数值变成字符或把字符转变成另一字符
在VALUE语句中,格式可以赋予为:
单个数字:
VALUE ABC 1=‘A’ 2=‘B’ 3=‘C’ ;
字符:
VALUE $SEXFMT ‘1’=‘MALE’
‘2’=‘FEMALE’
OTHER=MISCODED’ ;
VALUE语句
字符串:
VALUE $ GRADE 'A'='GOOD‘
'B'-'D'='FAIR'
‘F'-‘H'='SEE INSTRUCTOR'
OTHER='MISCODED';
数字范围:
VALUE B LOW-10='-10‘
10<-20='-20‘
20<-HIGH='20+';
format的使用步骤:
第一步:用户用PROC FORMAT创建format
第二步:应用所创建的format
DATA SCORE;
LENGTH NAME $ 12;
INPUT NAME SEX GROUP $ T1-T3 @@ ;
S=SUM(OF T1-T3) ;
CARDS;
WANGDONG 1 1 90 70 60 XUEPING 2 2 85 95 88
ZHOUHUA 1 1 77 84 69 HEYAN 1 2 95 78 88
SUNHONG 2 3 89 97 87 ZHAOBIN 2 3 66 98 86
PROC FORMAT ;
VALUE SEXFMT 1='MALE' 2='FEMALE';
PROC PRINT DATA=SCORE;
FORMAT SEX SEXFMT. ;
RUN ;
例
例:每一VALUE语句可定义一种格式,在一个FORMAT过程中,可以使用多个VALUE语句定义多个格式
PROC FORMAT;
VALUE $SEXFMT '1'='FEMALE' '2'='MALE';
VALUE AGEFMT LOW-20='-20' 20<-45='-45'
45<-HIGH='45+';
DATA A;
INPUT NAME $ SEX $ AGE V @@;
FORMAT AGE AGEFMT. SEX $SEXFMT. ;
CARDS;
wangdong 1 24 4300 xueping 2 18 4500
……;
PROC MEANS;
CLASS SEX AGE;
VAR V;
RUN;
在生成数据集的DATA步中也可以用FORMAT语句规定变量的输出格式;
在数据步中规定的变量属性是附属于数据集本身的, 是永久的;
在过程步中规定的变量属性(标签、输出格式等)只用于此过程的本次运行。
上机作业
请将某校的学生情况表进行如下操作
(1)生成SAS数据集,要求姓名的长度是15,性别的类型是字符型长度2. 出生年月长度DATE7.
(2)建立一个新的变量avg,计算每个学生的平均成绩
(3)FORMAT过程设定输出下列格式
性别 ’1’=’女’,‘2’=‘男’
Avg <60=‘不及格’
60=< Avg <80='一般‘
80 =< Avg<90='良好‘
90 =< Avg='优秀';
(4)设置打印输出的Title 和FOOTNOTE,并按班级打印输出
62
88
95
201203
15jan93
2
LUKELIAN
70
88
95
201201
20may93
1
ANDYHUNG
80
75
67
201203
14jan94
2
HUANGSHAN
50
78
95
201202
22mar93
1
HEYAN
82
84
77
201201
25nov92
1
ZHOUHUA
90
95
85
201202
25dec92
2
XUEPING
82
70
90
201201
18oct93
1
WANGDONG
90
98
66
201203
16jan94
2
ZHAOBIN
87
97
89
201203
15jan93
2
SUNHONG
体育
数学
英语
班级
出生年月
性别
姓名
SAS数据集中变量的类型
SAS数据集中变量的类型:
字符型变量━━以ASCII码存放,最大长度不超过200字符。
数值型变量━━以浮点数存放,长度为8个字节。
SAS数据集的矩阵式结构要求每个观测的每个变量值都必须存在,如果某个数据值缺失,系统会自动补上一个缺失值
数字型变量,这个值显示为一个点“.”;
字符型变量,这个值显示为空格。
输入和输出格式
输入和输出格式
SAS数据集的数据值的内部存放格式并不一定与该数据值的输入和输出格式一致,这取决于SAS的两个重要功能:
输入格式(Informats)
输入格式指示SAS系统如何读入数据
输出格式(Formats)
输出格式指示SAS系统如何输出数据
一般形式如下:
输入格式:<$>informat<w>.<d>
输出格式:<$>format<w>.<d>
说明:
$符号指示这是个字符输入输出格式;
Informat是一个输入格式的名字,format是一个输出格式的名字;
w是宽度值,对许多输入输出格式这个值是输入输出数据的列数;
d在数值输入输出格式中是小数部分的长度;
点”.”是所有输入输出格式中必须包含的分隔符,作为名字的一部分;
如果在格式中省略w和d值,SAS系统使用缺省的值;
规定的输出格式宽度太窄小时,对字符格式截去右边的字符,对数值格式转换为BESTw.的格式。
日期时间值在SAS系统中的存储
日期,时间,日期时间型的数据均以与0值的差值数据存入计算机
1960年1月1日和该日期之间的天数
例如
1962年3月8日被存储为797(即366+365+31+28+7)1958年10月1日被存储为-457(即-365-31-30-31)。SAS系统存储时间值为:-457
从午夜开始到此刻的秒数
例如8:18存储为29880(8×60×60+18×60)
一个日期时间值存储为1960年1月1日午夜到这个日期时间之间的秒数
例如1962年3月8日8:18存储为6915960(797×24×360+29880)
几种常用的输入输出格式
标准的数值数据型格式
月份、日、年形式的日期值(mmddyy),例如,w=8时,01/18/97; w=6时,011897
MMDDYYw.
日、月份、年形式的日期值(ddmmmyy),例如w=7时,18jan97; w=9时,18jan1997
DATEw.
含有美元号$、逗号和小数点的数值数据型格式
含有逗号、小数点的数值数据型格式
读含有空格的字符数据,保留字符串开始的空格
CharW.
标准的字符数据型格式
$w.
描述
主要的输入输出格式名
数据格式变换举例
设有一个SAS数据集survey,其中字符变量Name,一个数字变量INCOME和一个日期变量BDATE
针对不同的采样数据格式,对变量采用对应的输入格式
得到在SAS系统中实际存储的数据值
然后根据报表的输出要求,选定一种输出格式,将实际存储的数据值按所选输出格式显示结果,见图所示。
Bill Andy
Name $10.
Bill Andy
Name $10.
Bill Andy
Bill Andy
Name $char9.
Bill Andy
Name $char9.
Bill Andy
08MAR1962
Bdate date9.
797
Bdate mmddyy8.
03/08/62
030862
Bdate mmddyy6.
797
Bdate date7.
08MAR62
$12,
Income
Income
$12,
12,
Income
Income
12,
Income
Income
显示结果
变量和输出格式→
实际存储数据值→
变量和输入格式→
输入数据→
描述统计分析
常见的数据统计描述量及意义
(1)表示分布平均水平和集中位置的特征量:
均值:数据的平均值—Mean
算术均值、几何均值、调和均值
众数:观测值中出现最频繁的数值—Mode
中位数:观测值排序中处于中间位置的值Median
百分位数:中位数的推广— Percentile
以Px表示,它将总体或样本的全部观察值分成两个部分,其x%中有个观察值小于,(100-)%个观察值大于
描述统计分析
(2)表示分布离散程度的特征量
标准差
Std
方差
Var
变异系数
CV
标准误差
STDEER
全距(range)也称极差是一种离散指标,是最大与最小观察值
之差
。
描述统计分析
四分位数间距(interquartile range)是一种离散指标,它是第3个四分位数与第1个四分位数之差
(3)表示形状的特征量:偏度和峰度
偏度( Skewness ):
偏度主要用于判断分布形状是否对称:
若g1=0,则对称;
若g1>0,则分布右偏(正偏);
若g1<0,则分布左偏(负偏)。
描述统计分析
峰度(Kurtosis):
峰度是以正态分布为比较标准。对于正态分布,
g2=0;
若g2>0,表示变量分布比正态分布更集中,分布呈尖峰状态,平均数的代表性较好;
若g2<0,表示变量分布比正态分布更分散,分布呈平坦峰,平均数的代表性较差。
描述统计分析
正态性检验
判断总体分布是否为正态分布的检验
主要方法:
小样本的W检验Wilk-Shapiro(威尔克斯-夏皮罗)的检验
大样本的D (Dagustino)检验
原假设为总体服从正态分布
总体均值的估计和t检验
3、 基础统计过程
MEANS(均值过程)
计算数据集中数值变量的描述统计量
UNIVARIATE(单变量过程)
计算数据集中数值变量的描述统计量,绘图
TABULATE(制表过程)
计算并打印输出报表
FREQ(频数过程)
计算频数分布,作多维列联表
作图过程
CHART:用条形图等表示频数等统计量
PLOT :描绘变量的散点图
(1) MEANS 过程(均值过程)
格式:
PROC MEANS [选择项列表];
VAR 变量表(待分析的数值变量) ;
BY 变量表(分组变量) ;
CLASS 变量表(分组变量) ;
FREQ 变量(数值变量,用以表示相应记录出现的频数) ;
WEIGHT 变量(数值变量,用以表示相应记录的权重系数) ;
OUTPUT <out=数据集名> <统计量关键字=自定义变量名>
功能:
对数据集中的数值变量计算并输出简单的描述性统计量,并可进行t检验
PROC MEANS [options] [statistic-keywords]
[options]
DATA= SAS数据集
过程分析处理的数据集的名字,若省略,则用最近操作的SAS数据集;
NOPRINT:不打印输出
MAXDEC=n 指定打印结果的小数位数(0~8),缺省为2
VARDEF=除数 指明用于方差计算的除数,缺省值是VARDEF=DF(N-1)。
PROC MEANS [选择项列表]
Statistic list 统计量列表:
在MEANS过程中指出你需要计算哪些统计量
MEANS过程可以计算的统计量有21种,可用下列关键词表示:
N、MAEN、MAX、MIN、STD、STDERR、SUM、VAR、USS、CSS、NMISS、RANGE、T、PRT、SUMWGT、CV、SKEWNESS、KURTOSIS、CLM、LCLM、UCLM
缺省时为:N、MIN、MAX、MEAN、STD
PROC MEANS [选择项列表]
*
Data student;
input class sex $ age weight height ;
cards;
1 f 15 46 156
1 f 14 41 149
1 m 13 48 155
1 m 14 38 150
2 m 16 55 165
2 f 17 50 160
2 f 16 60 165
2 m 17 65 175
3 f 18 65 165
3 f 17 58 160
3 m 18 70 180
3 m 17 68 176
;
Run;
MEANS过程例1:
观察以下几组程序
Proc means data= student;
var age weight height ;
Run;
Proc means data= student maxdec=3;
var age weight height ;
by sex;
Run;
proc means data= student maxdec=3;
var age weight height ;
class sex;
run;
proc means data= student;
var age weight height ;
output out=sta n=num mean=a1 a2 a3 std=b1 b2 b3 max=c1 c2 c3;
run;
proc means data= student;
var weight height ;
FREQ age;
run;
proc means data= student;
var weight height ;
Weight age;
run;
MEANS过程例2:
DATA SCORE;
LENGTH NAME $ 12;
INPUT NAME SEX GROUP $ T1-T3 @@;
S=SUM( OF T1-T3);
CARDS;
SUNHONG 2 3 89 97 87
ZHAOBIN 2 3 66 98 86
WANGDONG 1 1 90 70 60
XUEPING 2 2 85 95 88
ZHOUHUA 1 1 77 84 69
HEYAN 1 2 95 78 88
HUANGSHAN 2 3 67 75 76
proc means data=score maxdec=3 ;
var t1 t2 t3;
class group;
title 'statistics with class variable';
proc sort data=score;by group;
proc means maxdec=3 ;
by group;
var t1 t2 t3;
title 'statistics with by variable';
Run;
*
上机作业
国泰安下载数据包含股票交易行情数据,进行如下操作:
(1)计算股票的市场平均年个股回报率及其相应的标准差,并将结果生成一个新的数据集;
(2)以年个股总市值为权重计算市场平均年个股回报率;并打印输出;
(3)将年个股总市值分为5组,分别计算各组的平均年个股回报率;并打印输出。
(2)UNIVARIATE过程(单变量分析)
UNIVARIATE过程
该过程除可以完成类似MEANS过程的基本统计量的计算外,它还可以计算以下统计量:
描述变量极端值的情况;
计算分位数,如中位数;
生成若干个描述变量的分布图;
生成频率表;
对数据进行正态性检验;
对数据进行t检验和秩和检验。
*
UNIVARIATE过程
格式:
PROC UNIVARIATE [选项];
Var 变量名称(待分析的数值变量)
By 变量名称(分组变量);
Class 变量名称(分类变量);
Freq变量名称(数值变量,用以表示相应记录出现的频数);
Weight变量名称(数值变量,用以表示相应记录的权重系数);
Histogram 变量名称/选项列表(对变量绘制直方图/添加不同类型的拟合图形);
Output <out=数据集名> <统计量关键字=自定义变量名> ;
说明:
可以多次使用 OUTPUT 语句但其他六语句只能出现一次
PROC UNIVARIATE 指令后的语句可以按任何顺序出现
必须根据 VAR 指令内所列举的变量顺序对应
若选用 OUTPUT 指令则不可省略 VAR 指令
PROC UNIVARIATE[选项]
PROC UNIVARIATE [options];
与MEANS过程相同用法的选项略去说明):
DATA=SAS-data-set
FREQ:要求生成包括变量值、频数、百分数和累计频数 的频率 表
NORMAL:要求计算关于变量服从正态分布的假设检验 统计量,这个检验统计量相应的概率也被输出
PLOT:要求生成茎叶图、盒形图和正态概率图
PCTLDEF=value:规定计算百分位数的方法,值取为1,2,3,4, 5。缺省时为5。
OUTPUT语句
OUTPUT语句的用法与MEANS过程中类似,下面指出两点不同之处:
output-statistics选项中可用的关键词除了在MEANS过程中已介绍过的以外,还有:
NOBS,MEDIAN,MODE,P1,P5,P10,P90,P95,P99,MSIGN(符号统计量),PROBN(正态性检验统计量对应的概率),SIGNRANK,NORMAL,Q1,Q3,QRANGE(四分位差)。
*
output-statistics选项
PCTLPTS=percentiles:规定在该过程中不能自动提供,而用户又希望计算的百分位数。例如要计算第33分位数值,必须选择此项
PCTLPRE=prefix-names:规定要求计算的百分位数的输出变量名的前缀
PCTLNAME=suffix-names:规定要求计算的百分位数的输出变量名的后缀
以上三个选项往往结合起来使用,如:
Proc univariate data= Student ;
var age weight height ;
output pctlpts=
pctlpre=a w h
pctlname=p33_3 p66_7;
Run;
*
例:利用前面建立的数据集student来看看Univariate过程的输出结果
Data student;
input class sex $ age
weight height ;
cards;
1 f 15 46 156
1 f 14 41 149
1 m 13 48 155
2 m 16 55 165
2 f 17 50 160
2 f 16 60 165
2 m 17 65 175
3 f 18 65 165
3 m 18 70 180
3 m 17 68 176
;
Run;
Proc univariate data= student;
var height ;
Run;
Proc univariate data= student normal;
var height ;
Run;
Proc univariate data= student plot;
var height ;
Run;
*
*
(1)当样本量小于2000时,应选用Shapiro-Wilks的W检验。W值愈接近于1,说明该变量愈接近正态分布;
(2)当样本量大于2000时,应选用Kolmogorov-Smirnov正态性检验。D值越大,P值越小,说明该变量愈不服从正态分布;D值越小,P值越大,说明该变量愈服从正态分布。
Proc univariate data= student normal;
var height ;
Run;
Normal
*
为什么要进行正态检验?
正态分布是许多统计方法的理论基础。t检验、方差分析、相关和回归分析等多种统计方法均要求分析的变量服从正态分布
许多统计方法虽然不要求分析指标服从正态分布,但相应的统计量在大样本时近似正态分布,因而大样本时这些统计推断方法也是以正态分布为理论基础的
如果变量不服从正态分布,那么以正态分布为假设所获得的结论就不可靠
Plot
Proc univariate data= student plot;
var height ;
Run;
获得三个图:
1、茎叶图, 2、箱线图/盒形图, 3、正态概率图
茎叶图
茎叶图,类似直方图
保留了原始数据
茎叶图有三列数:
(1)最左边的一列表示茎,也就是变化不 大的位数;
(2)中间的是数组中的变化位,它是按照一定的间隔将数组中的每个变化的数一一列出来,象一条枝上抽出的叶子一样,所以人们形象地叫它茎叶图;
(3)右边的一列数为统计数,表示该组的单位个数。
茎 叶 #
18 0 1
17 56 2
17 0 1
16 555 3
16 0002 4
15 56 2
15 0 1
14 9 1
茎.叶乘以10**+1
箱线图
箱线图,也称盒形图,由一个箱子(或盒子)和两条线段组成
其绘制的方法是,求出总体的五个数量特征值:极大值、极小值、中位数、上四分位数、下四分位数,连接上四分位数和下四分位数画出箱体,再将两个极值点与箱体相连
中位数
上四分位数
下四分位数
最大值
最小值
正态概率图
正态概率图,又叫正态分布
纵轴为实测值标度,横轴按标准正态分布U值标度
图中的“+”号标记标准正态u值的参考直线,“*”号标记实际数据点
如果样本来自正态总体,则观测值数据“*”构成的直线与参考直线基本重合,表明观测值数据服从正态分布
正太概率图
+ * +++++
| * *++++++
| *+++++
| **+*++
| * **+*+
| *+*+++
| ++*+++
+ ++*++
+----+----+----+----+----+----+----+----+----+----+
-2 -1 0 +1 +2
Frep
Proc univariate data= student freq;
var height ;
Run;
生成包括变量值、频数、百分数和累计频数的频率表
*
上机作业
对包含上市公司首发的数据集进行如下操作:
(1)画出股票的上市首日的市场回报率正态概率图,并判断它是否服从正态分布?
(2)剔除股票首日个股回报率和上市首日市盈率在1%和99%分位数之外的观测值,将结果生成新的数据集(test);
(3)用Univariate过程对test数据集中的股票的上市首日的市场回报率进行描述性统计分析,将结果生成新的数据集(stat),要求该数据集包含均值、标准差、中位数、上10分位数和下10分位数等统计量。
(3)TABULATE(制表过程)
格式:
PROC TABULATE [选项列表];
var 变量名称(待分析的数值变量,统计量列入相应的表单元格);
by 变量名称(分组变量);
class 变量名称(分类变量);
freq变量名称(数值变量,用以表示相应记录出现的频数)
weight变量名称(数值变量,用以表示相应记录的权重系数)
table <<页维>,<行维>,<列维>></表格选项> ;
RUN;
功能:
用分类报表的形式输出描述统计量
制表过程既有频数统计和常用描述统计的计算功能,又有很强的用表格展现数据的功能
Table 页维,行维,列维/选项
在默认的情况下它将输出分析变量的求和,还可以输出分析变量的其他统计量,例如
N、NMISS、MEAN、STD、MIN、MAX、RANGE、SUM、USS、CSS、STDERR、CV、T、PRT、VAR、SUMWGT、PCTN、PCTSUM
同一维度可以是单个变量或变量的组合,多个变量的排列组合形式如下:
proc tabulate data=Stu;
class sex;
var amount;
table sex, amount;
run;
如果不是要计算总和,而是计算其它统计量,可以用“分析变量名*统计量名” 的形式
proc tabulate data=Stu;
class sex;
var math chinese;
table sex all, (math chinese)*(mean std);
KEYLABEL语句
格式:
KEYLABEL 关键字=’标签’;
功能
指定各统计量的标签
proc tabulate data=sasuser.score;
class sex;
var math chinese;
table sex all,(math chinese )*(mean var);
keylabel mean=’均值‘ var=’方差’ all=’总计’;
label sex=’性别’math=’数学’chinese=’语文’;
run;
可信限(上下界值)
clm
未校正的离均差平方和
uss
校正的离均差平方和
css
加权值总计
sumwgt
总计
sum
全距
range
最小值
min
最大值
max
变异系数
cv
众数
mode
中位数
median
方差
var
标准误
stderr
标准差
std
均数
mean
缺失数据记录数
nmiss
有效数据记录数
n
所代表的含义
关键字
可信限下侧界值
lclm
可信限上侧界值
uclm
偏度
skew(skewness)
峰度
kurt(kurtosis)
第九十九百分位数
p99
第九十五百分位数
p95
第九十百分位数
p90
第十百分位数
p10
第五百分位数
p5
第一百分位数
p1
四分位数间距
qrange
第三四分位数
q3
第一四分位数
q1
上述t统计量对应的概率值
probt
分布位置假设检验之t统计量
t
SAS中可以计算的描述性统计量关键字及其含义
(4) FREQ 过程(频数过程)
格式:
PROC FREQ [选择项列表];
TABLES 请求式…[/选择项];
WEIGHT 变量;
BY 变量;
OUTPUT [选择项];
功能:
对离散变量,一是描述分析,产生频数表和列联表,可简洁地描述数据
二是统计推断,产生各种统计量,可分析变量间的关系
PROC FREQ [选择项列表]
DATA=SAS数据集;
FORMCHAR(1,2,7)=字符串
规定用来构造列联表单元的轮廓线和分割线的字符
(1)垂直线(2)水平线(3)水平线与垂直交叉线。
缺省, FORMCHAR(1,2,7)=‘|-+’
PAGE 每页输出一张
ORDER=FREQ|DATA|INTERNAL|
FORMATTED
TABELS 请求式 </选择项>
请求式 (request-list):
请求式由一个或多个由“*”号联连起来的变量组成
一维(单向)频数表:由一个变量名产生
例: TABELS X;
二维列联表:用星号“*”连接两个变量(行*列)
例: TABLES A * B;
n维列联表:变量*变量*行*列
例: TABLES C*A * B;C为分层,A为行,B为列的3维列联表
按照C的不同取值可形成A * B的不同列联表
例: TABLES C*(A B)等价于 TABLES C*A C*B;
FREQ过程可有多个TABLES语句,每个TABLES语句也可以有多个请求式
没有tables语句,FREQ对数据集中的每个变量都生成一个单向频数表
TABELS 请求式 </选择项>
选择项
一般选择项:
MISSING:将缺失值 作为非缺失值,在百分数计算和其他统计计算时包括缺项值
LIST:不是用列联表而是用列表格式打印二维或多维表格。但当需要统计检验和联合测量时,不能使用LIST选择项
Out:创建一个包含变量值和频数的输出数据集
请求统计分析的选择项
CHISQ: 要求卡方(χ2 )检验和基于卡方的有关测量
Fisher :要求对大于2*2的表进行Fisher精确检验
ALPHA=p确定置信区间的水平是100(1-p),默认 p=
请求增加表格信息及选择项
EXPECTED:请求打印在独立(或齐性)假设下的期望格频数
DEVIATION:请求打印出各格的格频数和期望值的偏差
CELLCHI2:请求打印出每一格对总χ2 (卡方)统计的贡 献
……
禁止打印选择项
No print/col/row/percent/freq/cum/warn
……
如果没有任何说明选项(options),FREQ对tables语句中规定的变量的每个水平将计算频数、累计频数、占总频数的百分数及累计百分数
TABELS 请求式 </选择项>
proc freq data=c9501;
tables sex;
run;
例
DATA A;
INPUT A B @@;
CARDS;
1 2 2 1 . 2 . . 1 1 2 1
;
PROC FREQ ;
TABLES A*B;
TITLE '2-WAY CONTINGENCY TABLE';
PROC FREQ ORDER=DATA;
TABLES A*B /LIST;
TITLE '2-WAY FREQUENCY TABLE, ORDER=DATA';
RUN;
每一个格子中四个数据的含义
行变量
列变量
例: SCORE为含学生成绩的数据集,用VFMT.格式把学生的平均成绩分成A、B、C三等,由FREQ过程产生每一分数段的学生人数和占总数的百分数等信息
PROC FORMAT ;
VALUE VFMT LOW-<80='C‘
80-<90='B‘
90-HIGH='A‘ ;
DATA B;
SET SCORE;
V=MEAN(OF T1-T3) ;
PROC FREQ DATA=B ;
FORMAT V VFMT. ;
TABLES V/out=stufreq;
RUN
利用格式对数据分组
*
统计分组的相关概念
根据统计研究的目的和客观现象的内在特点,按某个标志或几个标志把被研究的总体划分为若干个不同性质的组,称为统计分组
总体的变异性是统计分组的客观依据
统计分组的优劣是决定整个统计研究成败的关键,它直接关系到统计分析的质量
分组的性质来看:兼有分和合双重含义
统计分组的步骤
组距式分组
确定数据的全距(R):R=xmax-xmin
(即最大变量值与最小变量值之差)
确定组限、组距和组数
组限分为上限和下限,上限是各组的最大变量值,下限是各组的最小变量值
各组上限与下限之差称为该组的组距
组数是指某个变量数列划分为多少个组
说明:
组数的多少与组距的大小成反比关系,组距越大,则可分的组就越少
*
组数的确定
组数的确定
与组距大小成反比
以下是斯特杰斯(Sturges)经验公式:
n=1+ , (n:组数;N:总体单位数)
d=R/n=(Xmax-Xmin)/n
(n为组数,d为组距,R为全距),为便于计算,组距宜取5或10的倍数
采用组距分组时,需要遵循“不重不漏”的原则,“上组限不在内”的规定解决不重的问题
根据上述公式,可以得出如下的组数参考标准:
分组组数参考表
N
15-24
25-44
45-89
90-179
180-359
n
5
6
7
8
9
例频数表的编制
某年某地149名成人脉博资料(次/分)的测定数据如下:试作频数表
58 64 68 72 81 81 68 63 72 94 79 65 94 79 83 71 58 75 65 68 68 83 91 68 73 72 56 53 60 70 68 65 60 79 62 73 88 80 70 63 83 73 68 67 65 103 74 64 70 94 79 57 53 75 83 58 69 67 86 79 69 81 75 75 74 57 68 68 71 77 70 95 54 68 66 48 75 70 89 104 79 59 71 67 95 77 68 59 60 72 97 77 86 77 87 75 55 83 68 75 57 93 74 56 79 72 66 68 79 61 60 85 79 58 97 68 79 72 71 88 54 71 94 68 60 83 74 80 71 71 52 63 73 78 86 70 84 82 72 61 68 88 94 72 84 75 83 96 81
(1)建立SAS数据集
Data a;
Input x @@;
Cards;
58 64 68 72 81 81 68 63 72 94 79 65 94 79 83 71 58 75 65 68 68 83 91 68 73 72 56 53 60 70 68 65 60 79 62 73 88 80 70 63 83 73 68 67 65 103 74 64 70 94 79 57 53 75 83 58 69 67 86 79 69 81 75 75 74 57 68 68 71 77 70 95 54 68 66 48 75 70 89 104 79 59 71 67 95 77 68 59 60 72 97 77 86 77 87 75 55 83 68 75 57 93 74 56 79 72 66 68 79 61 60 85 79 58 97 68 79 72 71 88 54 71 94 68 60 83 74 80 71 71 52 63 73 78 86 70 84 82 72 61 68 88 94 72 84 75 83 96 81
;
Run;
(2)对数据进行分组
利用表达式对数据进行分组
Data b;
Set a;
grp=int((x-45)/5)*5+45;
Run;
确定起始分组和组距:
组距:5( d=(108-48)/8=7,便于计算,组距宜取5或10的倍数)
起始分组:45 - 50(第一组的下限应低于最小变量值,最后一组的上限应高于最大变量值 )
grp=int((x-45)/5)*5+45; 语句将每一个脉搏值进行分组
例如脉搏82,被分入
grp=int((82-45)/5)*5+45=int()*5+45=80,即80-85组
提示
还可以用前面学过的格式实现频数分组
int()取整函数
int()=1
int()=5
int()=0
(3)对分组变量进行频数分析
对分组变量grp进行频数分析
Proc freq data=b;
Tables grp;
Run;
产生以下结果:
(4)作频数图
如果要将上面的频数表以频数图的形式表达出来,可以使用如下程序:
Proc gchart data=b; /*调用gchart过程*/
vbar x /space=0 /*生成直方图,直条间无空隙*/
midpoints= to by 5; /*直条对应的组中值*/
Run;
关于gchart过程,感兴趣的同学可以在SAS命令框里入“help gchart”并回车得到帮助
上机作业
尼尔森家庭技术报告( )报道家用技术,它的个人使用者年龄在12岁及以上。
下列数据是一周时间内5 0人的样本使用个人计算机的小时数:
汇总数据,通过构建:
a. 频数分布
b. 相对频数分布
例 统计推断
某医院用抗凝剂与不用抗凝剂治疗急性心肌梗塞的疗效比较,结果如下表:
组别
生存
死亡
合计
不用抗凝剂
74
51
125
用抗凝剂
56
19
75
合计
130
70
200
请比较两种治疗方法的生存情况是否相同?
首先建立需要的SAS数据集
DATA a;
INPUT g1 g2 f@@;
CARDS;
1 1 74 1 2 51
2 1 56 2 2 19
;
PROC FREQ DATA=a;
TABLES g1*g2/chisq Fisher;
WEIGHT f;
RUN;
调用FREQ过程
g1*g2要求生成二维表,
chisq选项要求做卡方检验,
fisher选项要求做fisher精确检验(注意对于四格表该选项可以省略);
由于是频数资料,因此 加上weight语句并给出频数变量f
如果有超过1/4格子的理论频数小于5,SAS会打印警告
对于四格表,chisq选项自动计算Fisher‘s Exact Test,当大于2×2表时,则需要指定Fisher选项强制进行该检验。本例双侧检验的p=.
卡方独立性检验:应用于大样本>40
Fisher:各种情形下皆可
上机作业
对数据集交易日汇总如下操作:
按交易所统计融资买入额和融券卖出量的均值和标准差,用多维表格显示;
请统计当日发生融资的股票数量和当日发生融券的股票数量的频数分布,进行卡方(χ2 )检验,打印出每一格对总χ2 (卡方)统计的贡献,并打印出各格的格频数和期望值的偏差。
SAS/GRAPH绘图
对统计资料图形化处理就形成统计图,运用统计图形能直观地描述统计分布的特征和变量之间的关系。
统计图有多种表现形式:
1、直方图
2、饼图
3、折线图
4、曲线图
在SAS/GRAPH 模块的支持下,SAS可以作散点图、曲线图、直方图、饼图、三维曲面图( G3D )、等高线图( GCONTOUR )、地图,等等
Chart(或gchart)与plot(或gplot)
SAS统计制图过程均可以实现对样本分布特征的图形表示,一般情况下常用gchart和gplot过程
gchart过程可以绘制出的图形主要有条形图(包括横条和竖条)、圆图、环形图和星形图等;
如汇总信息,即在某种分类下分析变量的某些统计量
gplot过程通常用一个记录中的两个变量值表示点的坐标来绘制图形,如散点图和线图等。
如时序图等
Proc gplot 作图过程
格式:
PROC GPLOT [ DATA=<数据集名> [选项] ] ;
SYMBOLn [选项] ;定义符号、添加趋势线、定义点和线的颜色
bubble <纵坐标变量*横坐标变量[=泡尺寸变量名]...>(变量值以泡的大小表示),三者均应为数值变量
bubble2泡状散点图表达式;在原图基础上重叠绘制第二幅散点图
plot <纵坐标变量*横坐标变量[= n/分类变量名]...> / [选项]; 指定绘图变量和选项
Plot2点状散点图表达式; 在原图基础上重叠绘制第二幅散点图
BY <变量名列>; 按该变量取值分层绘制,要求数据集已按该变量排序
run;
说明:
SYMBOL语句是一个全程语句,指定绘图用的连线方式(i)、颜色(C)、散点符号(V)、大小(H),等等,不带编号的相当于SYMBOL1
功能:
输出散点图和曲线图
GPLOT和PLOT语句
GPLOT[选项]
UNIFORM 要求用BY语句分组打印的散点图的坐标刻度相同,便于比较
VTOH=数值 指定纵横坐标的比例
PLOT[…=n]/[选项]
N为分层变量
表示所做的散点图按指定变量的取值分层,默认按不同颜色来区分
语句选项
OVERLAY 同一语句做的图重叠在同一个坐标系中显示
CAXIS=颜色 定义坐标轴的颜色
CTEXT=颜色 定义坐标轴文本的颜色
SYMBOL语句
SYMBOL[选项]
VALUE=符号, 可用的符号及相应名称有:
+ plus ★ star ■ square ◆ diamond ▲ triangle …
H图形符号的高度
I=连线方式
JOIN 用直线连接
SPLINE 用光滑的曲线连接
NONE 不连接
NEEDLE 向横坐标画垂线
RL 添加回归直线
WIDTH=宽度 定义数据点和连线的宽度
COLOR=颜色 定义数据点和连线的颜色
Goptions:设置图形选项
散点图
proc gplot data=;
symbol i=none v=star;
plot satv*satm;
曲线图
绘制连线,只要在SYMBOL语句中指定I=JOIN
proc gplot data=;
symbol i=JOIN v=star;
plot satv*satm;
多维散点图和曲线图
为了在图中作几条曲线,只要在PLOT语句中指定多个因变量(自变量一般应为同一个),并使用OVERLAY选项,如:
proc gplot data=;
symbol1 i=join v=none line=1 ;
symbol2 i=join v=none line=2 ;
plot co*datetime=1 so2*datetime=2 / overlay;
run;
在PLOT语句中用了“纵轴*横轴= n”的格式来指定曲线使用哪一个SYMBOL语句的规定来画, n对应于SYMBOL语句的序号
分类变量产生多维图
proc gplot data= citytemp;
plot faren*month=city / hminor=0;
run;
分组语句产生多个图
proc gplot data= citytemp;
plot faren*month / hminor=0;
by city;
run;
例10名20岁男青年身高(cm),前臂长(cm),体重( kg))如下,请绘出散点图
身 高
170 ,173,160,155,173,168,178,183,180,165
前臂长
45,42,44,41,47,50,47,46,49,43
体重
65,68,50,45,66,64,72,75,80,65
Data a;
input Height forearm weight city $ ;
cards;
170 45 65 beijing
173 42 68 beijing
160 44 50 shanghai
155 41 45 shanghai
173 41 66 shanghai
188 50 72 beijing
178 47 70 shanghai
183 46 75 beijing
180 49 80 beijing
165 43 65 shanghai
;
Run;
proc gplot data=a;
plot forearm*height =1 weight*height =2/overlay legend=legend1
vref=40 to 90 by 10 lvref=2
haxis=axis1 hminor=4
vaxis=axis2 vminor=1;
run;
quit;
proc gplot data=a;
plot (forearm weight)*height =city /overlay
vref=40 to 90 by 10 lvref=2
haxis=axis1 hminor=4
vaxis=axis2 vminor=1;
run;
quit;
goptions reset=global gunit=pct border cback=white
colors=(black blue green pink red)
ftitle=swissb ftext=swiss htitle=6 htext=4;
title1 'the heigh ,forearm and weight of boys ';
footnote1 h=3 j=l ' Source: 1997 World health organization ' j=r 'GR21N06 ';
symbol1 color=red
interpol=none
value=dot
height=3;
symbol2 font=marker value=C
color=blue
interpol=None
height=2;
axis1 order=(155 to 185 by 5) offset=(2,2)
label=none
major=(height=2) minor=(height=1)
width=3;
axis2 order=(0 to 90 by 10) offset=(0,0)
label=none
major=(height=2) minor=(height=1)
width=3;
legend1 label=none
shape=symbol(4,2)
position=(top center inside)
mode=share;
*
gchart过程 图表过程
格式:
PROC GCHART [ DATA=<数据集名> [选项] ] ; 指定要分析的数据集名及一些选项
图形关键字 <变量名列> / [选项] ; 绘出条形图
AXISn [选项]; 控制坐标轴的形状和颜色
BY <变量名列>; 按该变量取值分层绘制,要求数据集已按该变量排序
Run;
说明:
每个图形关键字对应一种图形类型,控制图形类型及图形要素
功能:
数据的汇总信息,即在某种分类下分析变量的某些统计量
输出柱状图和饼图等
竖立的三维条形图
vbar3d
星形图
star
竖立的条形图
vbar
环形图
donut
水平的三维条形图
hbar3d
三维圆图
pie3d
水平的条形图
hbar
圆图
pie
方块图
block
绘制的图形类型
图形关键字
绘制的图形类型
图形关键字
*
图形关键字 <变量名列> / [选项]
图形关键字后的变量名用以指定进行图形描述时的分类/作图变量
可以是数值型(此时以各组的组中值为分组的标志),也可以是字符型
其后的选项比较重要的有
Sumvar=分析变量名(数值变量),指定要进行统计计算的分析变量
Type=统计量关键字,表示图形对分析变量(sumvar所指定的变量)的哪一种统计量进行描述
比如频数(freq)、累计频数(cfreq )、均数(mean)、总计(sum)、百分比(percent)、累积百分比( Cpercent)、频数百分比(percentage)等;
没有规定分析变量,默认为freq;规定分析变量,默认为sum
Leval=n 如果绘图变量是连续变量,用该选项产生有N个组段的图形
Group=分组变量 要求产生以分组变量的值分组的并排图
Subgroup=亚组变量 要求每个图形内部再按亚组变量的值分块
Midpoint=值列 字符型依次列举每个值,数值型列举每类的中点值
Caxis /Ctext =颜色 指定坐标轴或坐标轴文本的颜色
类似
tabulate
直方图
要绘制中GPA的分布直方图,只要用:
proc gchart data=;
vbar gpa;
run;
绘图用的变量用VBAR语句给出
分组直方图
按性别分组绘制两个直方图并排放置,可以用如下程序:
proc gchart data=;
vbar gpa / group=sex;
run;
*
例:下表为某大学160名正常成年女子2006年体检资料中的血清甘油三酯的测量结果(mmol/L)
试以直方图来表示上述资料的分布特征
*
第一步:建立数据集
data test;
input x @@;
cards;
……………
;
Run;
*
第二步,进行初步的统计分析,确定分组的个数
Proc MEANS data=test;
var x;
Run;
所有160个观测值中,最大的为,最小的为,如果以为组距,将所有观测值归入13个组。
如果根据前面的斯特杰斯经验公式,则应将所有观测值归入8组
The MEANS 过程
分析变量 : X
N 均值 标准差 最小值 最小值
160
第三步,画图
proc gchart data=test;
vbar x/type=freq levels=13 inside=freq space=0 width=6;
run;
说明:
Vbar语句表示要做的是竖立的条形图,其后跟的是作图所要依据的分类变量,这里以变量x来做直方图
斜杠后的内容是对所做条形图进行控制的选项,本段程序所涉及的各选项的含义和功能见下表
直方图
Proc gchart data=test;
vbar x/type=freq levels=13 sumvar=x inside=freq space=0 width=6;
Run;
Proc gchart data=test;
vbar x/type=freq levels=13 sumvar=x inside=mean space=5 width=6;
Run;
Proc gchart data=test;
pie x/type=mean sumvar=x levels=5;
Run ;
*
例:
分组数据
下表是财政系问卷设计资料汇总
*
第一步,建立数据集
Data score;
input subject $ sex $ num1 num2;
Cards;
………
;
Run;
Data score;
set score;
label subject='专业' sex='性别' num1= '人数' num2='题量';
Run;
Group 语句
Proc gchart;
vbar subject/group=sex sumvar=num2 type=mean ;
run;
Num2表示题量
上述语句意思:
先按性别分(两)组
接着在每组中按专业进一步分(三)组
最后再将每组设计的题量的平均数列示出来
By 语句
Proc gchart;
vbar subject/ sumvar=num2 type=mean ;
by sex;
run;
上述语句将得到由by变量
定义的几个观测组分别画出的图表
Subgroup 语句
Proc gchart;
vbar subject/subgroup=sex type=freq ;
run;
上述语句意思是:
先按专业分(三)组,
接着在每组中按性别进一步分(两)组,
最后再将每组包含的单位数列示出来。
*
Block 语句
该语句列出用户想要画的块形图的变量
Proc gchart;
block sex/group=subject sumvar=num2 type=mean ;
run;
上机作业
对数据集交易日汇总如下操作:
用图显示各交易所的发生融资和融券的股票数量的时序图
用图按交易所显示每月融资买入额的均值
期中作业
*
对股票综合数据制图,要求:
(1)根据个人分析需要(须包括首发市场表现,股东获利,盈利能力,发展能力,行情等)选择适当的图形,并附以文字进行说明;
(2)图型类型要包含茎叶图、箱线图、直方图、曲线图、饼图;
(3)以word文档提交,文档中至少要出现6幅图。
DATA参数 指明所需处理的数据集名,请注意在这里它是一个参数而不是语句。
过程步语句一般以某一个关键字开头,比如VAR、BY、TABLES、WEIGHT等,语句中有一些有关说明,如果有选择项的话要写在斜杠后
VAR语句 如果只想分析某一个或几个特定的变量,则可用VAR语句指定它们。例如只想显示变量x的列表,
PROC
BY
CLASS
VAR
WEIGHT
FREQ
ID
FORMAT
LABEL
OUTPUT
TITLE
FOOTNOTE
OPTIONS
如果你需要分组处理数据,例如要按性别分组输出统计结果,你有两种选择,一是用不同的where语句将同一个程序步反复写几遍;另一种显然更酷的方法就是采用by语句。如上例我们想按不同的y值输出x值,则加入by语句如下
关键字=变量名”的方式指定了输出哪些结果(关键字是如MEANS过程中的MEAN,VAR,STD那样的要输出的结果名),等号后面的变量名指定了这些结果在输出数据集中叫什么名字。
应用FORMAT 语句的规则:
PPROC步中的输出格式只在PROC过程中有效,原来的输出格式仍保留在数据集中;
同时使用几个FORMAT语句时,最后一个FORMAT语句有效。
在生成数据集的DATA步中也可以用FORMAT语句规定变量的输出格式,用LABEL 语句规定变量的标签,用LENGTH语句规定变量的存贮长度,用ATTRIB语句同时规定变量的各属性。在数据步中规定的变量属性是附属于数据集本身的, 是永久的;在过程步中规定的变量属性(标签、输出格式等)只用于此过程的本次运行。
语句 informat语句事先给变量指定输入格式。
1.输入格式的语法格式 <$>informat<w>.<d> 说明: $ 代表字符型格式,该格式用于字符型变量,没有则表示数值型格式 informat 格式名称,可以是SAS系统的也可以是用户自定义的 w 代表输入格式的宽度,对于大多数格式是指在输入数据中所占的列数 d 代表小数点右边的位数,范围是0-31,如果是读取包含小数点的数值,则忽略d值 输入格式总是包含一个点(.),如果<w>.<d>省略,则informat之后需要紧跟一个点,即informat.
2.如何使用SAS输入格式? 有四种方法使用输入格式: ·在input语句中; ·用input函数、inputc函数以及inputn函数; ·在data步或proc步的informat语句中; ·在data步或proc步的attrib语句中 使用输入格式最简单的方法是在input语句中变量名后面使用输入格式,如, input @15 style $3. @21 price ; 也可以通过input函数来使用输入格式,input函数用输入格式来读取任意字符变量返回指定格式的值。因此input函数有一个额外的功能即转换类型,将字符变量转换为其他格式,如 TempCharacter=''; TemperatureNumber=input(TempCharacter,4.); 而inputc函数和inputn函数是专用于字符型和数值型的输入函数。
3.输入格式的类型 ·数据输入格式用于告诉SAS系统去读取数值数据到数值变量中; ·字符输入格式用于告诉SAS系统去读取字符数据到字符变量中; ·日期时间输入格式用于告诉SAS系统去读数据值到表示日期、时间和日期时间的变量中; ·列二进制输入格式用于告诉SAS系统读取列二进制数或多穿孔格式存储的数据; ·使用proc format扩展的用户自定义输入格式。
4.数值变量的格式 数值变量的输入格式有40种之多,这里只能对常用的一些格式做一些介绍,至于更详细准确的信息请查看帮助文件。 ·输入格式:读取标准数据 说明:其中w是给定的包括这个值域列数的宽度值; d 代表小数点右边的位数,范围是0-31,如果是读取包含小数点的数值,则忽略d值; 可以读取任何位置的数值,可以读取包含小数点和用科学计数法表示的值;数值的前面、中间或后面可以有空格,但是读取时会自动去掉空格。 如读取23,input x ;结果为 ; 带空格时,如读取2 3,input x 3.;结果为23; 读取,input x ; 结果是,有小数点的数据忽略d值,所以是而不是 注意这里是说有小数点就忽略d值,并不是有小数位才忽略d值,例如: 读取,input x ;结果为234000,而 读取234000,input x ;则结果为23400.
·输入格式:转换空格为0 格式恰恰是对格式的补充,读取数据时,将数值域中间或尾部的空格用0填充 如读取'34 ',input x 4.;结果为3400,而input x ;结果为340
·输入格式:移走数值中被嵌入的字符 输入格式将输入数值中被嵌入的字符(如逗号、空格、$、%、破折号和圆括号)移走,而且将带有圆括号的数值作为负数读取。 如读取(5,000);input x ;结果为-500; 这里的圆括号并不需要将数值括起来的一对括号,只要左边括号SAS就会将其当负数处理,如 用input x ;读取上面数据结果为-50; 输入格式移走被嵌入的字符可以是混合的,如 用input x comma7.读取(32-4,1结果为-3241;
·输入格式:读科学计数法数值 通常格式是不必要的,因为输入格式能够读取用E表示法的数值。
应用FORMAT 语句的规则:
PPROC步中的输出格式只在PROC过程中有效,原来的输出格式仍保留在数据集中;
同时使用几个FORMAT语句时,最后一个FORMAT语句有效。
FORMAT 语句可以使用的输出格式:
SAS系统的输出格式;
PROC FORMAT过程自定义的输出格式;
5.字符变量的格式 字符变量的输入格式总共有18种,常见的有$w.和$charw.,更多的字符输入格式请参看帮助文件。 ·$w.输入格式:读取标准字符数据 默认情况下,SAS读取字符数据的长度最多为8个字节,而要读取更长的字符数据则需要用到该格式,w值给出包括字符值的这个域的列数。$w.输入格式会自 动清除字符值开头的空格,也就是读取字符数据时会自动的左对齐。另外,如果读取的数据中仅仅包含空格和单独一个点,则SAS会将其转换为空格,因为它将一 个点看作缺失值;而多个点则按正常字符读取。 如用input name $7.; 读取‘? John ’结果为‘John ’;当格式中宽度比数据实际的宽度要宽时,则在后面填充空格, 如用input name $10.; 读取‘ John’结果为‘John ’; 用input name $3.; 读取‘ . ’结果为‘ ’;而 用input name $3.; 读取‘. .’则结果为‘. .’。
日期时间值在SAS中如何存储? SAS系统将日期时间值转换为数字来存储。 对于日期,从1960年1月1日开始,将这一天定为0,其他日期的数值为1960年1月1日和这个日期之间的天数,
使用SAS日期时间输入格式 SAS提供了28种之多日期、时间和日期时间的输入格式,以读取不同格式的日期时间值。下面是几种常用的格式,更多详细和准确的信息请参考SAS帮助文件。 ·DATEw. 读取ddmmmyy或ddmmmyyyy形式的日期值,其中mmm是月份英文单词的前三个字母,如15Oct84,15Oct1984或15-Oct-1984,如果省略w则默认是7个列宽,那就只能正确读取15Oct84,更宽的需要用户显性的指定w宽度 ·DDMMYYw. 读取ddmmyy形式的日期值,如151084,15/10/84,15-10-84或15 10 84等 ·MMDDYYw. 读取mmddyy形式的日期值 ·YYMMDDw. 读取yymmdd形式的日期值 ·TIMEw. 读取hh:mm:形式的时间值,如08:25: ·DATETIMEw. 读取ddmmmyyhh:mm:的日期时间值,如15Oct84:8:25:或15Oct1984/8:25:
语法格式 INFORMAT variable(s) <informat>; INFORMAT <variable(s)> <DEFAULT=default-informat>; 语句一用来分别指定各变量的输入格式 语句二用来指定默认的输入格式,注意,默认的输出格式仅在当前data步中有效,默认格式在数据集中与变量的联系不是永久性的。
,我们还可以在生成数据集的数据步中使用如上的label语句,结果数据集中的变量就有了标签,在过程步中可以直接使用而不需再次用label语句定义
每页输出结果上面有一行标题,内容为“The SAS System”。事实上,我们可以指定自己的标题来取代SAS缺省的标题。指定标题的TITLE语句的格式为:
TITLE语句是一个所谓的“全程” 语句,“全程”语句与一般语句不同,一般语句必须用在数据步或过程步内,作为数据步或过程步的一部分,而全程语句则既可以用在数据步和过程步内,又可以单 独使用(在数据步、过程步外部)使用。全程语句的作用一般有持续性,即:全程语句的效果将持续到退出SAS 系统或用另一个同样的全程语句来修改它。比如,我们在上面用TITLE语句指定了一个标题,那么,这个标题的作用将持续下去,虽然下一个过程没有用 TITLE语句指定标题它也会出现在下一个过程的输出中
title; 这时连缺省的“The SAS System”标题也没有了。
为了对列标题使用中文,可以在过程内用LABEL语句给变量指定标签,同时在PROC PRINT语句中加LABEL选项
注意:在PRINT过程中必须用PRINT语句中的LABEL或SPLIT=选项才能被显示;
DATA A;
INPUT NAME $15. D $ W $ EARN EXP @;
CARDS;
LILING A 1 5500 4700
LIUHONG B 2 4600 4000
XUHONG A 2 4000 4500
WAHAN B 1 4000 4500
;
PROC SORT;
BY D W;
PROC PRINT;
BY D W;
SUM EARN EXP;
RUN;
FORMAT过程可以设定数据的输出格式,对变量的不同值或不同范围的值设定不同的“标签”来显示,其语法格式如下:
其中格式名的命名规则与逻辑库名相同。
7.用户自定义格式 format过程用来对字符或数值变量定义用户自己的输入格式和输出格式。 为什么SAS有如此多的输入输出格式还要自定义格式,因为自定义格式可以读取和表现更加丰富的数据形式,满足用户的要求。也许SAS觉得已经足够丰富的输入输出格式还不够体现这门语言的特点,干脆由用户自己去定制好了。
语法格式 PROC FORMAT <option(s)>; EXCLUDE entry(s); INVALUE statement; PICTURE statement; SELECT entry(s); VALUE statement; 说明: LIBRARY=libref<.catalog>|LIB 用来指定自定义格式的保存位置,该选项缺省则保存在work临时库下;<.catalog>缺省则自动将保存名命名为formats;如果想将自定义的输入输出格式永久性的保存下来以便下次可以使用,则需要保存到永久库中。
规定的输出格式宽度太窄小时,对字符格式截去右边的字符,对数值格式转换为BESTw.的格式;
使用一个不协调的输出格式时,SAS系统首先试着使用其它类型的类似格式。如果行不通,将输出一个错误信息在SAS日志。
标准的数值数据型格式
测定每个观察单位某项指标值的大小,所得的资料称为计量资料(measurement data)又称测量资料,这类资料一般具有计量单位。计量资料的统计指标分成两大类:
表达计量资料集中位置的指标,用以描述观察值的平均水平,如算术均值、几何均值、调和均值、中位数、众数、百分位数。
表达计量资料变异的指标,又称离散指标,用以描述观察值间参差别不齐的程度,即离散度或称变异度,如全距、标准差、方差、标准误差、变异系数、四分位数间距等。
变异系数由于无量度单位,而且消除了原始资料的平均水平的影响,因此常用于比较量度单位不相同的指标或者平均水平相差悬殊的指标的变异程度
标准误差(standard error)是统计量的标准差。因为统计量是样本观察值的函数,一旦样本改变,统计量的取值也会随之改变。为了避免与样本观察值的标准差相混淆,在统计学上,把反映一群性质相同的统计量离散程度大小的量称为标准误差。从理论上来说,只要给出了一个统计量,就有其相应的标准误差。在参数估计中,用样本的统计量去估计参数时,统计量的标准误差越小,表示抽样误差小,统计量较稳定,与参数较接近。
VAR variables
规定要计算描述性统计量的数值变量及顺序。
若省略该句,则对除BY、CLASS,ID,FREQ,Weight语句中列出的变量之外所有数值变量计算描述性统计量。
BY variables;
使用BY语句可以用BY变量定义的观测组分别计算其相应的描述统计量。当使用BY语句时,要求输入数据集已按BY变量排序。
CLASS variables;
该语句和BY语句一样,可用CLASS变量定义的观测组分别计算其相应的描述统计量。不同点在于排序要求,CLASS语句不要求数据集事先已按CLASS变量排序。
Calss和By可以同时使用
Freq variable;
该语句指定一个数值型的变量,它的值表示输入数据集中相应观测出现的频数。该变量的值应为正整数。若变量值<1或缺失,相应的观测不参加计算统计量。若这个值不是正整数,则取整数部分。
Weight variable;
该语句规定一个数值型的变量,它的值表示相应观测的权数。该变量的值应大于0。若变量值<0或缺失,假定该值为0。
ID
指定某个变量作为观测标识
OUT=SAS-data-set:给出由MEANS过程产生的输出数据集的名字,若想创建一个永久数据集,则必须规定一个两级名字,缺省时,机器默认的数据集名为data1等。
Output-statistics:规定在新数据集中所要求的统计量,并规定存放这些统计量的变量名。给出由MEANS过程产生的输出数据集的名字,若想创建一个永久数据集,则必须规定一个两级名字,缺省时,机器默认的数据集名为data1等
Proc means 语句后的选项主要用来指定所要计算的统计量,默认情况下,Means过程会给出频数、均数、标准差、最大值和最小值等,其余统计量的计算均需要在选项中指定。class语句所指定的分组变量用来进行分组,而by语句所指定的分组变量是用来将数据分为若干个更小的样本,以便SAS分别在各小样本内进行各自独立的处理。freq语句和weight语句分别引导代表记录出现频数和权重系数的数值变量。var语句引导所要进行分析的所有变量的列表,SAS将对var语句所引导的所有变量分别进行描述性统计分析。
1)PROC MEANS语句
PROC MEANS [options] [statistic-keywords]
[options] :DATA=SAS data set,即用以说明过程分析处理的数据集的名字,若省略,则用最近操作的SAS数据集;
[statistic-keywords]:在MEANS过程中指出你需要计算哪些统计量。
Data student;
input class sex $ age weight height ;
cards;
1 f 15 46 156
1 f 14 41 149
1 m 13 48 155
1 m 14 38 150
2 m 16 55 165
2 f 17 50 160
2 f 16 60 165
2 m 17 65 175
3 f 18 65 165
3 f 17 58 160
3 m 18 70 180
3 m 17 68 176
;
Run;
DATA SCORE;
LENGTH NAME $ 12;
INPUT NAME SEX GROUP $ T1-T3 @@;
S=SUM( OF T1-T3);
CARDS;
SUNHONG 2 3 89 97 87
ZHAOBIN 2 3 66 98 86
WANGDONG 1 1 90 70 60
XUEPING 2 2 85 95 88
ZHOUHUA 1 1 77 84 69
HEYAN 1 2 95 78 88
HUANGSHAN 2 3 67 75 76
proc means data=score maxdec=3 ;
var t1 t2 t3;
class group;
title 'statistics with class variable';
proc sort data=score;by group;
proc means maxdec=3 ;
by group;
var t1 t2 t3;
title 'statistics with by variable';
Run;
所不同的是某些统计量只能在univariate过程中计算(如众数),以及univariate过程中所具有的绘图功能。histogram语句即用来指示SAS对其后所指定的变量绘制直方图,其后的选项用来指示SAS添加不同类型的拟合图形(如正态分布的分布密度曲线)。
指令 #2 VAR 变量名称串
此指令列举需要进行描述性统计分析的数值变量名称,若省略将对输入资料文件中所有数值变量进行分析,若选用 OUTPUT 指令
则不可省略 VAR 指令
指令 #3 BY 变量名称串
程序依据此指令所列举的变量将观测进行分组,然后对每组观测分别执行分析,选用此指令时资料文件内的数据必须先按照 BY 变量的值做由小到大的重新排列,这个步骤可由 PROC SORT 过程完成。
指令 #4 FREQ 变量名称
这个变量必须是一个数值变量,其值代表观察测重复出现的次数,若此变量的值含小数则取其整数部分若其值小于 1 则此观测将 被剔除在计算过程之外。
指令 #5 WEIGHT 变量名称
这个变量称为加权变量,用以说明所要分析的变量的权重是多大,其主要功用在于计算加权平均数、加权标准差、及加权变异 数。
注意:若选用了 WEIGHT 指令则 UNIVARIATE 程序将不计算偏度与峰度这两个统计值,这两个统计值将以缺失(.)表示,此外WEIGHT 指令对四分位数极端分数及观察体总数的计算并不发生任何作用(freq选项会对其有影响)。
指令 #6 ID 变量名称串
用来标示输出的变量。
指令 #7 OUTPUT OUT=统计值输出文件名称 统计值关键字符串=关键值变量
保存计算的N mean std等关键统计量
(1) OUT=统计值输出文件名称
存储要输出的关键统计的表名,省略此选项则 SAS 将以内设的命名方式自动给予 DATAn 的文件名 (如 DATA1 DATA2...) n 按输出文件产生的先后顺序由 1 逐次累加而成
(2) 统计值关键字符串
这些关键字代表要输出的统计值,首先说明要保存哪些统计值,然后对要存储的统计值给予变量名。
(1) DATA=输入资料文件名称
指明到底对那一个资料文件进行分析,若省略此选项则 SAS 会自动找出在本程序之前最后形成的资料文件并对它进行分析。
(2) NOPRINT
使用此选项分析结果将不在result里输出。
(3) PLOT
使用此选项UNIVARIATE 过程将产生三种图形:茎叶图 (Stem-And-Leaf Plot) 、平行条状图 (Horizontal Bar Chart)、盒状图 (Box Plot)、正态分布拟合图 (Normal Probability Plot)(参阅 Tukey 1977)。
(4) FREQ
使用此选项 UNIVARIATE 过程将对变量各个取值的频数及百分比进行分析
(5) NORMAL
此选项可用来要求 UNIVARIATE 过程检定分析的变量是否呈现正态分布并且输出其检验结果。
不常用选项:
(6) PCDLDEF={1/2/3/4/5}此选项是用来决定计算百分位数 (Percentiles)的方法
PCDLDEF=1 表示用第一种计算方法以此类推 ,若省略此选项则UNIVARIATE程序会自动采用用第四种计算方法。
(7) VARDEF={N/DF/WEIGHT (或 WGT) / WDF} 此选项决定计算变异数所用的分母
N 观察体总数
DF 观察体总数减去 1 这是本选项的内设值
WEIGHT (或 WGT) 加权后的观察体总数
WDF 上述 WEIGHT 值减去 1
统计值及对应含义 N 非缺失值个数 NMISS 缺失值个数 NOBS 观察体总数 MEAN 平均数 SUM 变量值的总和 STD 标准差 VAR 变异系数(标准误) SKEWNESS 偏度 KURTOSIS 峰度 SUMWT 所有观察体在 WEIGHT 变量上的总和 MAX 变量的最大值 MIN 变量的最小值 RANGE 最大值减去最小值所得的差 Q3 第三个四分位数 MEDIAN 中位数 (第 50 的百分位数) Q1 第一个四分位数 QRANGE Q3 减去 Q1 之差 P1 第 1 的百分位数 P5 第 5 的百分位数 P10 第 10 的百分位数 P90 第 90 的百分位数 P95 第 95 的百分位数 P99 第 99 的百分位数 MODE 众数如果有不只一个众数取最小值的那一个 SIGNRANK 等级符号检定法 (The Signed Rank Statistic Lehmann 1975) NORMAL 常态分配的检定 (Test Statistic for Normality)若观察体个数少于 51 则采用Shapiro-Wilk 的 W Statist
Data student;
input class sex $ age weight height ;
cards;
1 f 15 46 156
1 f 14 41 149
1 m 13 48 155
1 m 14 38 150
2 m 16 55 165
2 f 17 50 160
2 f 16 60 165
2 m 17 65 175
3 f 18 65 165
3 f 17 58 160
3 m 18 70 180
3 m 17 68 176
;
Run;
Proc univariate data= Student ;
var age weight height ;
output pctlpts=
pctlpre=a w h
pctlname=p33_3 p66_7;
Run;
Data student;
input class sex $ age
weight height ;
cards;
1 f 15 46 156
1 f 14 41 149
1 m 13 48 155
2 m 16 55 165
2 f 17 50 160
2 f 16 60 165
2 m 17 65 175
3 f 18 65 165
3 m 18 70 180
3 m 17 68 176
;
Run;
茎叶图,类似直方图,但又与直方图不同,它的思路是将数组的数按位数进行比较,将数大小基本不变或变化不大的位作为一个主杆(茎),将变化大的位的数作为分枝(叶),列在主杆的后面,这样就可以清楚地看到每个主杆后面的几个数,每个数具体是多少。
茎叶图是一个与直方图相类似的特殊工具,但又与直方图不同,茎叶图保留原始资料的资讯,直方图则失去原始资料的讯息。将茎叶图茎和叶逆时针方向旋转90度,实际上就是一个直方图,可以从中统计出次数,计算出各数据段的频率或百分比。从而可以看出分布是否与正态分布或单峰偏态分布逼近
tabulate过程和上述几个过程的格式也基本相似,相同的语句和选项也代表相同的含义。最大的不同也是tabulate过程中最为重要的是table语句,他用来定义表格的具体格式以及表格中所要包括的统计量。
统计量名包括N、NMISS、MEAN、STD、MIN、MAX、RANGE、SUM、USS、CSS、STDERR、CV 、T(检验均值为0的t统计量值)、PRT(t统计量的p值)、VAR、SUMWGT(权数变量的和)、PCTN (某类观测占总观测个数的百分比)、PCTSUM(某类观测的总和占全部总和的百分比)
在程序中可以看到对于处于同一个层次的变量,它们之间要用空格分隔开来例如math 和chinese,它们都是需要分析的变量mean 和var它们都是统计量,而对于行维或列维中的不同层次的名称要用*号连接例如math chinese 和mean var 它们同处于列维,但是层次不同应该用*号连接
注意:有时用TABULATE过程作表时表格线是一些乱码,这是SAS系统设置文件 中关于FORMCHAR的设置的问题。调入SAS系统的文件,把其中的所有以“-FORMCHAR ”开始的行都注释掉,只留下如下的行不注释:
-FORMCHAR |----|+|---+=|-/\<>*
FREQ过程可以用于两个目的:一是描述分析,产生频数表和列联表,可简洁地描述数据;二是统计推断,产生各种统计量,可分析变量间的关系。
各种形式的频数及一些检验统计量
PROC FREQ过程每一次只允许使用一个OUTPUT语句。当规定多个TABLES语句时,OUTPUT语句创建的数据集内容对应于最后那个TABLES语句,当一个TABLES语句中规定多个表时,OUTPUT创建的数据集内容对应于最后那个表
Out 只存入一个变量 的结果
如果 需要存多个,需要用多个tables语句
保持各组内,统计资料的一致性和组间资料的差异性,便于运用各种统计方法研究现象的数量表现和数量关系
统计分组必须遵循穷尽和互斥两条原则。穷尽原则就是总体中的每一个单位都有组可归,无一遗漏。互斥原则就是在特定的分组标志下,总体中的任何一个单位只能归属于某一组,而不能同时归属于几个组。
分组,应注意如下两个问题:
首先,分组时各组数量界限的确定必须能反映事物质的差别——体现量变到质变的转化。
其次,应根据被研究的现象总体的数量特征,采用适当的分组形式,确定相宜的组距、组限——主要解决分多少组的问题。
为解决“不重”的问题,统计分组时习惯上规定“上组限不在内”,即当相邻两组的上下限重叠时,恰好等于某一组上限的变量值不算在本组内,而计算在下一组内
在组距分组中,如果全部数据中的最大值和最小值与其他数据相差悬殊,为避免出现空白组(即没有变量值的组)或个别极端值被漏掉,第一组和最后一组可以采取 “××以下”及“××以上”这样的开口组。开口组通常以相邻组的组距作为其组距。例如,在上面的50个数据中,假定将最小值改为94,最大值改为160, 采用上面的分组就会出现“空白组”,这时可采用“开口组”,如表:
52 19
39 3
是表中最基本的数据,因此上表资料又被称之为四格表资料
卡方检验:卡方检验的统计量是卡方值,它是每个格子实际频数A与理论频数T差值平方与理论频数之比的累计 和。每个格子中的理论频数T是在假定两组的发癌率相等(均等于两组合计的发癌率)的情况下计算出来的,如第一行第一列的理论频数为 71*91/113=,故卡方值越大,说明实际频数与理论频数的差别越明显,两组发癌率不同的可能性越大 .
四格表资料的卡方检验用于进行两个率或两个构成比的比较。
1. 专用公式:
若四格表资料四个格子的频数分别为a,b,c,d,则四格表资料卡方检验的卡方值=n(ad-bc)^2/(a+b)(c+d)(a+c)(b+d),
自由度v=(行数-1)(列数-1)
2. 应用条件:
要求样本含量应大于40且每个格子中的理论频数不应小于5。当样本含量大于40但理论频数有小于5的情况时卡方值需要校正,当样本含量小于40时只能用确切概率法计算概率。
SAS统计制图过程均可以实现对样本分布特征的图形表示,一般情况下可以使用的有chart过程、plot过程、gchart过程和gplot过程
前两个和后两个只有一个字母“g”(代表graph)的差别,其实它们之间(只差一个字母g的过程之间)的统计描述功能是相同的,区别仅在于绘制出的图形的复杂和美观程度
此外,还有一些较为复杂的制图命令,如运用G3D过程绘制曲面图,运用GCONTOUR过程绘制曲面对应的等高线图
Plot 和gplot横、纵坐标分别代表两个变量
从gplot过程的一般格式中我们就可看出,此过程只能绘制两种类型的图形,bubble语句指示SAS绘制泡状散点图,plot语句指示SAS绘制点状 散点图。bubble2语句和plot2语句指示SAS在同一区域内(bubble2和bubble在同一区域,plot2和plot在同一区域)绘制第 二个图形,两者的横坐标相同(同一变量),纵坐标分别位于左右两侧(可以是同一变量,也可以是两个不同的变量
散点图表达式的一般形式为:
(1)bubble和bubble2语句:纵坐标变量名* 横坐标变量名=泡尺寸变量名(变量值以泡的大小表示),三者均应为数值变量;
(2)plot和plot2语句:纵坐标变量名*横坐标变量名<=n/分类变量名>,此处等号及其后的部分可以省略,此时SAS以默认的散点类型绘制散点图;若等号后为n(n为正整数,是散点类型的编号),SAS则以指定的编号对应的散点类型绘制散点图;若等号后为分类变量名(可为字符型或数值型,为数值型时作为离散型变量处理,每一个值将被当作一个类别),此变量的具体值(或与每个具体值对应的图形)将被作为散点用来绘制散点图。
实际上,SYMBOL语句中定义的选项为系统环境控制选项,这意味着一次定义,终生使用。除非重新定义,否则以后的输出图形都将会是第一个图形的“孪生兄弟”。
在这里SYMBOL后面紧跟了一个n,表示任意自然数。因为PLOT语句可以在同一坐标系内重叠绘制许多层图,而这个数字就表示SYMBOL语句是控制的哪一层图。
)
goptions reset=all border;
data citytemp;
input month faren city $ @@;
datalines ;
1 Raleigh 1 Minn 1 Phoenix 2 Raleigh 2 Minn 2 Phoenix 3 Raleigh 3 Minn 3 Phoenix 4 Raleigh 4 Minn 4 Phoenix 5 Raleigh 5 Minn 5 Phoenix 6 Raleigh 6 Minn 6 Phoenix 7 Raleigh 7 Minn 7 Phoenix 8 Raleigh 8 Minn 8 Phoenix 9 Raleigh 9 Minn 9 Phoenix 10 Raleigh 10 Minn 10 Phoenix 11 Raleigh 11 Minn 11 Phoenix 12 Raleigh 12 Minn 12 Phoenix
;
title1 "Average Monthly Temperature";
footnote1 j=l " Source: 1984 American Express";
footnote2 j=l " Appointment Book" ;
symbol1 interpol=join value=dot;
proc gplot data=citytemp;
plot faren * month= city / hminor=0;
run;
quit;
或
proc sort data=citytemp;
by city;
proc gplot data=citytemp;
plot faren * month / hminor=0;
by city;
run;
quit;
Data a;
input Height forearm weight city $ ;
cards;
170 45 65 beijing
173 42 68 beijing
160 44 50 shanghai
155 41 45 shanghai
173 41 66 shanghai
188 50 72 beijing
178 47 70 shanghai
183 46 75 beijing
180 49 80 beijing
165 43 65 shanghai
;
Run;
goptions reset=global gunit=pct border cback=white
colors=(black blue green pink red)
ftitle=swissb ftext=swiss htitle=6 htext=4;
title1 'the heigh ,forearm and weight of boys ';
footnote1 h=3 j=l ' Source: 1997 World health organization ' j=r 'GR21N07 ';
symbol1 color=red
interpol=none
value=dot
height=3;
symbol2 font=marker value=C
color=blue
interpol=None
height=2;
axis1 order=(155 to 185 by 5) offset=(2,2)
label=none
major=(height=2) minor=(height=1)
width=3;
axis2 order=(0 to 90 by 10) offset=(0,0)
label=none
major=(height=2) minor=(height=1)
width=3;
legend1 label=none
shape=symbol(4,2)
position=(top center inside)
mode=share;
proc gplot data=a;
plot forearm*height =1 weight*height =2/overlay legend=legend1
vref=40 to 90 by 10 lvref=2
haxis=axis1 hminor=4
vaxis=axis2 vminor=1;
run;
quit;
【绘图语句选项】
MISSING 指定绘图时要将变量的缺失值也包括在内。
TYPE=做图类型关键字 指定要做图的类型,即图中条块代表的含义:缺省值是频数(FREQ);如果指定了选择项SUMVAR,则缺省值为总和(SUM)。可选的关键字有:
FREQ 要求按指定变量的频数做图。
PERCENT 要求按在横轴刻度表示范围内出现的频数占总数的百分比做图。
CFREQ 按累计频数做图。
CPERCENT 按累计百分比做图。
SUM 只能与SUMVAR选项同时使用,要求图中的每一条代表:变量在横轴表示的取值范围内时,SUMVAR指定变量的总和。
MEAN 只能与SUMVAR选项同时使用,要求图中的每一条代表:变量在横轴表示的取值范围内时,SUMVAR指定变量的均数。
SUMVAR=求和变量 指定使用TYPE=SUM或MEAN时,用于求总和、均值的变量。
LEVAL=n 如果绘图变量是连续变量,用该选项产生有N个组段的图形。
GROUP=分组变量 要求产生以分组变量的值分组的并排图。
SUBGROUP=亚组变量 要求每个图形内部再按亚组变量的值分块。
CAXIS=颜色 指定坐标轴的颜色。
CTEXT=颜色 指定坐标轴文本的颜色。
Where 语句可以只画出满足条件的数据的图