首页 > 其他分享 >R语言用逻辑回归预测BRFSS中风数据、方差分析anova、ROC曲线AUC、可视化探索

R语言用逻辑回归预测BRFSS中风数据、方差分析anova、ROC曲线AUC、可视化探索

时间:2023-09-14 17:33:33浏览次数:41  
标签:BRFSS AUC 中风 变量 受访者 回归 ROC 逻辑 数据

全文链接:https://tecdat.cn/?p=33659

原文出处:拓端数据部落公众号

行为风险因素监测系统(BRFSS)是一项年度电话调查。BRFSS旨在确定成年人口中的风险因素并报告新兴趋势。例如,调查对象被询问他们的饮食和每周体育活动、HIV/AIDS状况、可能的吸烟情况、免疫接种、健康状况、健康日数-与健康相关的生活质量、医疗保健获取、睡眠不足、高血压认知、胆固醇认知、慢性健康问题、酒精消费、水果和蔬菜消费、关节炎负担以及安全带使用情况等。

加载数据

   
load("brfs.RData")

第一部分:关于数据

数据收集:

对于固定电话样本采用了不成比例分层抽样(DSS),移动电话受访者则是随机选择的,每个受访者被选中的概率相等。我们正在处理的数据集共有330个变量,总共有491,775个观测值(2013年)。缺失值用“NA”表示。

泛化能力:

样本数据应该能够推广到感兴趣的总体。这是对18岁及以上的491,775名成年人进行的调查。它基于一个大规模分层随机样本。可能存在的偏差与非响应、不完整的访谈、缺失值和便利性偏差相关(一些潜在的受访者可能因为没有固定电话和手机而未被纳入在内)。

因果关系:

由于BRFSS是一项观察研究,只能建立变量之间的相关性/关联,并不能确定因果关系。

第二部分:研究问题

研究问题1:

在过去30天内,男女性别在身体和心理健康不好的天数分布上是否存在差异?

研究问题2:

受访者接受采访的月份与其自我报告的健康感知之间是否存在关联?

研究问题3:

收入和医疗保险覆盖之间是否存在关联?

研究问题4:

吸烟、饮酒、胆固醇水平、血压、体重与中风的关系是什么?最终,我想看到是否可以通过上述变量对中风进行预测。

第三部分:探索性数据分析

研究问题1:

   
ggplt(aes(x=phhth, fill=sx), data = bfss3[!is.na(brfs13$sex), ])

brfss-1

   
ggplot+
  geom_hitoam(bns=3, psition= psiion_dg

image.png

   
gplot(aes(x=prth, filsex), data=br203[!is.nbrfs03$ex), ]) +
  gem_istrm(ns=30, postn = poiioge())

image.png

   
sumary(brss3$ex)

image.png

以上三个图显示了男性和女性对过去30天内身体、心理和两者都不好的天数的数据分布。我们可以看到女性受访者远多于男性受访者。

研究问题2:

  R
by_mnt <- bs201 %>% fier(iyr=='2013') %>% gop_by(imnth, ghlh) %>% sumaie(n=n())
ggpt(aes(x=ionh, y=n, fill = gehh), data = b_mh[!is.na(by_mt$gehlh), ]) + go_bar(stat = 'idnty', ostin = posion_doe())

brfss-4.png

  R
by_mnh1 <- brs13 %>% ftr(iyar=='2013') %>% grup_y(imnh) %>% surse(n=n())
gglot(aes(x=imnh, y=n), daa=bymth1) + gem_ar(stat = 'dentty') 

brfss-8

我试图找出人们在不同月份对健康状况的回答是否有所差异。例如,在春季或夏季,人们是否更有可能说自己身体健康?然而,看起来并没有明显的模式可见。

研究问题3:

  R
plot(brs203$iome2, brfs13$ltpn1

brfss-5

总体来说,高收入的受访者比低收入的受访者更有可能享有医疗保险覆盖。

研究问题4:

为了回答这个问题,我将使用以下变量:

  • bphigh4: 是否曾经被告知有高血压
  • toldhi2: 是否曾经被告知有高血胆固醇
  • weight2: 报告的体重(以磅为单位)
  • cvdstrk3: 是否曾被诊断为中风
  • smoke100:至少吸过100支香烟
  • avedrnk2:过去30天内每天平均

首先,将上述变量转换为数值,并查看这些数值变量之间的相关性。

  R
slectedfss - brfs2013[vars]
selced_rf$tolhi2 <- iflse(seeted_fss$todh2=="Yes", 1, 0)
corrmarix <- cor(selced_bfss)
corplot(corr.atri

brfss-6

没有任何两个数值变量之间似乎存在强相关性。

用逻辑回归预测中风

将答案"Yes, but female told only during pregnancy"和"Told borderline or pre-hypertensive"替换为"Yes"。

  R
vr1 <- names(brs013) %in% c('smoke0', 'aedrk2', 'bphg4', 'tldhi2', 'wht', 'cdsrk3')
sroe <- brfs203[vars1]

将'NA'值替换为'No'。

  R
4 <- repce(strebh, whch(is.na(stroke$bpig4)), "No")whih(is.na(stroke$soke10)), 'No')

将'NA'值替换为平均值。

  R
mean(strke$avedrnk2,.rm = T)

image.png

  R
stoke$vdrk2 <- replce(stoe$aednk2, whch(is.nastroe$avednk2)), 2)

查看将用于建模的数据。

  R
hed(sroe)
sumary(sroe)

image.png

image.png

将结果转换为二元结果。

  R
strke$vdrk3 <- ifelestrok$cvdsk3=="Ys", 1, 0)

在整理和清理数据之后,现在可以拟合模型。

拟合逻辑回归模型

  R
test <- stre[390001:491775,]
odel <- glm(cvdtrk3 ~.,famly=biomil(link = 'logit'),at=trin)
summary(mdel)

image.png

解释逻辑回归模型的结果:所有变量在统计上都是显著的。

  • 在其他变量相等的情况下,被告知血压高的可能性更容易出现中风。
  • 预测变量toldhi2No的负系数表明,在其他变量相等的情况下,没有被告知血胆固醇高的可能性更不容易中风。
  • 每增加一单位的体重,中风(而不是无中风)的对数几率下降0.00096。
  • 不吸烟至少100支香烟的可能性更小。
  • 过去30天平均每天饮用的酒精饮料每增加一单位,中风的对数几率下降0.027。
  R
anva(modl, tet="Chiq")

image.png

通过分析偏差表,我们可以看到在逐个添加每个变量时的偏差下降情况。添加bphigh4、toldhi2和smoke100明显降低了残差偏差。其他变量weight2和avedrnk2似乎改善了模型,尽管它们都具有较低的p值。

评估模型的预测能力

  R
fite.result <- ifelse(fited.ults > 0.5,1,0)

misCasifEror <- mean(ftted.reuts != testvdtk3)
prnt(pase('Accuracy',1misClasiicEror))

image.png

测试集上的准确率为0.96非常好。

绘制ROC曲线并计算AUC(曲线下面积)。

  R
p <- predicodel, newdat=est, te="response")
pr <- prdition(p, tet$cdstrk3)
auc <- [email protected][[1]]

brfss-7

image.png

最后说明一下,当我们分析健康调查数据时,我们必须意识到自我报告的患病率可能存在偏差,因为受访者可能不了解自己的风险状况。因此,为了获得更精确的估计值,研究人员正在使用实验室测试以及自我报告的数据。


illustrationIWD-1536x1536.webp

最受欢迎的见解

1.R语言多元Logistic逻辑回归 应用案例

2.面板平滑转移回归(PSTR)分析案例实现

3.matlab中的偏最小二乘回归(PLSR)和主成分回归(PCR)

4.R语言泊松Poisson回归模型分析案例

5.R语言混合效应逻辑回归Logistic模型分析肺癌

6.r语言中对LASSO回归,Ridge岭回归和Elastic Net模型实现

7.R语言逻辑回归、Naive Bayes贝叶斯、决策树、随机森林算法预测心脏病

8.python用线性回归预测股票价格

9.R语言用逻辑回归、决策树和随机森林对信贷数据集进行分类预测

标签:BRFSS,AUC,中风,变量,受访者,回归,ROC,逻辑,数据
From: https://www.cnblogs.com/tecdat/p/17702971.html

相关文章

  • Java中ProcessBuilder使用
    可以使用java中的ProcessBuilder执行本地命令或脚本等工作:以下是一个简单的使用java调用本地python脚本的例子。从某工程代码中整理出来的,未封装,仅供参考。List<String>commands=newArrayList();commands.add("python");commands.add(pkg);commands.add("--ad=test");//...其......
  • 部署错误解决(An error occurred while processing your request.)
     Anerroroccurredwhileprocessingyourrequest.RequestID:00-613112becd7848f0226b77690eb71d00-3769cb0d7144d878-00DevelopmentModeSwappingtoDevelopmentenvironmentwilldisplaymoredetailedinformationabouttheerrorthatoccurred.TheDevelo......
  • Node.js child_process spawn All In One
    Node.jschild_processspawnAllInOneNode.js多线程//const{spawn}=require('child_process');const{spawn}=require('node:child_process');//$ls-al/usr等价于constls=spawn('ls',['-lh','/usr�......
  • Springboot RocketMQ整合—官方原版
    Doker 技术人自己的数码品牌Doker官网:Doker多克一、添加maven依赖:<dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-spring-boot-starter</artifactId><version>${RELEASE.VERSION}</version></dependen......
  • RocketMQ-(7-1)-可观测-Metrics
    RocketMQ以Prometheus格式公开以下指标。您可以使用这些指标监视您的集群。服务端Metrics指标生产者Metrics指标消费者Metrics指标版本支持:以下指标Metrics是从5.1.0版本开始支持。Metrics指标详情Metrictypes消息队列RocketMQ版定义的Metrics完全兼容开源Prom......
  • RocketMQ教程-(6-2)-运维部署-Admin Tool
    执⾏命令⽅法:./mqadmin{command}{args}⼏乎所有命令都需要配置-n表⽰NameServer地址,格式为ip:port⼏乎所有命令都可以通过-h获取帮助如果既有Broker地址(-b)配置项又有clusterName(-c)配置项,则优先以Broker地址执⾏命令,如果不配置Broker地址,则对集群中所有主机执⾏命令......
  • RocketMQ教程-(5)-功能特性-消费者分类
    ApacheRocketMQ支持PushConsumer、SimpleConsumer以及PullConsumer这三种类型的消费者,本文分别从使用方式、实现原理、可靠性重试和适用场景等方面为您介绍这三种类型的消费者。背景信息ApacheRocketMQ面向不同的业务场景提供了不同消费者类型,每种消费者类型的集成方式和......
  • RocketMQ-(8-1)-EventBridge-EventBridge 核心概念
    RocketMQEventBridge核心概念理解EventBridge中的核心概念,能帮助我们更好的分析和使用EventBridge。本文重点介绍下EventBridge中包含的术语:EventSource:事件源。用于管理发送到EventBridge的事件,所有发送到EventBridge中的事件都必须标注事件源名称信息,对应CloudEvent事件体中的s......
  • RocketMQ-(9-1)-MQTT-EventBridge概述
    RocketMQMQTT概览传统的消息队列MQ主要应用于服务(端)之间的消息通信,比如电商领域的交易消息、支付消息、物流消息等等。然而在消息这个大类下,还有一个非常重要且常见的消息领域,即IoT类终端设备消息。近些年,我们看到随着智能家居、工业互联而兴起的面向IoT设备类的消息正在呈爆炸式......
  • RocketMQ教程-(6-5)-运维部署-Promethus Exporter
    介绍Rocketmq-exporter 是用于监控RocketMQbroker端和客户端所有相关指标的系统,通过 mqAdmin 从broker端获取指标值后封装成87个cache。警告过去版本曾是87个concurrentHashMap,由于Map不会删除过期指标,所以一旦有label变动就会生成一个新的指标,旧的无用指标无法......