目錄
心臟病患病影響因素探究
一、研究目的
二、數(shù)據(jù)來源和相關(guān)說明
三、描述性統(tǒng)計分析
四、數(shù)據(jù)建模
4.1 全模型
(1)模型構(gòu)建
(2)模型預(yù)測
4.2 基于AIC準(zhǔn)則的選模型A
4.3 基于BIC準(zhǔn)則的選模型B
4.4 模型評估
五、結(jié)論及建議
5.1 結(jié)論
5.2 建議
六、代碼
心臟病患病影響因素探究
????????內(nèi)容提要:本文基于R語言faraway包中的wcgs數(shù)據(jù)集,分析心臟病患病影響因素。被調(diào)查人群中,有8.1%的人患有心臟病,91.9%的人未患心臟病。全模型中,變量age、sdp、chol、cigs和timechd對是否患心臟病有顯著影響,age、sdp、chol和cigs的增加都會增加患心臟病的優(yōu)勢,而timechd會降低患心臟病的優(yōu)勢比。用全模型預(yù)測前十位受訪者患病概率,分界點α=0.5 時,MCR=0.2 ;分界點α=0.7 時,MCR=0.1 。全模型,AIC模型和BIC模型中,AIC模型效果最好。
一、研究目的
????????分析心臟病患病影響因素,對預(yù)防心臟病的發(fā)生具有重要意義。本文欲通過建立logistic回歸模型,分析心臟病的影響因素,為心臟病的預(yù)防貢獻微薄之力。
二、數(shù)據(jù)來源和相關(guān)說明
????????數(shù)據(jù)來源于R語言faraway包中的wcgs數(shù)據(jù)集,其中包含3154條數(shù)據(jù)。這是某機構(gòu)調(diào)查的3154個健康男人,介于39-59歲,8年后看他們是否得了心臟病,并且收集了一些可能導(dǎo)致心臟病的自變量數(shù)據(jù),得到了數(shù)據(jù)集wcgs。數(shù)據(jù)集包含13個變量——age、height、weight、sdp、dbp、chol、behave、cigs、dibep、chd、typechd、timechd、arcus,其中有5個分類型變量,8個連續(xù)型變量。本文欲探究變量chd(冠心?。┑挠绊懸蛩?。
三、描述性統(tǒng)計分析
????????為了獲得對數(shù)據(jù)的整體了解,本文先對數(shù)據(jù)集中的變量chd、weight和cigs進行了描述性統(tǒng)計分析,得到了圖3-1到圖3-4的圖形。
圖3-1 是否患有冠心病
????? 由圖3-1可以得出:91.9%的人未患心臟病,8.1%的人患有心臟病。
圖3-2 weight和cigs直方圖
????? 由圖3-2可以得出:weight整體服從正態(tài)分布,大多集中在150-200之間;cigs大致服從指數(shù)分布,最多集中在0-10范圍內(nèi)。
圖3-3 箱線圖
????? 由圖3-3可以得出:體重與吸煙量在是否有心臟病上都存在一定的差異性?;夹呐K病的人體重的最大值低于不患心臟病的人,患心臟病的人體重的最低值高于不患心臟病的人,即患心臟病的人體重極值要小于不患心臟病的人。不患心臟病的人的吸煙數(shù)明顯低于患心臟病的人,即可以猜測患心臟病可能與吸煙數(shù)有關(guān)。
圖3-4 weight-cigs熱力圖
????? 由圖3-4可以得出:體重和吸煙數(shù)幾乎不存在線性相關(guān)關(guān)系。
四、數(shù)據(jù)建模
4.1 全模型
(1)模型構(gòu)建
????????為了分析心臟病的影響因素,本文建立了二元logistic回歸模型??紤]將所有變量均納入模型,但在參數(shù)估計時無法收斂,因此考慮剔除一些變量后再進行參數(shù)估計,得到表4-1的參數(shù)估計結(jié)果。
表4-1 全模型參數(shù)估計結(jié)果
變量 |
Estimate |
Std.Error |
z value |
Pr(>|z|) |
(Intercept) |
-9.29E+00 |
2.67E+00 |
-3.474 |
0.000513*** |
age |
6.47E-02 |
1.38E-02 |
4.694 |
2.68e-06*** |
height |
3.25E-02 |
3.85E-02 |
0.845 |
0.39792 |
weight |
5.44E-03 |
4.37E-03 |
1.245 |
0.213257 |
sdp |
1.93E-02 |
7.36E-03 |
2.622 |
0.008738** |
dbp |
-1.46E-02 |
1.23E-02 |
-1.193 |
0.232941 |
chol |
1.14E-02 |
1.74E-03 |
6.565 |
5.20e-11*** |
as.factor(behave)A2 |
9.15E-02 |
2.57E-01 |
0.357 |
0.721439 |
as.factor(behave)B3 |
-3.63E-01 |
2.77E-01 |
-1.311 |
0.189705 |
as.factor(behave)B4 |
-2.41E-01 |
3.57E-01 |
-0.676 |
0.49921 |
cigs |
1.53E-02 |
4.98E-03 |
3.066 |
0.002169** |
timechd |
-1.53E-03 |
8.44E-05 |
-18.094 |
<2e-16*** |
????? 由表4-1可以得出:
- 變量age、sdp、chol、cigs和timechd對是否患心臟病有顯著影響,其他變量無顯著影響。
- 其他自變量不變時,每天吸煙量增加一根,患心臟病的優(yōu)勢會變?yōu)橹暗?span style="color:#000000;">1.0154倍;若患心臟病的概率很小,則可以近似認(rèn)為吸煙量每增加一根,患心臟病的概率變?yōu)橹暗?.0154倍。
- 其他自變量不變時,age每增加一歲,患心臟病的優(yōu)勢會變?yōu)橹暗?.0669倍;sdp每增加一,患心臟病的優(yōu)勢會變?yōu)橹暗?.0195倍;chol每增加一,患心臟病的優(yōu)勢會變?yōu)橹暗?.0115倍;timechd每增加一,患心臟病的優(yōu)勢會變?yōu)橹暗?.9985倍,即會降低患心臟病的優(yōu)勢比。上述在統(tǒng)計學(xué)上均顯著。
- height每增加一,患心臟病的優(yōu)勢會變?yōu)橹暗?.0331倍;weight每增加一,患心臟病的優(yōu)勢會變?yōu)橹暗?.0055倍;dbp每增加一,患心臟病的優(yōu)勢會變?yōu)橹暗?.9855倍,即會降低患心臟病的優(yōu)勢比;與A1相比,A2患心臟病的優(yōu)勢比是其1.0958倍,B3是其0.6952倍,B4是其0.7858倍。上述在統(tǒng)計學(xué)上均不顯著。
(2)模型預(yù)測
????? 基于全模型,可以預(yù)測前十位受訪者的患病概率,預(yù)測結(jié)果如表4-2所示。
表4-2 全模型預(yù)測結(jié)果
樣本 |
預(yù)測概率 |
真實值 |
α=0.5 |
α=0.7 |
1 |
0.1961 |
0 |
0 |
0 |
2 |
0.018939 |
0 |
0 |
0 |
3 |
0.004255 |
0 |
0 |
0 |
4 |
0.004289 |
0 |
0 |
0 |
5 |
0.293788 |
1 |
0 |
0 |
6 |
0.013297 |
0 |
0 |
0 |
7 |
0.006133 |
0 |
0 |
0 |
8 |
0.008294 |
0 |
0 |
0 |
9 |
0.01238 |
0 |
0 |
0 |
10 |
0.529694 |
0 |
1 |
0 |
????????由表4-2可以得出:當(dāng)分界點α=0.5 時,十位受訪者的MCR 為MCR=0.2 ;當(dāng)分界點α=0.7 時,十位受訪者的MCR 為MCR=0.1 。
4.2 基于AIC準(zhǔn)則的選模型A
????????基于AIC準(zhǔn)則對全模型的變量進行選擇,得到選模型A,模型參數(shù)估計值如表4-3所示。
表4-3 選模型A的參數(shù)估計
變量 |
Estimate |
Std.Error |
z value |
Pr(>|z|) |
(Intercept) |
-7.43E+00 |
1.09E+00 |
-6.836 |
8.14e-12*** |
age |
6.38E-02 |
1.38E-02 |
4.635 |
3.57e-06*** |
weight |
6.52E-03 |
3.55E-03 |
1.835 |
0.066501· |
sdp |
1.20E-02 |
4.68E-03 |
2.556 |
0.010583* |
chol |
1.12E-02 |
1.73E-03 |
6.5 |
8.01e-11**** |
as.factor(behave)A2 |
1.22E-01 |
2.56E-01 |
0.476 |
0.634303 |
as.factor(behave)B3 |
-3.38E-01 |
2.77E-01 |
-1.223 |
0.221504 |
as.factor(behave)B4 |
-2.14E-01 |
3.57E-01 |
-0.6 |
0.548701 |
cigs |
1.65E-02 |
4.90E-03 |
3.362 |
0.000775*** |
timechd |
-1.52E-03 |
8.38E-05 |
-18.086 |
<2e-16*** |
????????由表4-3可以得出:選模型A保留了變量age、weight、sdp、chol、behave、cigs和timechd。在顯著性水平α=0.05 下,除了變量weight和behave,其他變量都具有統(tǒng)計學(xué)顯著性。
4.3 基于BIC準(zhǔn)則的選模型B
????????基于BIC準(zhǔn)則對全模型的變量進行選擇,得到選模型B,模型參數(shù)估計值如表4-4所示。
表4-4 選模型B的參數(shù)估計
變量 |
Estimate |
Std.Error |
z value |
Pr(>|z|) |
(Intercept) |
-6.71E+00 |
8.94E-01 |
-7.484 |
7.21e-14*** |
age |
6.44E-02 |
1.36E-02 |
4.745 |
2.08e-06*** |
sdp |
1.48E-02 |
4.47E-03 |
3.318 |
0.000908*** |
chol |
1.12E-02 |
1.70E-03 |
6.557 |
5.49e-11*** |
cigs |
1.66E-02 |
4.88E-03 |
3.402 |
0.000670*** |
timechd |
-1.55E-03 |
8.33E-05 |
-18.558 |
<2e-16*** |
????????由表4-4可以得出:選模型B保留了變量age、sdp、chol、cigs和timechd,這些變量在顯著性水平α=0.05 下都具有非常高的統(tǒng)計學(xué)顯著性。
4.4 模型評估
????????以前80%的樣本作為訓(xùn)練集,后20%的樣本作為測試集,分別用訓(xùn)練集擬合全模型、AIC準(zhǔn)則和BIC準(zhǔn)則進行變量篩選的模型,用測試集做ROC曲線和AUC箱線圖,得到圖4-1和圖4-2。
圖4-1 三個模型ROC曲線
圖4-2 三個模型AUC箱線圖
????? 由圖4-1和圖4-2可以得出:無論是ROC曲線,還是AUC箱線圖,三個模型的分類效果差異較小,其中AIC模型效果最好。
五、結(jié)論及建議
5.1 結(jié)論
- 被調(diào)查人群中,有8.1%的人患有心臟病,91.9%的人未患心臟病,患心臟病的概率較低;被調(diào)查人群的體重近似服從正態(tài)分布,吸煙數(shù)近似服從指數(shù)分布;患心臟病人群的吸煙數(shù)明顯多于不患心臟病人群。
- 變量age、sdp、chol、cigs和timechd對是否患心臟病有顯著影響,其他變量無顯著影響。
- 其他自變量不變時,age每增加一歲,患心臟病的優(yōu)勢會變?yōu)橹暗?.0669倍;sdp每增加一,患心臟病的優(yōu)勢會變?yōu)橹暗?.0195倍;chol每增加一,患心臟病的優(yōu)勢會變?yōu)橹暗?.0115倍;timechd每增加一,患心臟病的優(yōu)勢會變?yōu)橹暗?.9985倍,即會降低患心臟病的優(yōu)勢比。上述在統(tǒng)計學(xué)上均顯著。
- 全模型,基于AIC準(zhǔn)則的選模型A、基于BIC準(zhǔn)則的選模型B中,選模型A的分類效果最好。
5.2 建議
????? 吸煙和喝酒都會在一定程度上增加患心臟病的概率,因此為了自身身體健康,建議少吸煙,少喝酒。文章來源:http://www.zghlxwxcb.cn/news/detail-436857.html
六、代碼
library(faraway)
attach(wcgs)
wcgs[c(1:5),]
summary(chd)
#統(tǒng)計chd(冠心病)情況
x=c(2897,257)
color=c('red','orange')
piepercent1=round(100*x/sum(x),1)
pie(x,labels=piepercent1,main="是否患有冠心病",col=color)
legend("topright",c("否","是"),cex=1.5,fill=color)
#繪制變量weight和cigs的直方圖
par(mfrow=c(1,2))
hist(weight,main="體重",xlab="組別" ,ylab = "頻數(shù)")
hist(cigs,main="cigs",xlab="組別" ,ylab = "頻數(shù)")
#繪制冠心病與weight、cigs的箱線圖
par(mfrow=c(1,2))
boxplot(weight~chd,ylab="體重",xlab="是否患有冠心病",data=wcgs,names=c("否","是"))
boxplot(cigs~chd,ylab="cigs",xlab="是否患有冠心病",data=wcgs,names=c("否","是"))
#連續(xù)變量之間相關(guān)性熱力圖
library(corrplot)
b=wcgs[,c(3,8)]
k=cor(b,use='everything',method='pearson')
par(mfrow=c(1,1))
corrplot(k,addCoef.col = "black")
#全模型
model.full=glm(chd~age+height+weight+sdp+dbp+chol+as.factor(behave)+cigs+timechd
,family=binomial(link=logit),data=wcgs,maxit=50)
#模型結(jié)果,不顯著的變量也要解讀,加上不具有統(tǒng)計學(xué)意義
summary(model.full)
#似然比卡方檢驗?zāi)P驼w效果
1-pchisq(30.56,df=7)
pred=predict(model.full,wcgs)
pred
#基于AIC準(zhǔn)則下變量的選擇
c(AIC(model.full),BIC(model.full))
model.aic=step(model.full,trace = F)
summary(model.aic)
ss=length(wcgs[,1])#樣本量
#基于BIC準(zhǔn)則下變量的選擇
model.bic=step(model.full,trace = F,k=log(ss))
summary(model.bic)
#只留了特別顯著的變量
library(pROC)
#多次模擬,去除隨機誤差的影響(了解即可)
nsimu=100#進行100次模擬
p=0.8#用作訓(xùn)練集的樣本概率
ss0=round(ss*p)#訓(xùn)練集樣本量
AUC=as.data.frame(matrix(0,nsimu,3))#100行,3列的零數(shù)據(jù)框
names(AUC)=c("全模型","AIC模型","BIC模型")
#開始模擬
for(i in 1:nsimu){
#打亂a樣本順序,隨即編號并排序
aa=wcgs[order(runif(ss)),]
#數(shù)據(jù)集aa的前70%作為訓(xùn)練集
A0=aa[c(1:ss0),]
#數(shù)據(jù)集aa的后30%作為測試集
A1=aa[-c(1:ss0),]
model.1=glm(chd~age+height+weight+sdp+dbp+chol+as.factor(behave)+cigs+timechd,family=binomial(link=logit),data=A0)
model.2=glm(chd~age+weight+sdp+chol+as.factor(behave)+cigs+timechd,family=binomial(link=logit),data=A0)
model.3=glm(chd~age+sdp+chol+cigs+timechd,family=binomial(link=logit),data=A0)
#測試集檢驗?zāi)P托Ч嬎泐A(yù)測值
pred.1=predict(model.1,A1)
pred.2=predict(model.2,A1)
pred.3=predict(model.3,A1)
#計算AUC值
y=A1$chd
auc.1=roc(y,pred.1)$auc
auc.2=roc(y,pred.2)$auc
auc.3=roc(y,pred.3)$auc
#將各個AUC值填充到零矩陣中
AUC[i,]=c(auc.1,auc.2,auc.3)
}
#繪制箱線圖看三個模型的AUC分布情況,AUC越大,模型分類效果越好
par(mfrow=c(1,1))
boxplot(AUC,main="外樣本AUC對比")
#利用最后一次模擬數(shù)據(jù)繪制三個模型的ROC曲線
#計算混淆矩陣
roc.1=roc(y,pred.1)
roc.2=roc(y,pred.2)
roc.3=roc(y,pred.3)
#繪制三條ROC曲線,比較效果
par(mfrow=c(1,3))
plot(roc.1,main="全模型")
plot(roc.2,main="AIC模型")
plot(roc.3,main="BIC模型")
個人意見,還請各位讀者批評指正!文章來源地址http://www.zghlxwxcb.cn/news/detail-436857.html
到了這里,關(guān)于【統(tǒng)計模型】心臟病患病影響因素探究的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!