scipy.stats.

barnard_exact#

scipy.stats.barnard_exact(table, alternative='two-sided', pooled=True, n=32)[原始碼]#

對 2x2 列聯表執行 Barnard 精確檢定。

參數:
table類似陣列的整數

一個 2x2 列聯表。元素應為非負整數。

alternative{‘two-sided’, ‘less’, ‘greater’}, 選項性

定義虛無假設和對立假設。預設值為 ‘two-sided’。請參閱下方「Notes」章節中的說明。

pooled布林值, 選項性

是否使用合併變異數(例如在 Student’s t 檢定中)或未合併變異數(例如在 Welch’s t 檢定中)計算分數統計量。預設值為 True

n整數, 選項性

用於建構抽樣方法的抽樣點數量。請注意,由於使用 scipy.stats.qmc.Sobol 選擇抽樣點,此引數將自動轉換為下一個更高的 2 的冪。預設值為 32。必須為正數。在大多數情況下,32 個點足以達到良好的精確度。更多點會帶來效能成本。

回傳值:
berBarnardExactResult

一個結果物件,具有以下屬性。

statistic浮點數

Wald 統計量,具有合併或未合併變異數,取決於使用者選擇的 pooled

pvalue浮點數

P 值,在虛無假設為真的前提下,獲得至少與實際觀察到的分佈一樣極端的分佈的機率。

另請參閱

chi2_contingency

列聯表中變數獨立性的卡方檢定。

fisher_exact

2x2 列聯表的費雪精確檢定。

boschloo_exact

2x2 列聯表的 Boschloo 精確檢定,它是費雪精確檢定的更均勻強大的替代方案。

註解

Barnard 檢定是一種精確檢定,用於列聯表分析。它檢驗兩個類別變數的關聯性,並且對於 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” (預設值)

為了計算 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\),使得:* 當 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. “Significance Tests for 2x2 Tables”. Biometrika. 34.1/2 (1947): 123-138. DOI:dpgkg3

[2] (1,2)

Mehta, Cyrus R., and Pralay Senchaudhuri. “Conditional versus unconditional exact tests for comparing two binomials.” Cytel Software Corporation 675 (2003): 1-5.

[3]

“Wald Test”. Wikipedia. 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\)。因此,我們使用 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\) 而支持對立假設。

假設我們改用費雪精確檢定

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

在相同的 5% 臨界顯著性下,我們將無法拒絕虛無假設而支持對立假設。如 [2] 中所述,Barnard 檢定比費雪精確檢定更均勻強大,因為 Barnard 檢定不以任何邊際條件為條件。費雪檢定僅應在兩組邊際條件都固定的情況下使用。