更新時間:2020-08-07 來源:黑馬程序員 瀏覽量:
學(xué)習(xí)目標(biāo)
掌握卡方檢驗(yàn)的原理和實(shí)現(xiàn)
卡方檢驗(yàn)用來分析兩個名義變量之間是否顯著相關(guān)。
學(xué)了這么多連續(xù)變量的統(tǒng)計(jì)分析,那么對于計(jì)數(shù)資料可咋整。小伙伴會問了:如果我想看不同患者人群的術(shù)后復(fù)發(fā)率有沒有差異,怎么辦?這時候就需要?dú)g迎我們的統(tǒng)計(jì)小助手——卡方檢驗(yàn)閃亮登場啦!
卡方檢驗(yàn)可是一位重量級選手,凡是涉及到計(jì)數(shù)資料分布的比較都需要他的幫忙。
用藥物A治療急性心肌梗死患者198例,24小時內(nèi)死亡11例,病死率為5.56%,另42例治療時采用藥物B,24小時內(nèi)死亡6例,病死率為14.29%,提問:兩組病死率有無差別?
表1. 兩種藥物急性心肌梗塞患者治療后24小時內(nèi)死亡情況。
01.jpg)
卡方檢驗(yàn)的目的:確定樣本對象落入各類別的比例是否與隨機(jī)期望比例相等。
1.卡方值計(jì)算
02.jpg)
兩個概念
·觀測頻數(shù)
·預(yù)期頻數(shù)
計(jì)算各行和各列的和:
03.jpg)
計(jì)算每個格子在當(dāng)前行中的預(yù)期頻數(shù)
04.jpg)
列出每個格子的觀測頻數(shù)和預(yù)期頻數(shù)
05.jpg)
卡方值的計(jì)算公式:
06.jpg)
計(jì)算每個格子的值:
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$
結(jié)論
08.jpg)
2.代碼實(shí)現(xiàn)
手動代碼實(shí)現(xiàn):
·導(dǎo)入數(shù)據(jù)
import pandas as pd
data=pd.read_csv('data/chi2.csv')
data.head()09.jpg)
·統(tǒng)計(jì)頻次(交叉表統(tǒng)計(jì))
#統(tǒng)計(jì)頻次 table=pd.crosstab(data['sex'],data['major']) table
10.jpg)
·計(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
11.jpg)
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):用來分析兩個名義變量之間是否顯著相關(guān)
·卡方值計(jì)算:
觀測頻次O
預(yù)期頻次E
自由度:$$(R-1)\times(C-1)$$
api:scipy.stats.chi2_contingency(observed)
猜你喜歡:
1024首播|39歲程序員逆襲記:不被年齡定義,AI浪潮里再迎春天
2025-10-241024程序員節(jié)丨10年同行,致敬用代碼改變世界的你
2025-10-24【AI設(shè)計(jì)】北京143期畢業(yè)僅36天,全員拿下高薪offer!黑馬AI設(shè)計(jì)連續(xù)6期100%高薪就業(yè)
2025-09-19【跨境電商運(yùn)營】深圳跨境電商運(yùn)營畢業(yè)22個工作日,就業(yè)率91%+,最高薪資達(dá)13500元
2025-09-19【AI運(yùn)維】鄭州運(yùn)維1期就業(yè)班,畢業(yè)14個工作日,班級93%同學(xué)已拿到Offer, 一線均薪資 1W+
2025-09-19【AI鴻蒙開發(fā)】上海校區(qū)AI鴻蒙開發(fā)4期5期,距離畢業(yè)21天,就業(yè)率91%,平均薪資14046元
2025-09-19