【统计模型】心脏病患病影响因素探究

news2024/9/28 9:30:47

目录

心脏病患病影响因素探究

一、研究目的

二、数据来源和相关说明

三、描述性统计分析

四、数据建模

4.1 全模型

(1)模型构建

(2)模型预测

4.2 基于AIC准则的选模型A

4.3 基于BIC准则的选模型B

4.4 模型评估

五、结论及建议

5.1 结论

5.2 建议

六、代码


心脏病患病影响因素探究

        内容提要:本文基于R语言faraway包中的wcgs数据集,分析心脏病患病影响因素。被调查人群中,有8.1%的人患有心脏病,91.9%的人未患心脏病。全模型中,变量age、sdp、chol、cigs和timechd对是否患心脏病有显著影响,age、sdp、chol和cigs的增加都会增加患心脏病的优势,而timechd会降低患心脏病的优势比。用全模型预测前十位受访者患病概率,分界点α=0.5 时,MCR=0.2 ;分界点α=0.7 时,MCR=0.1 全模型,AIC模型和BIC模型中,AIC模型效果最好。

一、研究目的

        分析心脏病患病影响因素,对预防心脏病的发生具有重要意义。本文欲通过建立logistic回归模型,分析心脏病的影响因素,为心脏病的预防贡献微薄之力。

二、数据来源和相关说明

        数据来源于R语言faraway包中的wcgs数据集,其中包含3154条数据。这是某机构调查的3154个健康男人,介于39-59岁,8年后看他们是否得了心脏病,并且收集了一些可能导致心脏病的自变量数据,得到了数据集wcgs。数据集包含13个变量——age、height、weight、sdp、dbp、chol、behave、cigs、dibep、chd、typechd、timechd、arcus,其中有5个分类型变量,8个连续型变量。本文欲探究变量chd(冠心病)的影响因素。

三、描述性统计分析

        为了获得对数据的整体了解,本文先对数据集中的变量chd、weight和cigs进行了描述性统计分析,得到了图3-1到图3-4的图形。

图3-1 是否患有冠心病

      由图3-1可以得出:91.9%的人未患心脏病,8.1%的人患有心脏病。

图3-2 weight和cigs直方图

      由图3-2可以得出:weight整体服从正态分布,大多集中在150-200之间;cigs大致服从指数分布,最多集中在0-10范围内。

图3-3 箱线图

      由图3-3可以得出:体重与吸烟量在是否有心脏病上都存在一定的差异性。患心脏病的人体重的最大值低于不患心脏病的人,患心脏病的人体重的最低值高于不患心脏病的人,即患心脏病的人体重极值要小于不患心脏病的人。不患心脏病的人的吸烟数明显低于患心脏病的人,即可以猜测患心脏病可能与吸烟数有关。

图3-4 weight-cigs热力图

      由图3-4可以得出:体重和吸烟数几乎不存在线性相关关系。

四、数据建模

4.1 全模型

(1)模型构建

        为了分析心脏病的影响因素,本文建立了二元logistic回归模型。考虑将所有变量均纳入模型,但在参数估计时无法收敛,因此考虑剔除一些变量后再进行参数估计,得到表4-1的参数估计结果。

表4-1 全模型参数估计结果

变量

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对是否患心脏病有显著影响,其他变量无显著影响。
  • 其他自变量不变时,每天吸烟量增加一根,患心脏病的优势会变为之前的1.0154倍;若患心脏病的概率很小,则可以近似认为吸烟量每增加一根,患心脏病的概率变为之前的1.0154倍。
  • 其他自变量不变时,age每增加一岁,患心脏病的优势会变为之前的1.0669倍;sdp每增加一,患心脏病的优势会变为之前的1.0195倍;chol每增加一,患心脏病的优势会变为之前的1.0115倍;timechd每增加一,患心脏病的优势会变为之前的0.9985倍,即会降低患心脏病的优势比。上述在统计学上均显著。
  • height每增加一,患心脏病的优势会变为之前的1.0331倍;weight每增加一,患心脏病的优势会变为之前的1.0055倍;dbp每增加一,患心脏病的优势会变为之前的0.9855倍,即会降低患心脏病的优势比;与A1相比,A2患心脏病的优势比是其1.0958倍,B3是其0.6952倍,B4是其0.7858倍。上述在统计学上均不显著。

(2)模型预测

      基于全模型,可以预测前十位受访者的患病概率,预测结果如表4-2所示。

表4-2 全模型预测结果

样本

预测概率

真实值

α=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可以得出:当分界点α=0.5 时,十位受访者的MCRMCR=0.2 ;当分界点α=0.7 时,十位受访者的MCRMCR=0.1

4.2 基于AIC准则的选模型A

        基于AIC准则对全模型的变量进行选择,得到选模型A,模型参数估计值如表4-3所示。

表4-3 选模型A的参数估计

变量

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,其他变量都具有统计学显著性。

4.3 基于BIC准则的选模型B

        基于BIC准则对全模型的变量进行选择,得到选模型B,模型参数估计值如表4-4所示。

表4-4 选模型B的参数估计

变量

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 下都具有非常高的统计学显著性。

4.4 模型评估

        以前80%的样本作为训练集,后20%的样本作为测试集,分别用训练集拟合全模型、AIC准则和BIC准则进行变量筛选的模型,用测试集做ROC曲线和AUC箱线图,得到图4-1和图4-2。

图4-1 三个模型ROC曲线

图4-2 三个模型AUC箱线图

      由图4-1和图4-2可以得出:无论是ROC曲线,还是AUC箱线图,三个模型的分类效果差异较小,其中AIC模型效果最好。

五、结论及建议

5.1 结论

  • 被调查人群中,有8.1%的人患有心脏病,91.9%的人未患心脏病,患心脏病的概率较低;被调查人群的体重近似服从正态分布,吸烟数近似服从指数分布;患心脏病人群的吸烟数明显多于不患心脏病人群。
  • 变量age、sdp、chol、cigs和timechd对是否患心脏病有显著影响,其他变量无显著影响。
  • 其他自变量不变时,age每增加一岁,患心脏病的优势会变为之前的1.0669倍;sdp每增加一,患心脏病的优势会变为之前的1.0195倍;chol每增加一,患心脏病的优势会变为之前的1.0115倍;timechd每增加一,患心脏病的优势会变为之前的0.9985倍,即会降低患心脏病的优势比。上述在统计学上均显著。
  • 全模型,基于AIC准则的选模型A、基于BIC准则的选模型B中,选模型A的分类效果最好。

5.2 建议

      吸烟和喝酒都会在一定程度上增加患心脏病的概率,因此为了自身身体健康,建议少吸烟,少喝酒。

六、代码

library(faraway)
attach(wcgs)
wcgs[c(1:5),]

summary(chd)
#统计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 = "频数")
hist(cigs,main="cigs",xlab="组别" ,ylab = "频数")
#绘制冠心病与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("否","是"))
#连续变量之间相关性热力图
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)
#模型结果,不显著的变量也要解读,加上不具有统计学意义
summary(model.full)
#似然比卡方检验模型整体效果
1-pchisq(30.56,df=7)

pred=predict(model.full,wcgs)
pred

#基于AIC准则下变量的选择
c(AIC(model.full),BIC(model.full))
model.aic=step(model.full,trace = F)
summary(model.aic)
ss=length(wcgs[,1])#样本量
#基于BIC准则下变量的选择
model.bic=step(model.full,trace = F,k=log(ss))
summary(model.bic)
#只留了特别显著的变量

library(pROC)
#多次模拟,去除随机误差的影响(了解即可)
nsimu=100#进行100次模拟
p=0.8#用作训练集的样本概率
ss0=round(ss*p)#训练集样本量
AUC=as.data.frame(matrix(0,nsimu,3))#100行,3列的零数据框
names(AUC)=c("全模型","AIC模型","BIC模型")
#开始模拟
for(i in 1:nsimu){
  #打乱a样本顺序,随即编号并排序
  aa=wcgs[order(runif(ss)),]
  #数据集aa的前70%作为训练集
  A0=aa[c(1:ss0),]
  #数据集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)
  
#测试集检验模型效果,计算预测值
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对比")
#利用最后一次模拟数据绘制三个模型的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.coloradmin.cn/o/503803.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vector - CAPL - CANoe硬件配置函数 - 02

Hardware Configuration 硬件配置中包含CAN或者CANFD的参数配置&#xff0c;其中包含波特率、时间片1、时间片2、时间量子中的同步跳跃宽度、采样点数等信息&#xff1b;随着研发系统中各类型的平台化&#xff0c;测试想要跟上研发的进度&#xff0c;也必须进行平台化&#xff…

linux【网络编程】之网络套接字预备

linux【网络编程】之网络套接字 一、必备知识1.1 端口号1.2 端口号方面疑问及解决方案 二、TCP/UDP协议三、网络字节流四、socket编程4.1 认识接口4.2 浅析sockaddr结构 一、必备知识 在【网络基础】中我们提到了IP地址&#xff0c;接下来了解一下网络通信中其他方面的知识 1…

浏览器的渲染

浏览器的渲染 浏览器的渲染过程分为两大阶段&#xff0c;八大步骤&#xff0c;由两个线程完成&#xff0c; 下面是总的过程 第一个 渲染主线程 它包括5个步骤&#xff0c; 1、html解析 parse 解析我们的HTML&#xff0c;生成DOM树结构 2、样式计算 computed style 比如我们…

系统运维(Git篇)

Git基础 Git Git是一种分布式版本控制系统&#xff0c;可以帮助我们管理代码的版本和变更。通过学习Git&#xff0c;我们可以更好地理解版本控制的原理和应用&#xff0c;同时也可以掌握Git的使用和管理技巧。 Docker Docker是一种容器化平台&#xff0c;可以将应用程序及其依赖…

华为OD机试真题2023(JAVA)

目录 华为OD机试是什么&#xff1f;华为OD面试流程&#xff1f;华为OD机试通过率高吗&#xff1f;华为OD薪资待遇&#xff1f;华为OD晋升空间&#xff1f; 大家好&#xff0c;我是哪吒。 本专栏包含了最新最全的华为OD机试真题&#xff0c;有详细的分析和Java代码解答。已帮助…

web前端的同源策略是什么?

一、同源策略 1995年&#xff0c;同源政策由 Netscape 公司(网景公司)引入浏览器。目前&#xff0c;所有浏览器都实行这个政策。同源政策的目的&#xff0c;是为了保证用户信息的安全&#xff0c;防止恶意的网站窃取数据。随着互联网的发展&#xff0c;“同源政策”越来越严格…

深入理解java虚拟机精华总结:运行时栈帧结构、方法调用、字节码解释执行引擎

深入理解java虚拟机精华总结&#xff1a;运行时栈帧结构、方法调用、字节码解释执行引擎 运行时栈帧结构局部变量表操作数栈动态连接方法返回地址 方法调用解析分派静态分派动态分派 基于栈的字节码解释执行引擎 运行时栈帧结构 Java虚拟机以方法作为最基本的执行单元&#xf…

栈在表达式中的应用(中/后前缀的转换)机算,手算模拟。

一.中缀表达式转后缀表达式 初始化一个栈&#xff0c;用于保存 暂时还不确定的运算顺序的“运算符” 。 从 左往右 依次扫描&#xff0c;会遇到三种情况&#xff1a; 1.遇到 操作数&#xff0c;直接加入后缀表达。 2.遇到 界限符&#xff1a;     ①遇到 “(” 入栈。  …

计算机系统-虚拟存储器

例行前言&#xff1a; 本篇不是学习课程时的笔记&#xff0c;是重看这本书时的简记。对于学习本课程的同学&#xff0c;未涉及的内容不代表考试不涉及(mmap&#xff0c;动态存储器分配&#xff0c;linux虚拟存储器)。本章的大部分内容已经在OS中学习过了&#xff0c;但本章内容…

SSM架构项目实战(CRM)

开始时间&#xff1a;7月17日 技术架构 &#xff08;一&#xff09;Web开发4层开发 视图层&#xff08;view&#xff09;&#xff1a;展示数据&#xff0c;跟用户交互。《html&#xff0c;css&#xff0c;js&#xff0c;jquery&#xff0c;bootstrap&#xff08;ext|easyUI&…

代码随想录算法训练营第三十五天 | 两维贪心、重叠区间

860.柠檬水找零 文档讲解&#xff1a;代码随想录 (programmercarl.com) 视频讲解&#xff1a;贪心算法&#xff0c;看上去复杂&#xff0c;其实逻辑都是固定的&#xff01;LeetCode&#xff1a;860.柠檬水找零_哔哩哔哩_bilibili 状态&#xff1a;能直接做出来。 思路 只需要维…

【java-04】深入浅出多态、内部类、常用API

主要内容 多态 内部类 常用API 1 多态 1.1 面向对象三大特征 ? 封装 , 继承 , 多态 1.2 什么是多态 ? 一个对象在不同时刻体现出来的不同形态 举例 : 一只猫对象 我们可以说猫就是猫 : Cat cat new Cat();我们也可以说猫是动物 : Animal cat new Cat();这里对象在不…

知识推理——CNN模型总结

记录一下我看过的利用CNN实现知识推理的论文。 最后修改时间&#xff1a;2023.05.08 目录 1.ConvE 1.1.解决的问题 1.2.优势 1.3.贡献与创新点 1.4.方法 1.4.1 为什么用二维卷积&#xff0c;而不是一维卷积&#xff1f; 1.4.2.ConvE具体实现 1.ConvE 论文&#xff1a…

聊聊我在阿里第一年375晋升的心得

前言 思来想去&#xff0c;觉得这个事情除了领导赏识大佬抬爱之外&#xff0c;还是挺不容易的&#xff0c;主观认为有一定的参考价值&#xff0c;然后也是复盘一下&#xff0c;继续完善自己。 绩效 首先晋升的条件就是要有个好绩效&#xff0c;那么我们就先基于绩效这个维度…

基于`IRIS`列存储,我们能做什么

文章目录 基于IRIS列存储&#xff0c;我们能做什么简介使用场景如何使用列存储什么情况下使用列储存统计数据数量count计算字段平均值avg计算字段和sum 列存储与行存储区别总结 基于IRIS列存储&#xff0c;我们能做什么 简介 列存储是一种数据存储方式&#xff0c;与传统的行…

Win11-RTX4060安装Pytorch-GPU干货避坑指南

文章目录 1、版本要和pytorch官网对应&#xff0c;CUDA11.8及其对应版本的cudnn2、CUDA Toolkit安装出现自动重启3、Python版本4、配置永久国内镜像源5、要在激活的虚拟环境里安装pytorch6、进入python后检查是否gpu配置成功7、在虚拟环境中启动jupyter notebook8、conda中inst…

【Docker】5、Dockerfile 自定义镜像(镜像结构、Dockerfile 语法、把 Java 项目弄成镜像)

目录 零、学习内容一、镜像结构二、Dockerfile四、基于 java:8-alpine 构建自己的 Java 项目镜像 零、学习内容 镜像结构Dockerfile 语法构建 Java 项目 ① 之前使用的镜像都是 DockerHub 官方提供的 ② 开发者需要将自己的微服务制作为镜像 一、镜像结构 镜像是由应用程序及其…

【新星计划-2023】什么是ARP?详解它的“解析过程”与“ARP表”。

一、什么是ARP ARP&#xff08;地址解析协议&#xff09;英文全称“Address Resolution Protocol”&#xff0c;是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机&#xff0c;并接收返回消息&#xff0c;以此确…

ConcurrentHashMap实现原理

1. 哈希表 1.1 介绍 哈希表是一种key-value存储数据的结构&#xff0c;根据key即可查到对应的value。 如果所有的键是整数&#xff0c;我们可用简单的无序数组来表示&#xff0c;键作为数组索引&#xff0c;值即为对应的值 1.2 链式哈希表 链式哈希表本质由一组链表构成。每…

用MacBook实操:docker本地部署mysql+php+nginx坏境

大家好&#xff0c;我拿出我的macbook,带着大家实操用docker部署mysqlphpnginx环境。 之前的小白实操搭建Nginx1.2.0PHP7.0MySQL5.7Thinkphp5项目&#xff0c;看这篇就够了&#xff0c;欢迎阅读。 之前的是服务器上配置环境&#xff0c;现在在mac本地搭建全栈开发环境。 目录…