當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。