1.卡方檢驗概念
1)卡方檢驗是一種用途很廣的計數資料的假設檢驗方法,由卡爾·皮爾遜提出。
(1)它屬於非參數檢驗的範疇,主要是比較兩個及兩個以上樣本率( 構成比)以及兩個分類變量的關聯性分析。
(2)其根本思想就是在於比較理論頻數和實際頻數的吻合程度或擬合優度問題。
(3)卡方值描述兩個事件的獨立性或者描述實際觀察值與期望值的偏離程度。卡方值越大,表名實際觀察值與期望值偏離越大,也說明兩個事件的相互獨立性越弱。
2)在分類資料統計推斷中的應用
(1)兩個率或兩個構成比比較的卡方檢驗。
(2)多個率或多個構成比比較的卡方檢驗以及分類資料的相關分析等。
3)可以分爲成組比較(不配對資料)和個別比較(配對,或同一對象兩種處理的比較)兩類。
4)卡方檢驗是非參數檢驗的一種,其穩健性不及參數檢驗,因此,從使用的角度來看,應首選參數檢驗,如果在無法滿足參數檢驗基礎條件的前提下,再考慮非參數檢驗。
(1)參數檢驗對觀測值的普遍要求是總體呈現正態分佈,但實際研究中,不是所有觀測值都呈現正態分佈,或者無法確定其是否正態分佈。由於缺乏足夠的信息,總體分佈未知,這些情況下,參數檢驗技術就未必適用了。
(2)最常用的非參數檢驗技術就是卡方檢驗,它最適合於次數分佈檢驗。
5)卡方檢驗的應用主要
(1)卡方擬合優度檢驗
擬合優度檢驗是用卡方統計量進行統計顯著性檢驗的重要內容之一。它是依據總體分佈狀況,計算出分類變量中各類別的期望頻數,與分佈的觀察頻數進行對比,判斷期望頻數與觀察頻數是否有顯著差異,從而達到從分類變量進行分析的目的。
(2)卡方獨立性檢驗
獨立性檢驗是統計學的一種檢驗方式,與適合性檢驗同屬於X2檢驗,即卡方檢驗(英文名:chi square test),它是根據次數資料判斷兩類因子彼此相關或相互獨立的假設檢驗。
6)卡方檢驗公式
(1)CHI值用於衡量實際值與理論值的差異程度,除以T是爲了避免不同觀察值與不同期望之間產生的偏差因T的不同而差別太大,所以除以E以消除這種弊端。
- 實際值與理論值偏差的絕對大小(由於平方的存在,差異被放大)
- 差異值與理論值的相對大小
(2)不同自由度的卡方分佈概率密度函數
由於卡方越大表示差異越大,此時的p值計算的是觀測分佈和期望分佈的差異大於卡方值的概率
(3)自由度計算:(行數-1)*(列數-1)
自由度計算例子
圖片中的自由度=(2-1)*(2-1)=1
(3)隨着CHI的增大,原假設成立的概率就越小。
7)卡方檢驗流程
(1)列出相關性表
- 相關性表的每列是每一種目標值,如患病和不患病、有效和無效、骰子取值123456等。
- 相關性表的每一行是每種條件,如吸菸和不吸菸、喝牛奶和不喝牛奶、觀察值和期望值等。
(2)定義假設問題
- 原假設H0:假設縱列因素不影響橫行的因素的變化
- 備擇假設H1:縱列因素對橫行的因素變化有影響
(3)計算CHI值
(4)計算相關性表的理論值
(5)計算自由度
(6)設定置信度/顯著性值,一般選擇0.9、0.95、0.99、0.995、0.999等
假如選擇顯著性水平=0.05,則H0成立的可能性(置信度)小於0.5%,即H1的概率大於99.5%。
(7)通過卡方分佈的臨界值表判斷假設是否成立
- 計算出的CHI值表示實際值與理論值的差異,越大表示實際值與理論值不符,即越有可能縱列因素會影響橫行數值,列因素不影響橫行值的範圍:0~臨界值。
- 如果計算出的CHI值大於臨界值,我們就排斥原假設,接受備擇假設;反之,卡方值小於臨界值,即在理論範圍內,無法推翻原假設,即無統計差異,接受原假設。
2. 卡方檢驗例子
1)例子:檢驗喝牛奶對感冒有沒有影響
(1)喝牛奶與感冒的相關性
(2)計算理論值
如果喝牛奶對感冒沒有影響,那麼喝不喝牛奶的感冒率都應該一樣,所以使用人羣總的感冒率來計算喝牛奶組以及不喝牛奶組的感冒人數。
(3)計算CHI值
CHI=(43-39.3231)^2/39.3231+(28-31.6848)^2/31.6848+(96-99.6769)^2/99.6769+(84-80.3152)^2/80.3152=1.077
(4)計算自由度V=(2-1)*(2-1)=1
(5)通過卡方分佈的臨界值表判斷喝牛奶和感冒是否真的獨立無關。
- 第一行表示顯著性水平,第一列表示自由度。
- 喝牛奶和感冒(95%概率)不相關的卡方分佈的臨界值(最大臨界值)是3.84,即如果CHI大於3.84,則認爲喝牛奶和感冒(有95%的概率)有關。顯然1.077<3.84,沒有達到卡方分佈的臨界值,所以喝牛奶和感冒獨立不相關的假設成立。
- 說明:臨界值3.84的意義表示:如果卡方值>3.84,則縱列因素和橫行因素不相關的概率<0.05(即顯著性水平),也即縱列因素和橫行因素相關的概率>0.95。
2)例子:不喫晚飯對體重下降沒有影響
(1)相關性數據
(2)建立假設檢驗
- H0:r1=r2,不喫晚飯對體重下降沒有影響,即喫不喫晚飯的體重下降率相等。
- H1:r1≠r2,不喫晚飯對體重下降有顯著影響,即喫不喫晚飯的體重下降率不相等。
(3)計算理論值
590*0.2267=133.765
590*(1-0.2267)=456.234
151*0.2267=34.2348
151*(1-0.2267)=116.765
(4)計算CHI值:(123-133.765)^2/133.765 + (467-456.234)^2/456.234 + (45-34.2348)^2/34.2348 + (106-116.765)^2/116.765=5.498
(5)計算自由度:(2-1)*(2-1)=1
(6)選擇顯著性水平=0.05,H0成立的可能性(置信度)小於0.5%,即H1的概率大於99.5%。
(7)通過卡方分佈的臨界值表判斷假設是否成立
- 查表得到3.84,而CHI值>3.84,差異有顯著統計學意義,按顯著性水平0.05水準,拒絕H0,可以認爲兩組的體重下降率有明顯差別。
- 所以不喫晚飯對體重下降有影響。
3)例子:根據投硬幣的結果,判斷硬幣是否均衡
(1)相關性表數據
(2)建立假設檢驗
- H0:硬幣是均衡的(理論值與觀測值差異不大)
- H1:硬幣是不均衡的
(3)卡方值:(28-25)^2/25 + (22-25)^2/25 = 0.72
(4)自由度:(2-1)*(2-1)=1
(5)置信度選擇95%
(6)0.72小於查表得到3.841, 所以有95%的把握說這個硬幣是均衡的。
4)例子:電商中消費者的性別對購買生鮮是否有影響
(1)相關性數據
(2)建立假設檢驗
- H0:性別對是否購買生鮮不影響
- H1:性別對是否購買生鮮有影響
(3)計算理論值
(4)計算卡方值:(206-249)^2/249 + (102-59)^2/59 + (527-484)^2/484 + (72-115)^2/115=58.4
(5)自由度:(2-1)*(2-1)=1
(6)選擇置信度90%
(7)58.4大於查表值2.71,拒絕H0,接受H1假設。所以不同的性別和在線上購買生鮮食品是有關係的。
3. 使用卡方檢驗進行特徵篩選
1)CHI值越大,說明兩個變量越不可能是獨立無關的,也就是說CHI值越大,兩個變量的相關程度也越高。
(1)對於特徵變量x1,x2,…,xn,以及分類變量y。只需要計算CHI(x1,y)、CHI(x2,y)、…、CHI(xn,y),並按照CHI的值從大到小將特徵排序。
(2)然後選擇閾值,大於閾值的特徵留下,小於閾值的特徵刪除。這樣篩選出一組特徵子集就是輸入模型訓練的特徵。 。
2)程序實現
(1)sklearn.feature_selection.SelectKBest:返回k個最佳特徵
(2)sklearn.feature_selection.SelectPercentile:返回表現最佳的前r%個特徵
(3)例子:使用卡方檢驗選擇特徵
#導入sklearn庫中的SelectKBest和chi2
from sklearn.feature_selection import SelectKBest ,chi2
#選擇相關性最高的前5個特徵
X_chi2 = SelectKBest(chi2, k=5).fit_transform(X, y)
X_chi2.shape
輸出:(27, 5)
(4)其它可選的方法
- f_classif: ANOVA F-value between label/feature for classification tasks.
- mutual_info_classif: Mutual information for a discrete target.
- chi2: Chi-squared stats of non-negative features for classification tasks.
- f_regression: F-value between label/feature for regression tasks.
- mutual_info_regression: Mutual information for a continuous target.
- SelectPercentile: Select features based on percentile of the highest scores.
- SelectFpr: Select features based on a false positive rate test.
- SelectFdr: Select features based on an estimated false discovery rate.
- SelectFwe: Select features based on family-wise error rate.
- GenericUnivariateSelect: Univariate feature selector with configurable mode.
參考文獻
[1]. 使用R語言進行卡方檢驗(chi-square test). https://www.jianshu.com/p/bb0bd72bc428
[2]. 結合日常生活的例子,瞭解什麼是卡方檢驗. https://www.jianshu.com/p/807b2c2bfd9b