第二十二讲 两比例Z检验
在“R与生物统计专题”中,我们会从介绍R的基本知识展开到生物统计原理及其在R中的实现。以从浅入深,层层递进的形式在投必得医学公众号更新。
上一讲中,我们介绍了单比例的Z检验,今天,我们继续介绍针对两组独立样本的比例数据(%)进行统计学差异检验——两比例Z检验。
两比例Z检验
例如,我们有两组人:
A组,患有肺癌:n = 500
B组,健康个体:n = 500
每组的吸烟人数如下:
A组,患有肺癌:n = 500,490名吸烟者, pA= 490 / 500 = 98%
B组,健康个体:n = 500,吸烟者400, pB= 400 / 500 = 80%
整理为表格如下:
在这种情况下:
吸烟者的总体比例为 p =(490 + 400 )/(500 + 500) = 89%。
非吸烟者的总体比例为 q = 1 - p = 11%
研究问题,两组吸烟者的比例是否相同?
典型的研究问题是:
A组中观察到的吸烟者比例(pA)等于在B组中观察到的吸烟者比例(pB)?
A组中观察到的吸烟者比例(pA)低于在B组中观察到的吸烟者比例(pB)?
A组中观察到的吸烟者比例(pA)大于组B组 中观察到的吸烟者比例(pB)?
在统计数据中,我们可以定义相应的原假设(H0) 如下:
H0:pA = pB
H0:pA ≤ pB
H0:pA ≥ pB
相应的备择假设(H1)如下:
H1:pA ≠ pB(不同)
H1:pA > pB(大于)
H1:pA < pB(小于)
假设1)称为两向检验
假设2)和3)称为单向检验
2.1 大样本情况
检验统计量(也称为z-test)计算如下:
其中,
pA 是在A组中观察到的比例值,其中样本数为nA
pB是在B组中观察到的比例值,其中样本数为nB
p和 q 是总比例值(无论A、B组)
如果 | z | < 1.96,则实际比例与预期比例差异不明显(alpha = 0.05)。
如果 | z | ≥ 1.96,则实际比例与预期比例差异明显(alpha = 0.05)。
可以在z界值表中读取与z 统计量对应的显着性水平(p值)。
z统计量的公式仅在样本数量(n)足够大时适用。即nA*p,nA*q,nB*p和nB*q都要≥ 5。
2.2 小样本的情况(n < 30)
当两个独立样本的样本量小时,Fisher精确概率检验是用于比较比例的非参数方法。
3.1 R函数:prop.test()
R函数prop.test()可以如下使用:
prop.test(x, n, p = NULL, alternative = "two.sided",
correct = TRUE)
x:事件发生计数的向量(每个组有一个对应数值)
n:总计数的向量(每个组有一个对应数值)
Alternative:指定被责假设的为双向检验(two.sided)或单向检验(one.sided)
correct:表示是否在可能的情况下应用Yates’连续性校正
默认情况下,函数prop.test()使用Yates连续性校正。
如果预期事件发生次数或不发生次数小于5,则这个选项会发动技能,进行矫正。
如果您不希望进行校正,请使用correct= FALSE 。correct的默认值是TURE。(如果要使结果与数学手工计算的未矫正的z检验结果一模一样,必须将此选项设置为FALSE 。)
3.2 两比例z检验的R实现
研究问题,两组吸烟者的比例是否相同?
res <- prop.test(x = c(490, 400), n = c(500, 500))
res
输出结果
2-sample test for equality of proportions with continuity correction
data: c(490, 400) out of c(500, 500)
X-squared = 80.909, df = 1, p-value < 2.2e-16
alternative hypothesis: two.sided
95 percent confidence interval:
0.1408536 0.2191464
sample estimates:
prop 1 prop 2
0.98 0.80
该函数返回:
皮尔逊卡方检验统计量的值:80.909
p值:< 2.2e-16
比例差异的95%置信区间:0.141-0.219
实际情况下事件的比例(两组中吸烟者的比例):1组中为0.98;2组中为0.80
如果您想测试观察到的A组吸烟者比例(pA)低于在B组中观察到的吸烟者比例(pB),输入以下内容:
prop.test(x = c(490, 400), n = c(500, 500),alternative = "less")
或者,如果您想测试在A组中观察到的吸烟者比例(pA)大于B中观察到的吸烟者比例(pB),输入以下内容:
prop.test(x = c(490, 400), n = c(500, 500),alternative = "greater")
3.3 结果解释
测试的p值小于2.2e-16,小于显着性水平alpha = 0.05。我们可以得出结论,两组的吸烟者比例显着不同。
对于2×2表,在标准卡方检验chisq.test()是完全等同于prop.test()。
3.4 访问prop.test()函数的返回值
prop.test()函数的结果是一个包含以下组件的列表:
statistic:事件发生次数
parameter:总测试次数
p.value:检验的p值
conf.int:事件发生比例的差异的置信区间。
estimate:实际事件的发生比例。
用于获取这些值的R代码的格式如下:
res$p.value
[1] 2.363439e-19
res$estimate
prop 1 prop 2
0.98 0.80
res$conf.int
[1] 0.1408536 0.2191464
attr(,"conf.level")
[1] 0.95
当nA*p,nA*q,nB*p和nB*q中存在数值小于5时,需要使用Fisher精确概率检验。例如如下数据:
整理为表格如下:
在R中的实现代码如下:
fisher.test(matrix(c(10,1,6,12),nrow=2), alternative = “two.saided”)
输出结果
Fisher's Exact Test for Count Data
data: matrix(c(10, 1, 6, 12), nrow = 2)
p-value = 0.00575
alternative hypothesis: true odds ratio is not equal to 1
95 percent confidence interval:
1.820063 932.303503
sample estimates:
odds ratio
17.83676
该函数返回:
Fisher精确检验p值:0.00575
比值比的95%置信区间:1.82 – 932.3
事件的比值比:17.8
好了,本期讲解就先到这里。小伙伴们赶紧试起来吧。
当然啦,R语言的掌握是在长期训练中慢慢积累的。一个人学习太累,不妨加入“R与统计交流群”,和数百位硕博一起学习。
快扫二维码撩客服,
带你进入投必得医学交流群,
让我们共同进步!
↓↓
- END -
长按二维码关注「投必得医学」,更多科研干货在等你!