两种类型疾病的治疗结果
组别 有效无效合计
急性期 69(57.66) 37(48.34) 106
慢性期 30(41.34) 46(34.66) 76
检验假设:
H0:两组患者治疗的总体有效率相同,π=π
H1:两组患者治疗的总体有效率不同,π≠π
α=0.05
计算公式:
SAS程序及输出结果解释
data tab1
do a=1 to 2
do b=1 to 2
input f@@
output
end
end
cards
69 37 30 46
PROC FREQ
TABLE A*B/NOPERCENT NOCOL NOROW CHISQ
WEIGHT f
RUN
卡方=11.7127 p=0.0006
P<0.001,按照α=0.05的检验水平拒绝H0,接受H1,即带尺急性期和慢性期病人治疗的总体有效率不等。根据现有资料看出,急性期病人治疗的有效率膏腴慢蠢昌高性期病人。
data tmpset SASHELP.workers(firstobs=10 obs=15)
if ELECTRIC>260
run
proc printrun
Obs DATEELECTRICMASONRY
1 OCT77 278.6 288.7
2 NOV77 276.2 286.2
3 DEC77 274.6 276.7
4 JAN78 262.1 234.3
输出4条记录。
解法2:
data tmp
set SASHELP.workers(firstobs=10 obs=15)
where ELECTRIC>260
run
proc printrun
Obs DATEELECTRICMASONRY
1 MAY78 278.0 295.5
2 JUN78 289.5 308.3
3 JUL78 296.6 306.9
4 AUG78 305.1 315.3
5 SEP78 307.8 310.6
6 OCT78 308.2 316.3
输出6条记录。
思考:上述两种解法为什么输出不一样?请注意if语句和where语句的拆明区别。
区别:
1. if语句是面向PDV的,对当前PDV中的数据进行判断,满足条件时将其写入到外部数据集;where语句也是面向PDV的,它使用于从外部数据源读数据到PDV之前进行判断,当满足条件时才被写入到PDV。显然一个在写入PDV之前,一个在写入PDV之后,两者是有差异的。
2. 当没有数据集选项firstobs=10 obs=15时,if语句和where语句用法结果相同,但有这两个选项时效果就不同了。有这两个选项,if语句是从原数据集(或数据源)的观测记录进行计算个数,即从原数据集的第10号观测开始读入到PDV中,然后再判断是否满足if条件,若满足则输出到外部数据集,直到原数据集的第15号观测结旅手告束。而where语句是在薯核读入到PDV之前就进行判断的,所以这里的firstobs的意思是从使得满足where条件的第10个观测开始,而不是原数据集的第10个观测开始。
综上可知,该题中应使用if语句。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)