barnard_exact#
- scipy.stats.barnard_exact(table, alternative='two-sided', pooled=True, n=32)[source]#
对 2x2 列联表执行 Barnard 精确检验。
- 参数:
- table类数组整数
一个 2x2 列联表。元素应当是非负整数。
- alternative{‘two-sided’, ‘less’, ‘greater’},可选
定义原假设和备择假设。默认为 ‘two-sided’。请参阅以下备注部分中的说明。
- pooled布尔值,可选
是否计算合并方差的得分统计(例如,如在学生 t 检验中),还是未合并方差(如韦奇 t 检验中)。默认为
True
。- nint,可选
抽样方法构建中使用的抽样点数量。请注意,此参数将自动转换为 2 的下一个较高次幂,因为
scipy.stats.qmc.Sobol
用于选择样本点。默认为 32。必须为正数。大多数情况下,32 个点足以达到良好的精度。更多的点数会造成性能成本。
- 返回:
- berBarnardExactResult
具有以下属性的结果对象。
- 统计量float
Wald 统计量,其使用合并方差或未合并方差,具体取决于用户对 合并的选择。
- pvaluefloat
P 值,即观测到的分布至少与实际观测到的分布一样极端的概率(以零假设为真为前提)。
另请参阅
chi2_contingency
列联表中变量独立性的卡方检验。
fisher_exact
2×2 列联表的 Fisher 精确检验。
boschloo_exact
Boschloo 在 2×2 列联表上的精确检验,这是一种比 Fisher 精确检验在所有情况下更强大的备择检验。
注释
Barnard 检验是列联表分析中使用的一种精确检验。它检验两个分类变量之间的联系,是针对 2×2 列联表比 Fisher 精确检验更有效的备择检验。
设 \(X_0\) 是表示观察样本的 2×2 矩阵,其中每列存储二项式试验,如下面的示例所示。我们还定义 \(p_1, p_2\) 是 \(x_{11}\) 和 \(x_{12}\) 的理论二项式概率。使用 Barnard 精确检验时,我们可以断言三种不同的零假设
\(H_0 : p_1 \geq p_2\) 对 \(H_1 : p_1 < p_2\),其中 备择 = “小于”
\(H_0 : p_1 \leq p_2\) 对 \(H_1 : p_1 > p_2\),其中 备择 = “大于”
\(H_0 : p_1 = p_2\) 对 \(H_1 : p_1 \neq p_2\),其中 备择 = “双侧的”(默认值)
为了计算 Barnard 精确检验,我们使用 Wald 统计量 [3],其中具有合并或未合并的方差。在默认假设(两者方差相等,
合并 = 真
)下,统计量计算为\[T(X) = \frac{ \hat{p}_1 - \hat{p}_2 }{ \sqrt{ \hat{p}(1 - \hat{p}) (\frac{1}{c_1} + \frac{1}{c_2}) } }\]其中 \(\hat{p}_1, \hat{p}_2\) 和 \(\hat{p}\) 分别是 \(p_1, p_2\) 和 \(p\) 的估计值,后者是合并概率,假设 \(p_1 = p_2\)。
如果该假设无效(
合并 = 假
),则统计量为\[T(X) = \frac{ \hat{p}_1 - \hat{p}_2 }{ \sqrt{ \frac{\hat{p}_1 (1 - \hat{p}_1)}{c_1} + \frac{\hat{p}_2 (1 - \hat{p}_2)}{c_2} } }\]然后将 p 值计算为
\[\sum \binom{c_1}{x_{11}} \binom{c_2}{x_{12}} \pi^{x_{11} + x_{12}} (1 - \pi)^{t - x_{11} - x_{12}}\]其中总计超过所有 2x2 列联表 \(X\),以便:* \(T(X) \leq T(X_0)\) 当 alternative = “less”(小于),而 * \(T(X) \geq T(X_0)\) 当 alternative = “greater”(大于),或 * \(T(X) \geq |T(X_0)|\) 当 alternative = “two-sided”(双侧)。在上面,\(c_1, c_2\) 是列 1 和 2 的总和,而 \(t\) 是总数(4 个样本元素的总和)。
返回的 p 值是在无效参数 \(\pi\) 中获得的最大 p 值,其中 \(0 \leq \pi \leq 1\)。
此函数的复杂度为 \(O(n c_1 c_2)\),其中 n 是样本点的数量。
参考
[1]Barnard, G. A. “2x2 表的显著性检验”。Biometrika。 34.1/2 (1947): 123-138. DOI:dpgkg3
[2] (1,2)Mehta, Cyrus R. 和 Pralay Senchaudhuri。“条件检验与无条件精确检验,用于比较两个二项式。”Cytel 软件公司 675 (2003): 1-5。
[3]“Wald 检验”。维基百科。 https://en.wikipedia.org/wiki/Wald_test
示例
[2]中展示了 Barnard 检验的一个示例用途。
请考虑疫苗效力研究 (Chan, 1998) 的以下示例。在 30 个受试者的随机临床试验中,15 个接种了重组 DNA 流感疫苗,而 15 个接种了安慰剂。安慰剂组中的 15 个受试者中有 12 个(80%)最终感染了流感,而疫苗组中只有 15 个受试者中的 7 个(47%)感染了流感。数据被制成 2 x 2 表格
Vaccine Placebo Yes 7 12 No 8 3
在使用统计假设检验时,我们通常使用阈值概率或显着性水平,根据该水平我们决定拒绝原假设 \(H_0\)。假设我们选择了 5% 的常见显着性水平。
我们的备择假设是疫苗会降低感染病毒的机会;也就是说,接种疫苗后感染病毒的概率\(p_1\)将低于没有接种疫苗后感染病毒的概率\(p_2\)。因此,我们调用
barnard_exact
及其alternative="less"
选项>>> import scipy.stats as stats >>> res = stats.barnard_exact([[7, 12], [8, 3]], alternative="less") >>> res.statistic -1.894 >>> res.pvalue 0.03407
在疫苗不会降低感染机会的零假设下,获取至少与观察到的数据一样极端的检验结果的概率大约为 3.4%。由于此 p 值小于我们选择的显着性水平,我们有证据拒绝\(H_0\)而支持备择假设。
假设我们改用 Fisher 精确检验
>>> _, pvalue = stats.fisher_exact([[7, 12], [8, 3]], alternative="less") >>> pvalue 0.0640
在显著性阈值为 5% 的情况下,我们将无法拒绝零假设而支持备择假设。如[2]中所述,Barnard 检验比 Fisher 精确检验具有更强的效力,因为 Barnard 检验不以任何边际为条件。Fisher 检验仅在两组边际均固定的情况下才应使用。