Python統計分析-卡方檢驗
阿新 • • 發佈:2018-12-14
卡方檢驗是一種用途很廣的計數資料的假設檢驗方法。它屬於非引數檢驗的範疇,主要是比較兩個及兩個以上樣本率( 構成比)以及兩個分類變數的關聯性分析。其根本思想就是在於比較理論頻數和實際頻數的吻合程度或擬合優度問題。
卡方檢驗的基本思想:
卡方檢驗是以分佈為基礎的一種常用假設檢驗方法,它的基本假設H0是:觀察頻數與期望頻數沒有差別。
該檢驗的基本思想是:首先假設H0成立,基於此前提計算出值,它表示觀察值與理論值之間的偏離程度。根據分佈及自由度可以確定在H0假設成立的情況下獲得當前統計量及更極端情況的概率P。如果P值很小,說明觀察值與理論值偏離程度太大,應當拒絕原假設,表示比較資料之間有顯著差異;否則就不能拒絕無效假設,尚不能認為樣本所代表的實際情況和理論假設有差別。
==(i=1,2,3,…,k)
其中,為i水平的觀察頻數,為i水平的期望頻數,n為總頻數,為i水平的期望頻率。
例1:從某中學隨機抽取兩個班,調查他們對待文理分科的態度,結果,甲班37人贊成,27人反對;乙班39人贊成,21人反對,這兩個班對待文理分科的態度是否有顯著差異(α= .05)?
可以畫一個的行列雙向表 (2*2 crosstabs)
班級 | 贊成 | 反對 |
---|---|---|
甲班 | 37 | 27 |
乙班 | 39 | 21 |
from scipy.stats import chi2_contingency
import numpy as np
kf_data = np.array([[37,27], [39,21]])
kf = chi2_contingency(kf_datad)
print('chisq-statistic=%.4f, p-value=%.4f, df=%i expected_frep=%s'%kf)
# chisq-statistic=0.4054, p-value=0.5243, df=1 expected_frep=[[39.22580645 24.77419355][36.77419355 23.22580645]]
結論: 因為p值=0.5243>0.05, 故接受原假設, 認為這兩個班對待文理分科的態度無顯著差別。
例2:探究死亡年齡和居住地、性別是否有關?
可以畫一個的行列雙向表 (r*c crosstabs)
old | ruralMale | ruralFemale | urbanMale | urbanFemale |
---|---|---|---|---|
50-54 | 11.7 | 8.7 | 15.4 | 8.4 |
55-59 | 18.1 | 11.7 | 24.3 | 13.6 |
60-64 | 26.9 | 20.3 | 37 | 19.3 |
65-69 | 41 | 30.9 | 54.6 | 35.1 |
70-74 | 66 | 54.3 | 71.1 | 50 |
from scipy.stats import chi2_contingency
import numpy as np
kf_data = np.array([[11.7,8.7,15.4,8.4], [18.1,11.7,24.3,13.6],
[26.9,20.3,37,19.3],[41,30.9,54.6,35.1],
[66,54.3,71.1,50]])
kf = chi2_contingency(kf_data)
print('chisq-statistic=%.4f, p-value=%.4f, df=%i expected_frep=%s'%kf)
# chisq-statistic=2.9208, p-value=0.9961, df=12 expected_frep=[[11.70042044 8.998674 14.46649418 9.03441138][17.92123221 13.78303687 22.15795602 13.8377749 ][27.39804334 21.07155563 33.87516171 21.15523933][42.77800776 32.90012937 52.89107374 33.03078913][63.90229625 49.14660414 79.00931436 49.34178525]]
結論: 因為p值=0.9961>0.05, 故接受原假設, 認為死亡年齡和居住地、性別無顯著差別。