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.3 χ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.
|