用python和Excel進行列聯表分析
卡方檢驗回顧(獨立性檢驗)
行(\(r_i\))列(\(c_j\)) | \(j=1\) | \(j=2\) | \(\cdots\) | 合計 |
---|---|---|---|---|
\(i=1\) | \(f_{11}\) | \(f_{12}\) | \(r_1\) | |
\(i=2\) | \(f_{21}\) | \(f_{22}\) | \(r_2\) | |
\(\vdots\) | \(\vdots\) | \(\vdots\) | \(\vdots\) | |
合計 | \(c_1\) | \(c_2\) | \(\cdots\) | \(n\) |
-
建立原假設和備擇假設
\[H_0:\text{兩變量獨立 }vs\text{ }H_1:\text{兩變量不獨立 } \] -
計算自由度和理論頻數
自由度:\((r-1)*(c-1)\),其中\(r,c\)分別是行數和列數
我們將實際頻數記作\(f_{ij}\),期望(理論)頻數記作\(e_{ij}\),且\(e_{ij}=\frac{r_i*c_j}{n}\)
-
計算卡方統計量
\[\chi^{2}=\sum\limits_{i=1}^{r} \sum\limits_{j=1}^{c} \frac{\left(f_{i j}-\mathrm{e}_{i j}\right)^{2}}{\mathrm{e}_{i j}} \sim \chi^{2}(d f) \]實際觀察次數與理論次數之差的平方再除以理論次數得到的統計量近似服從卡方分布
-
查χ2方分布臨界值表,確定接受域
\[\chi_{1-\frac{\alpha}{2}}^{2}(\mathrm{df})<\chi^{2}<\chi_{\frac{\alpha}{2}}^{2}(\mathrm{df}) \]
數據示例
真實頻數 | 男 | 女 | 總計 |
---|---|---|---|
未流失 | 29699 | 8954 | 38653 |
流失 | 9660 | 2762 | 12422 |
總計 | 39359 | 11716 | 51075 |
Excel操作
計算期望頻數
期望頻數 | 男 | 女 | 總計 |
---|---|---|---|
未流失 | 29786.46 | 9572.54 | 39359 |
流失 | 8866.54 | 2849.46 | 11716 |
總計 | 38653 | 12422 | 51075 |
以及真實頻數和期望頻數的差值
0.257 | 0.799 |
---|---|
0.863 | 2.684 |
- p值:excel用
=CHISQ.TEST(真實頻數,期望頻數)
,wps用=CHITEST(真實頻數,期望頻數)
來計算。 - 卡方統計量:用
=SUM()
合計差值區域即可 - 自由度:如前文所述
- 1-置信水平:一般選0.1,0.05,0.01
- 接受域上下界:excel用
=CHISQ.INV.RT(置信水平/2,自由度)
,wps用=CHISQ.INV(置信水平/2,自由度)
所給數據計算結果如下:
p值 | 0.031916 |
---|---|
卡方統計量 | 4.603016363 |
自由度 | 1 |
\(\alpha\) | 0.01 |
上界 | 3.92704E-05 |
下界 | 6.634896601 |
Python代碼解決方案
使用scipy.stats.chi2_contingency
來進行卡方檢驗。
import numpy as np
from scipy.stats import chi2_contingency
#性別
d = np.array([[29699,9660], [8954,2762]])
chi2_contingency(d, correction = False)
#默認correction = True,這里是為了和excel計算結果一致
關於correction
參數,如果為True,且自由度為1,則應用Yates校正以保持連續性。 校正的效果是將每個觀察值向相應的期望值調整0.5。
Yates correction資料點擊此處,總之它會使得卡方統計量更接近卡方分布。
輸出結果如下
(4.60301636324016,
0.03191575584773069,
1,
array([[29786.45965737, 8866.54034263],
[ 9572.54034263, 2849.45965737]]))
輸出結果分別為
- 卡方統計量
- p值
- 自由度
- 期望頻數
這題p值約為0.032,也就是說當顯著性水平\(\alpha\)大於0.032時我們會拒絕原假設,當\(\alpha<0.032\)時我們會接受原假設。如果選擇\(\alpha=0.05\),那么拒絕原假設,認為性別與流失是不獨立的。