tft每日頭條

 > 科技

 > 一個變量中幾個值的卡方檢驗

一個變量中幾個值的卡方檢驗

科技 更新时间:2024-12-02 10:21:58
卡方檢驗

當衡量兩個連續變量間的線性關系時,我們可以使用Pearson相關系數。那麼當我們面對的數據是兩個分類變量呢?沒錯,看過下面這張圖的應該還記得,我們可以用列聯表結合卡方檢驗來分析分類變量間的相關性。

一個變量中幾個值的卡方檢驗(分類變量的相關性)1

一、列聯表

列聯表是一種常見的分類彙總表,它将兩個變量的不同水平分别放在行和列中,中間對應着每組的頻數。如下表:使用藥物A且治愈了的病人有1800名,使用藥物B且治愈了的病人有800名……

一個變量中幾個值的卡方檢驗(分類變量的相關性)2

在pandas中,我們可以直接使用pd.crosstab(rows,columns,margins=True)來生成列聯表。其中margins用于設置是否限制彙總列和彙總行。

有些時候我們可能需要百分比數據,這時我們直接用每個單元格除以彙總列或彙總行的數據即可。

二、卡方檢驗

卡方檢驗的思想在于比較期望頻數和實際頻數的吻合程度,實際頻數就是上邊表格裡黃色區域的數字,而期望頻數則是指行列變量相互獨立的時候期望的頻數。我們下邊用一張圖來演示如何計算期望頻數。

一個變量中幾個值的卡方檢驗(分類變量的相關性)3

在第三張圖中,每個單元格的期望頻率為對應的行總計與列總計的乘積,比如第一個單元格的期望頻率為66.67%*86.67%=57.78%。

事實上,我們也可以一步到位,用第一張圖中行總計2000與列總計2600相乘,然後除以全部樣本量3000,就可以得到1733,也就是第一個單元格的期望頻數。不過這裡為了方便理解,拆解成了三步。

接下來就是進行卡方檢驗了,卡方檢驗的零假設是期望頻數等于實際頻數(差異不顯著),備擇假設是期望頻數不等于實際頻數(差異顯著,具有統計學意義),即兩個變量相關。其計算公式為:

一個變量中幾個值的卡方檢驗(分類變量的相關性)4

Obs代表每個單元格内的觀測頻數(Observation),Exp代表每個單元格内的期望頻數(Expection)。我們用上邊這個例子演示一下:

一個變量中幾個值的卡方檢驗(分類變量的相關性)5

到這裡還沒結束,我們需要根據求得的值從卡方分布中找到對應的概率。

卡方分布

卡方統計量服從自由度為(r-1)(c-1)的卡方分布(r=row,代表行數,c=column,代表列數)。我們用一張圖來看一下:

一個變量中幾個值的卡方檢驗(分類變量的相關性)6

其中k就是卡方分布的自由度。可以看到當自由度為1時,卡方分布是一個長尾型的分布。那麼我們現在來看一下剛才的問題,兩種藥品的治愈效果一樣嗎?

from scipy.stats import chi2_contingency import pandas as pd df = pd.DataFrame({ 'medical': ['A', 'A', 'B', 'B'], 'cured': [1, 0, 1, 0], 'count': [1800, 200, 800, 200] }) cross_tab = pd.pivot_table(data=df, values='count', index='medical', columns='cured', margins=True, aggfunc=np.sum) print(cross_tab) print('卡方={0}\nP值={1}'.format( *chi2_contingency(cross_tab)[:2]))

一個變量中幾個值的卡方檢驗(分類變量的相關性)7

一個變量中幾個值的卡方檢驗(分類變量的相關性)8

可以看到,p值小于0.05,可以認為兩個變量之間存在相關性。不過需要注意的是,卡方檢驗并不能得出兩個分類變量相關性的強弱,隻能展現出它們是否相關。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved