全國咨詢/投訴熱線:400-618-4000

卡方檢驗的原理和實現方法

更新時間:2020年08月07日15時24分 來源:傳智播客 瀏覽次數:

學習目標

掌握卡方檢驗的原理和實現

卡方檢驗用來分析兩個名義變量之間是否顯著相關。

學了這么多連續變量的統計分析,那么對于計數資料可咋整。小伙伴會問了:如果我想看不同患者人群的術后復發率有沒有差異,怎么辦?這時候就需要歡迎我們的統計小助手——卡方檢驗閃亮登場啦!

卡方檢驗可是一位重量級選手,凡是涉及到計數資料分布的比較都需要他的幫忙。

用藥物A治療急性心肌梗死患者198例,24小時內死亡11例,病死率為5.56%,另42例治療時采用藥物B,24小時內死亡6例,病死率為14.29%,提問:兩組病死率有無差別?

表1. 兩種藥物急性心肌梗塞患者治療后24小時內死亡情況。

1596784416853_卡方檢驗01.jpg


卡方檢驗的目的:確定樣本對象落入各類別的比例是否與隨機期望比例相等。

1.卡方值計算

1596784433042_卡方檢驗02.jpg

兩個概念

·觀測頻數

·預期頻數

計算各行和各列的和:

1596784458628_卡方檢驗03.jpg


計算每個格子在當前行中的預期頻數

1596784478385_卡方檢驗04.jpg


列出每個格子的觀測頻數和預期頻數

1596784502663_卡方檢驗05.jpg


卡方值的計算公式:

1596784536985_卡方檢驗06.jpg


計算每個格子的值:

1596784556800_卡方檢驗07.jpg


最終 $$\chi^2$$=0.19+4.17+10.06+0.19+4.17+4.11=22.89

自由度$df=(R-1)(C-1)=(2-1)(3-1)=2$

結論

1596784596034_卡方檢驗08.jpg


2.代碼實現

手動代碼實現:

·導入數據

import pandas as pd
data=pd.read_csv('data/chi2.csv')
data.head()

1596784613996_卡方檢驗09.jpg


·統計頻次(交叉表統計)

#統計頻次
table=pd.crosstab(data['sex'],data['major'])
table

1596784627537_卡方檢驗10.jpg


·計算預期頻次

#計算預期頻次
x=o.values
col=np.sum(x,axis=1,keepdims=True)#行的和
row=np.sum(x,axis=0,keepdims=True)#列的和
total=np.sum(x)#總和
col,row,total

1596784642528_卡方檢驗11.jpg

e=col*row/total#計算預期頻次
e


·計算卡方值

#計算卡方值
o_miuns_e=o.values-e #o-e
chi2=np.sum(np.square(o_miuns_e)/e)
chi2


·計算p值

#計算p值
df=(o.shape[0]-1)*(o.shape[1]-1)#自由度
p=1-ss.chi2.cdf(chi2,df)
p#7.074778948346072e-06  拒絕原假設   專業選擇和性別之間相關


·scipy實現:

Api:scipy.stats.chi2_contingency(observed):


·參數:

observed:觀測的實際頻次 通常為$$R\times C$$的表格

·返回值:

 chi2:卡方值

 p:p值

 dof:自由度

 expected:預期頻次

代碼實現

·加載數據

import pandas as pd
import scipy.stats as ss
data=pd.read_csv('data/chi2.csv')
data.head()


·統計觀測頻次

#統計頻次
o=pd.crosstab(data['sex'],data['major'])
o

·卡方檢驗

chi2,p,dof,e=ss.chi2_contingency(o)
chi2,p,dof,e

(23.71794871794872, 7.0747789483371884e-06, 2, array([[32.5, 30. , 37.5],[32.5, 30. , 37.5]]))

3.小結

·卡方檢驗:用來分析兩個名義變量之間是否顯著相關

·卡方值計算:

觀測頻次O

預期頻次E

自由度:$$(R-1)\times(C-1)$$

api:scipy.stats.chi2_contingency(observed)


猜你喜歡:
什么是RNN?RNN可以做什么?

Python基礎視頻教程(600集)

Python培訓課程

人妻系列无码专区_漂亮人妻被中出中文字幕_人妻中文制服巨乳中文