教育行業(yè)A股IPO第一股(股票代碼 003032)

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

卡方檢驗的原理和實現(xiàn)方法

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

學習目標

掌握卡方檢驗的原理和實現(xiàn)

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

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

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

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

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

1596784416853_卡方檢驗01.jpg


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

1.卡方值計算

1596784433042_卡方檢驗02.jpg

兩個概念

·觀測頻數(shù)

·預期頻數(shù)

計算各行和各列的和:

1596784458628_卡方檢驗03.jpg


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

1596784478385_卡方檢驗04.jpg


列出每個格子的觀測頻數(shù)和預期頻數(shù)

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.代碼實現(xiàn)

手動代碼實現(xiàn):

·導入數(shù)據(jù)

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

1596784613996_卡方檢驗09.jpg


·統(tǒng)計頻次(交叉表統(tǒng)計)

#統(tǒng)計頻次
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  拒絕原假設   專業(yè)選擇和性別之間相關


·scipy實現(xiàn):

Api:scipy.stats.chi2_contingency(observed):


·參數(shù):

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

·返回值:

 chi2:卡方值

 p:p值

 dof:自由度

 expected:預期頻次

代碼實現(xiàn)

·加載數(shù)據(jù)

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


·統(tǒng)計觀測頻次

#統(tǒng)計頻次
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培訓課程

0 分享到:
和我們在線交談!