SAS常用程序(2)

来源:百度文库 编辑:神马文学网 时间:2024/04/28 19:21:40
2.2  统计假设检验的SAS程序
在阅读以下内容之前,请先阅读第一章“SAS软件基本操作”。
2.2.1  单个样本的t检验
对于课本5.1.4所介绍的单个样本t检验,可以使用PROC MEANS过程计算。PROC MEANS过程在2.1.1中已经做过介绍。这里只以课本中例5.5的数据为例,说明如何使用PROC MEANS过程进行检验。在这里数据采用在作业流中输入,因此不必建立外部数据文件。
options  linesize=76;
data  maize;
input  weight  @@;
diff=weight-300;
cards;
308       305  311  298  315  300  321  294  320
proc  means  n  t  prt;
var  diff;
run;
在PROC MEANS语句中的t是在H0:μ=0 假设下所得到的统计量,在这里H0:μ=300,因此在INPUT语句后,用赋值语句建立一个新变量diff,diff是每一观测值与300之差,检验这个差值的期望是否为0,输出结果如下:
表 2-8  单个样本t检验的输出结果
The SAS System
Analysis Variable : DIFF
N
T
Prob>|T|
9
2.4954012
0.0372
2.2.2  配对数据t检验
配对数据t检验的SAS程序与2.2.1节中的程序基本相同,不同点只是在INPUT语句中包含三个变量,在赋值语句中的新变量是两个变量的差而不是变量与一个常量的差。以课本中表5-3的数据为例,SAS程序如下:
options  linesize=76;
data  matdat;
input  id  prepro  postpro  @@;
diff=prepro-postpro;
cards;
proc  means  n  mean  stderr  t  prt;
var  diff;
run;
输出结果见表2-9
表2-9  配对数据t检验的输出结果
1
8.478
7.994
2
7.512
7.141
3
7.222
8.267
4
8.053
8.280
5
7.689
6.740
6
8.528
7.632
7
6.972
5.913
8
7.371
8.169
9
5.760
7.570
10
7.930
7.569
11
7.255
6.322
12
6.795
6.417
The SAS System
Analysis Variable : DIFF
N
Mean
Std Error
T
Prob>|T|
12
0.1292500
0.2639513
0.4896736
0.6340
2.2.3  成组数据t检验
可以使用PROC TTEST过程做成组数据t检验。以课本中例5.9的数据为例,说明成组数据t检验的SAS程序。
options  linesize=76;
data  wheat;
input  strain  days  @@;
cards;
proc  ttest;
class  strain;
var  days;
run;
上述的CLASS语句称为分类语句,在t检验中的分类变量(品种),应在CLASS语句中给予说明,以便PROC TTEST过程按不同类别(品种)进行检验。输出结果见表2-10。
1
101
1
100
1
99
1
99
1
98
1
100
1
98
1
99
1
99
1
99
2
100
2
98
2
100
2
99
2
98
2
99
2
98
2
98
2
99
2
100
表2-10  成组数据t检验的输出结果
The SAS System
TTEST PROCEDURE
Variable: DAYS
STRAIN
N
Mean
Std Dev
Std Error
1
10
99.20000000
0.91893658
0.29059326
2
10
98.90000000
0.87559504
0.27688746
Variances
T
DF
Prob>|T|
Unequal
0.7474
18.0
0.4645
Equal
0.7474
18.0
0.4645
For H0: Variances are equal, F' = 1.10    DF = (9,9)    Prob>F' = 0.887
表2-10中给出了方差齐性检验和t检验结果以及方差不具齐性时,用Satterthwaite方法计算的近似t统计量的自由度。从表的最后一行得知,方差具齐性,因此只选用Equal行的结果即可。Prob>|T|的含义是变量T大于统计量t的概率,P(T>t)。(参考课本“小概率原理”一节)。不论是单侧检验还是双侧检验,该概率值都是一样的。做单侧检验时P<0.05差异显著,在做双侧检验时P<0.025时差异显著。
χ2检验的SAS程序
在阅读以下内容之前,请先阅读第一章“SAS软件基本操作”。
使用PROC FREQ过程(见2.1.2)进行χ2检验,首先应使用TABLE语句生成一个两向表。在TABLE语句的“/”后,可供使用的选项共有24个,其中的几个基本选项如下:
CHISQ:χ2检验及2´2列联表的Fisher精确检验。
EXACT:对大于2´2列联表进行Fisher精确检验。
ALPHA=(p):设置置信区间时使用的显著水平,缺省时a=0.05。
MISSIN:要求FREQ把缺失值当做非缺失值看待,在计算百分数或其它统计量时包括它们。
例 2.7   以课本中例7.3的数据为例,说明χ2检验的SAS程序。
解  记符号“o”为口服,“i”为注射,“e”为有效,“n”为无效。
options  linesize=76;
data  medicine;
input  way  $  effect  $;
cards;
o  e
o  n
i  e
i  n
:
:
proc  freq  formchar(1,2,7)=’|-+’;
table  way * effect / chisq;
run;
在TABLE语句中way * effect将形成一个两向表,第一个变量形成表的行,第二个变量形成表的列。在PROC FREQ语句中的选项formchar(1,2,7),是输出表格线的形状。输出结果如下。
表2-11  例2.7输出的结果
The SAS System
TABLE OF WAY BY EFFECT
WAY         EFFECT
Frequeny
Percent
Row Pct
Col Pct
e
n
Total
o
58
40
98
30.05
20.73
50.78
59.18
40.82
47.54
56.34
i
64
31
95
33.16
16.06
49.22
67.37
32.63
52.46
43.66
Total
122
71
193
63.21
36.79
100.00
STATISTICS FOR TABLE OF WAY BY EFFECT
Statistic
DF
Value
Prob
Chi-Square
1
1.390
0.238
Likelihood Ratio Chi-Square
1
1.392
0.238
Continuity Adj. Chi-Square
1
1.060
0.303
Mantel-Haenszel Chi-Square
1
1.382
0.240
Fisher's Exact Test (Left)
0.908
(Right)
0.152
(2-Tail)
0.296
Phi Coefficient
0.085
0
Contingency Coefficient
0.085
0
Cramer's V
0.085
0
Sample Size = 193
表2-11给出χ2值,连续性矫正χ2值和精确检验χ2值。
该例如果使用以下程序,在数据步中数据的输入变得很简单了。
options linesize=76;
data;
do way=1 to 2;
do effect=1 to 2;
input case @@;
output;
end;
end;
cards;
58 40
64 31
;
proc freq formchar(1,2,7)='|-+';
weight case;
tables way*effect;
run;
在数据步中使用了一个DO语句,这是一个循环语句。“way=1 to 2”表示“方式”有两个水平,“effect=1 to 2”表示“效果”有两个水平,如果实验是一个高阶的列联表,那么TO后面的数字也应做相应的改变。在程序步中的WEIGHT语句是一个权数语句,它的值是这些观测相应的权数。
输出的结果如下,因为在TABLE语句中没有规定统计分析选项,所以只输出列联表:
The SAS System
TABLE OF WAY BY EFFECT
WAY         EFFECT
Frequeny
Percent
Row Pct
Col Pct
1
2
Total
1
58
40
98
30.05
20.73
50.78
59.18
40.82
47.54
56.34
2
64
31
95
33.16
16.06
49.22
67.37
32.63
52.46
43.66
Total
122
71
193
63.21
36.79
100.00
比较前面的两个列联表,只是表的形式有些不同,其它结果没有任何变化。
在输出的列联表中还有一些选项可供使用,如:
EXPECTED:在独立性假设下,要求输出单元频数的期望值。
NOCOL:不输出交叉表里的单元列百分数。
NOROW:不输出交叉表里的单元行百分数。
CELLCHI2:要求该过程输出每个单元对总χ2统计量的贡献。
NOPERCENT:不输出交叉表的单元百分数和累计百分数。
如果在TABLE语句中加入上述选项,输出的结果更接近教材中列联表的格式。
options linesize=76;
data;
do way=1 to 2;
do effect=1 to 2;
input case @@;
output;
end;
end;
cards;
64 31
58 40
;
proc freq formchar(1,2,7)='|-+';
weight case;
tables way*effect/cellch2 expected nocol norow nopercent;
run;
输出结果如下表:
The SAS System
TABLE OF WAY BY EFFECT
WAY         EFFECT
Frequeny
Expected
Cell Chi-
Square
1
2
Total
1
58
40
98
61.948
36.052
0.2516
0.4324
2
64
31
95
60.052
34.948
0.2596
0.446
Total
122
71
193
例 2.8  计算课本中例7.5的精确χ2。
解  记A饲料为1,B饲料为2;未增重为1,增重为2。SAS程序如下:
options  linesize=76;
data  mouse;
input  feed  weight  @@;
cards;
1  1  1  1  1  1  1  1  1  2
2         2  2  2  2  2  2  2  2  2  2  2
proc  freq  formchar(1,2,7)=’|-+’;
table  feed * weight / chisq  missing;
run;
输出结果如下:
表2-12  例2.8输出的结果
The SAS System
TABLE OF FEED BY WEIGHT
FEED        WEIGHT
Frequeny
Percent
Row Pct
Col Pct
1
2
Total
1
4
1
5
36.36
9.09
45.45
80.00
20.00
100.00
14.29
2
0
6
6
0.00
54.55
54.55
0.00
100.00
0.00
85.71
Total
4
7
11
36.36
63.64
100.00
STATISTICS FOR TABLE OF FEED BY WEIGHT
Statistic
DF
Value
Prob
Chi-Square
1
7.543
0.006
Likelihood Ratio Chi-Square
1
9.417
0.002
Continuity Adj. Chi-Square
1
4.482
0.034
Mantel-Haenszel Chi-Square
1
6.857
0.009
Fisher's Exact Test (Left)
1.000
(Right)
0.015
(2-Tail)
0.015
Phi Coefficient
0.828
0
Contingency Coefficient
0.638
0
Cramer's V
0.828
0
Sample Size = 11
WARNING: 100% of the cells have expected counts less
than 5. Chi-Square may not be a valid test.