当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python SciPy stats.barnard_exact用法及代码示例


本文简要介绍 python 语言中 scipy.stats.barnard_exact 的用法。

用法:

scipy.stats.barnard_exact(table, alternative='two-sided', pooled=True, n=32)#

在 2x2 列联表上执行 Barnard 精确检验。

参数

table 数组 整数

一个 2x2 列联表。元素应该是非负整数。

alternative {‘双面’,‘less’, ‘greater’},可选

定义原假设和备择假设。默认为“双面”。请参阅下面注释部分中的说明。

pooled 布尔型,可选

是否使用合并方差(例如 Student 的 t-test)或非合并方差(例如 Welch 的 t-test)计算得分统计。默认为 True

n 整数,可选

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

返回

ber BarnardExactResult

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

统计 浮点数

具有合并或非合并方差的 Wald 统计量,具体取决于用户对合并的选择。

p值 浮点数

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

注意

Barnard 检验是用于分析列联表的精确检验。它检查两个分类变量的关联,是比 Fisher 对 2x2 列联表的精确检验更有效的替代方法。

让我们定义 一个代表观察样本的 2x2 矩阵,其中每一列存储二项式实验,如下例所示。我们还定义 的理论二项式概率。当使用巴纳德精确检验时,我们可以断言三个不同的零假设:

  • \(H_0 : p_1 \geq p_2\) 相对\(H_1 : p_1 < p_2\) , 和选择= “less”

  • \(H_0 : p_1 \leq p_2\) 相对\(H_1 : p_1 > p_2\) , 和选择= “greater”

  • \(H_0 : p_1 = p_2\) 相对\(H_1 : p_1 \neq p_2\) , 和选择= “two-sided”(默认一个)

为了计算 Barnard 的精确检验,我们使用带有合并或未合并方差的 Wald 统计量 [3]。在两个方差相等(pooled = True)的默认假设下,统计量计算为:

的估计量,后者是组合概率,假设

如果此假设无效(pooled = False),则统计数据为:

然后 p 值计算如下:

总和超过所有 2x2 列联表\(X\) 这样:*\(T(X) \leq T(X_0)\) 选择= “less”, *\(T(X) \geq T(X_0)\) 选择= “greater”,或 *\(T(X) \geq |T(X_0)|\) 选择= “two-sided”。更多,\(c_1, c_2\) 是第 1 列和第 2 列的总和,并且\(t\) 总数(4 个样本元素的总和)。

返回的 p 值是对有害参数 采取的最大 p 值,其中

这个函数的复杂度是\(O(n c_1 c_2)\) ,其中n是样本点的数量。

参考

[1]

Barnard, G. A. “2x2 表的显著性检验”。生物计量学. 34.1/2(1947):123-138。DOI:dpgkg3

[2] (1,2)

梅塔、赛勒斯 R. 和 Pralay Senchaudhuri。 “比较两个二项式的条件与无条件精确检验。” Cytel 软件公司 675(2003 年):1-5。

[3]

“Wald Test”。维基百科.https://en.wikipedia.org/wiki/Wald_test

例子

[2] 中介绍了 Barnard 检验的一个示例使用。

Consider the following example of a vaccine efficacy study (Chan, 1998). In a randomized clinical trial of 30 subjects, 15 were inoculated with a recombinant DNA influenza vaccine and the 15 were inoculated with a placebo. Twelve of the 15 subjects in the placebo group (80%) eventually became infected with influenza whereas for the vaccine group, only 7 of the 15 subjects (47%) became infected. The data are tabulated as a 2 x 2 table:

Vaccine  Placebo
Yes     7        12
No      8        3

在使用统计假设检验时,我们通常使用阈值概率或显著性水平,我们决定根据该阈值拒绝原假设 。假设我们选择 5% 的共同显著性水平。

我们的替代假设是疫苗会降低感染病毒的机会;也就是概率\(p_1\) 用疫苗感染病毒将是少于概率\(p_2\) 在没有疫苗的情况下感染病毒。因此,我们称barnard_exactalternative="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 值小于我们选择的显著性水平,因此我们有证据拒绝 而支持替代方案。

假设我们使用了 Fisher 精确检验:

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

在 5% 的阈值显著性相同的情况下,我们将无法拒绝零假设以支持替代方案。如 [2] 中所述,Barnard 检验比 Fisher 精确检验更强大,因为 Barnard 检验不以任何边际为条件。仅当两组边际均固定时,才应使用 Fisher 检验。

相关用法


注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.stats.barnard_exact。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。