barnard_exact#
- scipy.stats.barnard_exact(table, alternative='two-sided', pooled=True, n=32)[源代码][源代码]#
对一个2x2的列联表执行Barnard精确检验。
- 参数:
- 表类数组的整数
一个2x2的列联表。元素应为非负整数。
- 替代方案{‘双侧’, ‘小于’, ‘大于’}, 可选
定义零假设和备择假设。默认是’双侧’。请参见下面的注释部分中的解释。
- 池化bool, 可选
是否使用合并方差(例如在学生t检验中)或非合并方差(例如在Welch的t检验中)计算分数统计量。默认值为
True
。- nint, 可选
采样方法构建中使用的采样点数量。注意,由于使用
scipy.stats.qmc.Sobol
来选择采样点,此参数将自动转换为下一个更高的2的幂。默认值为32。必须为正数。在大多数情况下,32个点足以达到良好的精度。更多的点会带来性能成本。
- 返回:
- berBarnard精确结果
一个具有以下属性的结果对象。
- 统计浮动
根据用户选择的 pooled,使用合并或未合并方差的 Wald 统计量。
- p值浮动
P值,即在零假设为真的前提下,获得至少与实际观察到的分布一样极端的分布的概率。
参见
chi2_contingency
卡方独立性检验用于检验列联表中变量的独立性。
fisher_exact
对2x2列联表进行Fisher精确检验。
boschloo_exact
在2x2列联表上的Boschloo精确检验,这是Fisher精确检验的一个均匀更强大的替代方法。
注释
巴纳德检验是一种用于列联表分析的精确检验。它检验两个分类变量之间的关联,并且对于2x2列联表来说,是比费舍尔精确检验更强大的替代方法。
让我们定义 \(X_0\) 为一个2x2矩阵,表示观测样本,其中每一列存储二项实验,如下例所示。我们还定义 \(p_1, p_2\) 为 \(x_{11}\) 和 \(x_{12}\) 的理论二项概率。在使用Barnard精确检验时,我们可以提出三种不同的零假设:
\(H_0 : p_1 \geq p_2\) 与 \(H_1 : p_1 < p_2\),其中 alternative = “less”
\(H_0 : p_1 \leq p_2\) 与 \(H_1 : p_1 > p_2\),其中 alternative = “greater”
\(H_0 : p_1 = p_2\) 对比 \(H_1 : p_1 \neq p_2\),使用 alternative = “two-sided”(默认选项)
为了计算巴纳德精确检验,我们使用带有合并或未合并方差的Wald统计量 [3] 。在默认假设两个方差相等的情况下(
pooled = True
),统计量计算如下:\[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\)。
如果这个假设无效(
pooled = False
),统计量是:\[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\) 进行的,满足以下条件:* 当 alternative = “less” 时,\(T(X) \leq T(X_0)\),* 当 alternative = “greater” 时,\(T(X) \geq T(X_0)\),或 * 当 alternative = “two-sided” 时,\(T(X) \geq |T(X_0)|\)。上述公式中,\(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 表的显著性检验”。《生物统计学》。34.1/2 (1947): 123-138。 DOI:dpgkg3
[2]Mehta, Cyrus R., 和 Pralay Senchaudhuri. “比较两个二项式的条件与无条件精确检验。” Cytel 软件公司 675 (2003): 1-5.
[3]“Wald检验”。维基百科。https://en.wikipedia.org/wiki/Wald_test
示例
Barnard 检验的一个示例用法在 [2] 中展示。
考虑以下疫苗效力研究的例子(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\)。因此,我们使用
alternative="less"
选项调用barnard_exact
:>>> 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%显著性阈值下,我们将无法拒绝原假设而支持备择假设。如[R6519c297ee50-2]_中所述,Barnard’s 检验在所有情况下都比Fisher’s 精确检验更有力,因为Barnard’s 检验不以任何边际条件为前提。Fisher’s 检验仅在两组边际都固定时使用。