更新時(shí)間:2020年08月07日15時(shí)24分 來源:傳智播客 瀏覽次數(shù):
學(xué)習(xí)目標(biāo)
掌握卡方檢驗(yàn)的原理和實(shí)現(xiàn)
卡方檢驗(yàn)用來分析兩個(gè)名義變量之間是否顯著相關(guān)。
學(xué)了這么多連續(xù)變量的統(tǒng)計(jì)分析,那么對(duì)于計(jì)數(shù)資料可咋整。小伙伴會(huì)問了:如果我想看不同患者人群的術(shù)后復(fù)發(fā)率有沒有差異,怎么辦?這時(shí)候就需要?dú)g迎我們的統(tǒng)計(jì)小助手——卡方檢驗(yàn)閃亮登場啦!
卡方檢驗(yàn)可是一位重量級(jí)選手,凡是涉及到計(jì)數(shù)資料分布的比較都需要他的幫忙。
用藥物A治療急性心肌梗死患者198例,24小時(shí)內(nèi)死亡11例,病死率為5.56%,另42例治療時(shí)采用藥物B,24小時(shí)內(nèi)死亡6例,病死率為14.29%,提問:兩組病死率有無差別?
表1. 兩種藥物急性心肌梗塞患者治療后24小時(shí)內(nèi)死亡情況。
卡方檢驗(yàn)的目的:確定樣本對(duì)象落入各類別的比例是否與隨機(jī)期望比例相等。
1.卡方值計(jì)算
兩個(gè)概念
·觀測頻數(shù)
·預(yù)期頻數(shù)
計(jì)算各行和各列的和:
計(jì)算每個(gè)格子在當(dāng)前行中的預(yù)期頻數(shù)
列出每個(gè)格子的觀測頻數(shù)和預(yù)期頻數(shù)
卡方值的計(jì)算公式:
計(jì)算每個(gè)格子的值:
最終 $$\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$
結(jié)論
2.代碼實(shí)現(xiàn)
手動(dòng)代碼實(shí)現(xiàn):
·導(dǎo)入數(shù)據(jù)
import pandas as pd
data=pd.read_csv('data/chi2.csv')
data.head()
·統(tǒng)計(jì)頻次(交叉表統(tǒng)計(jì))
#統(tǒng)計(jì)頻次
table=pd.crosstab(data['sex'],data['major'])
table
·計(jì)算預(yù)期頻次
#計(jì)算預(yù)期頻次
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
e=col*row/total#計(jì)算預(yù)期頻次
e
·計(jì)算卡方值
#計(jì)算卡方值
o_miuns_e=o.values-e #o-e
chi2=np.sum(np.square(o_miuns_e)/e)
chi2
·計(jì)算p值
#計(jì)算p值
df=(o.shape[0]-1)*(o.shape[1]-1)#自由度
p=1-ss.chi2.cdf(chi2,df)
p#7.074778948346072e-06 拒絕原假設(shè) 專業(yè)選擇和性別之間相關(guān)
·scipy實(shí)現(xiàn):
Api:scipy.stats.chi2_contingency(observed):
·參數(shù):
observed:觀測的實(shí)際頻次 通常為$$R\times C$$的表格
·返回值:
chi2:卡方值
p:p值
dof:自由度
expected:預(yù)期頻次
代碼實(shí)現(xiàn)
·加載數(shù)據(jù)
import pandas as pd
import scipy.stats as ss
data=pd.read_csv('data/chi2.csv')
data.head()
·統(tǒng)計(jì)觀測頻次
#統(tǒng)計(jì)頻次
o=pd.crosstab(data['sex'],data['major'])
o
·卡方檢驗(yàn)
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.小結(jié)
·卡方檢驗(yàn):用來分析兩個(gè)名義變量之間是否顯著相關(guān)
·卡方值計(jì)算:
觀測頻次O
預(yù)期頻次E
自由度:$$(R-1)\times(C-1)$$
api:scipy.stats.chi2_contingency(observed)
猜你喜歡:
什么是RNN?RNN可以做什么?
北京校區(qū)