1. 程式人生 > 其它 >卡方檢驗隨筆

卡方檢驗隨筆

一 什麼是卡方檢驗

考慮這樣一個場景:有一枚硬幣,我們希望知道,這枚硬幣是否是均勻的。於是我們拋了100次,檢視正面和反面的次數,根據這個結果來判斷這個硬幣是否為均勻的。

1)有50次正面,50次反面,那麼我們覺得基本上這個硬幣是均勻的;

2)有55次正面,45次反面,我們也覺得硬幣差不多是均勻的;

3)有80次正面,20次反面,那麼我們覺得這個硬幣似乎沒有那麼均勻;

4)有99次正面,1次反面,那麼我們就覺得這個硬幣基本不均勻了。

這就是我們面對投擲結果的主觀判斷。但是這樣的結果都是基於經驗產生的,是否有一種可以量化的數學方法呢?這就引出了卡方檢驗。卡方檢驗就是將上述四句話中標出的經驗性判斷,量化成具體的數值,讓我們的結果有理可循。

-- By Brisk yu 2022-05-19

二 怎麼計算卡方值

卡方檢驗的目的就在於計算一個稱為“卡方”的值:X2。通過介個值,我們就可以判斷出“硬幣是否為均勻的”。那麼下面首先看一下,這個值的計算公式:

 其中A為觀測值,T為期望值。在拋擲硬幣的例子中,比如有80次正面,20次反面,但是我們期望正反面均為50次,那麼此時的X2為:(80-50)2/50 + (20-50)2/50 = 36。具體來說,對於每種情況的值如下:

1)(50-50)2/50 + (50-50)2/50 = 0

2)(55-50)2/50 + (45-50)2/50 = 1.0

3)(80-50)2/50 + (20-50)2/50 = 36.0

4)(99-50)2/50 + (1-50)2

/50 = 96.04

顯然,從直觀上我們已經可以看出來,X2值越小,硬幣越可能是均勻的。因為這裡我們的期望是正反50次,即硬幣是均勻的,因此我們就說:值越小,越符合期望;值越大,越不符合期望。

三 怎麼根據卡方值確定結果

還是拋擲硬幣的例子,上面的結論只是一個趨勢,那麼我們究竟如何根據卡方值來確定硬幣是否為均勻的呢?

歷史上牛逼的科學家發現X2值這玩意服從一個稱為卡方分佈的東西,那麼我們就可以根據卡方分佈計算出某個卡方值出現的概率。並且我們提前設定一個閾值,來判斷結果是否符合期望(即,硬幣是均勻的)。

卡方分佈的影象如下:

水平座標即為卡方值。可以看出,如果希望計算出這個卡方值出現的概率,則還需要n這個值。n在這裡稱為自由度,即可以自由確定的變數個數

。考慮在拋擲硬幣的實驗中,假設我們拋擲100次,正面的次數自由確定後,反面的次數顯然為 (100-正面次數) ,因此自由度為1。

 有了自由度,有了卡方值,我們就可以獲取該卡方值出現的概率。這裡我們一般使用查表法,下圖為自由度為1的卡方分佈表:

針對一開始的四種情形,結合卡方分佈表,我們大致可以得出每種情況出現的概率:

1)卡方值=0<0.02,P>0.9,這種情況出現的概率大於0.9;

2)卡方值=1.0 在0.45和1.32之間,P在0.5和0.25之間,這種情況出現的概率大於0.25小於0.5;

3)卡方值=36.0>7.88,P小於0.005,這種情況出現的概率小於0.005;

4)卡方值=96.04,同上。

因此,我們可以看出,如果我們設定一個閾值,比如0.05,我們就會說:假設硬幣是均勻的,置信度為0.05,如果出現1)2),則在P在置信區間內,接受原假設;如果出現3)4),則P在置信區間外,拒絕原假設。

四 總結

這裡只是舉了投擲硬幣的例子。其實卡方檢驗具有廣泛的應用場景,比如機器學習特徵選擇中的相關性檢驗。當我們計算兩個特徵是否具有相關性時候,可以先假設兩個特徵具有相關性,然後再使用卡方檢驗判斷是否接受假設。