scipy.stats.barnard_exact

scipy.stats.barnard_exact(table, alternative='two-sided', pooled=True, n=32)[源代码]

在2x2列联表上执行Barnard精确测试。

参数
table整数的类似数组(ARRAY_LIKE)

2x2列联表。元素应为非负整数。

alternative{‘双面’,‘少’,‘大’},可选

定义空的和可选的假设。默认值为“双面”。请参阅下面注释部分的说明。

pooled布尔值,可选

是用合并方差(例如,在学生t检验中)还是用未合并方差(如Welch t检验)来计算分数统计量。默认值为 True

n整型,可选

构建采样方法时使用的采样点数量。请注意,此参数将自动转换为2的下一个更高的幂,因为 scipy.stats.qmc.Sobol 用于选择采样点。默认值为32。一定是阳性的。在大多数情况下,32点就足以达到很好的精度。更多的分数是以性能为代价的。

退货
berBarnardExactResult

具有以下属性的结果对象。

统计数据浮动

具有池化或未池化差异的Wald统计,具体取决于用户选择 pooled

p值浮动

p值,在假设零假设为真的情况下,获得至少与实际观察到的分布一样极端的分布的概率。

参见

chi2_contingency

列联表中变量独立性的卡方检验。

fisher_exact

2x2列联表上的Fisher精确检验。

boschloo_exact

Boschloo在2x2列联表上的精确检验,这是一个比费舍尔精确检验更强大的选择。

注意事项

巴纳德检验是用于分析列联表的精确检验。它检验了两个分类变量之间的联系,是一种比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 =“较少”

  • \(H_0 : p_1 \leq p_2\)\(H_1 : p_1 > p_2\) ,具有 alternative =“更大”

  • \(H_0 : p_1 = p_2\)\(H_1 : p_1 \neq p_2\) ,具有 alternative =“双面”(默认一面)

为了计算Barnard的精确检验,我们使用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\) 以便: * \(T(X) \leq T(X_0)\) when alternative = "less", * \(T(X) \geq T(X_0)\) 什么时候 alternative =“较大”,或* \(T(X) \geq |T(X_0)|\) 什么时候 alternative =“双面”。上图, \(c_1, c_2\) 是第1列和第2列的总和,并且 \(t\) 总数(4个样本的元素之和)。

返回的p值是获取的最大p值,该最大p值超过了enturance参数 \(\pi\) ,在哪里 \(0 \leq \pi \leq 1\)

此函数的复杂性为 \(O(n c_1 c_2)\) ,在哪里 n 采样点的数量。

参考文献

1

巴纳德,G.A.“2x2表的显著性测试”。 双子宫肌动蛋白 。34.1/2(1947):123-138。 DOI:dpgkg3

2(1,2)

题名/责任者:Realay Senchaudhuri.“用于比较两个二项式的条件与无条件精确检验。” Cytel软件公司 675(2003):1-5

3

“沃尔德测试”。 维基百科https://en.wikipedia.org/wiki/Wald_test

示例

文中给出了Barnard检验的一个用法示例 [2].

考虑以下疫苗效力研究的例子(Chan,1998)。在30名受试者的随机临床试验中,15人接种了重组DNA流感疫苗,15人接种了安慰剂。在安慰剂组的15名受试者中,有12名(80%)最终感染了流感,而对于疫苗组,15名受试者中只有7名(47%)感染了流感。数据以2x2表格的形式列出::

    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\) 更倾向于另一种选择。

假设我们使用的是费舍尔的精确测试:

>>> _, pvalue = stats.fisher_exact([[7, 12], [8, 3]], alternative="less")
>>> pvalue
0.0640...

在相同的阈值重要性为5%的情况下,我们将不能拒绝零假设,而支持另一种选择。如中所述 [2], 巴纳德的测试比费舍尔的精确测试要强大得多,因为巴纳德的测试不以任何边际为条件。只有当两组边缘都固定时,才应使用费舍尔检验。