更新時(shí)間:2020-08-07 來(lái)源:黑馬程序員 瀏覽量:
學(xué)習(xí)目標(biāo)
掌握卡方檢驗(yàn)的原理和實(shí)現(xiàn)
卡方檢驗(yàn)用來(lái)分析兩個(gè)名義變量之間是否顯著相關(guān)。
學(xué)了這么多連續(xù)變量的統(tǒng)計(jì)分析,那么對(duì)于計(jì)數(shù)資料可咋整。小伙伴會(huì)問了:如果我想看不同患者人群的術(shù)后復(fù)發(fā)率有沒有差異,怎么辦?這時(shí)候就需要?dú)g迎我們的統(tǒng)計(jì)小助手——卡方檢驗(yàn)閃亮登場(chǎng)啦!
卡方檢驗(yàn)可是一位重量級(jí)選手,凡是涉及到計(jì)數(shù)資料分布的比較都需要他的幫忙。
用藥物A治療急性心肌梗死患者198例,24小時(shí)內(nèi)死亡11例,病死率為5.56%,另42例治療時(shí)采用藥物B,24小時(shí)內(nèi)死亡6例,病死率為14.29%,提問:兩組病死率有無(wú)差別?
表1. 兩種藥物急性心肌梗塞患者治療后24小時(shí)內(nèi)死亡情況。
卡方檢驗(yàn)的目的:確定樣本對(duì)象落入各類別的比例是否與隨機(jī)期望比例相等。
1.卡方值計(jì)算
兩個(gè)概念
·觀測(cè)頻數(shù)
·預(yù)期頻數(shù)
計(jì)算各行和各列的和:
計(jì)算每個(gè)格子在當(dāng)前行中的預(yù)期頻數(shù)
列出每個(gè)格子的觀測(cè)頻數(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:觀測(cè)的實(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ì)觀測(cè)頻次
#統(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):用來(lái)分析兩個(gè)名義變量之間是否顯著相關(guān)
·卡方值計(jì)算:
觀測(cè)頻次O
預(yù)期頻次E
自由度:$$(R-1)\times(C-1)$$
api:scipy.stats.chi2_contingency(observed)
猜你喜歡: