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

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

时间:2023-10-27 11:36:50浏览次数:40  
标签:BRFSS AUC 中风 变量 偏差 受访者 ROC 30

行为风险因素监测系统(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), ])

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

 

 

ggplot+
  geom_hitoam(bns=3, psition= psiion_dg

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

 

 

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

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

 

 

sumary(brss3$ex)

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

以上三个图显示了男性和女性对过去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())

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

 

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')

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

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

研究问题3:

 

R

plot(brs203$iome2, brfs13$ltpn1

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

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

研究问题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

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

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

用逻辑回归预测中风

将答案"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)

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

 

R

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

查看将用于建模的数据。

 

R

hed(sroe)
sumary(sroe)

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

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

将结果转换为二元结果。

 

R

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

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

拟合逻辑回归模型

 

R

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

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

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

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

 

R

anva(modl, tet="Chiq")

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

通过分析偏差表,我们可以看到在逐个添加每个变量时的偏差下降情况。添加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))

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

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

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

 

R

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

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

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

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


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

标签:BRFSS,AUC,中风,变量,偏差,受访者,ROC,30
From: https://blog.51cto.com/u_14293657/8051966

相关文章

  • 10月26日Process的其它小用法(了解的知识点)
    目录Process的其它小用法(了解的知识点)pid的查看方式父进程的pid值如何查看呢?这里总结一下子进程、主进程、主进程的父进程三者的关系以及如何诞生的Process的其它小用法(了解的知识点)下面的知识点是了解的知识点,但是也要会用,分别是pid和ppid的查看方式pid的查看方式方式一:......
  • 10月26日Process的join用法
    目录Process的join用法Process的join用法为什么会有这个方法呢?是这样的如果我有一个需求就是子进程运行完了在运行主进程,那么这个该如何实现?第一种方式就是用time模块#这里有一个需求就是子进程运行完在运行主进程,这个该如何实现?#方式一:用time模块,虽然可以,但是每个电脑的......
  • [ERROR FileContent--proc-sys-net-bridge-bridge-nf-call-iptables]: /proc/sys/net/
     永久解决方法:在/etc/sysctl.conf中添加:net.bridge.bridge-nf-call-ip6tables=1net.bridge.bridge-nf-call-iptables=1执行sysctl-p时刷新sysctl-p如果出现缺少文件的现象sysctl:cannotstat/proc/sys/net/bridge/bridge-nf-call-iptables:没有那个文......
  • #include <ntifs.h>出现PEPROCESS redefinition问题处理
    如果在自己的程序中,即包含ntddk.h和ntifs.h的时候,编译的时候会出现如下编译错误:7600.16385.0\inc\ddk\ntifs.h(85):errorC2371:'PEPROCESS':redefinition;differentbasictypes,7600.16385.0\inc\ddk\wdm.h(79):seedeclarationof'PEPROCESS'解决方法是先includent......
  • RocketMQ的3种消息发送模式是什么?如何确保消息不丢失?
    RocketMQ发送消息的三种模式分别是:同步发送、异步发送和单向发送。1、同步发送模式(Sync)发送方发送消息后会等待消息被成功发送到消息队列服务器并收到确认消息后才返回发送结果给调用方。这种模式下,发送方会阻塞等待Broker返回发送结果,直到收到确认消息或者超时。应用场景:对消息的......
  • Linux /proc和/sys
    在Linux系统中,/proc和/sys都是特殊的文件系统,数据内容是存放在内存中,这两个目录文件中的内容由内核动态生成,查看这个文件中的内容,实际上就是查询内核的某些状态或信息。可以将这两个目录文件理解为虚拟的目录,即在硬盘上不存在。/proc文件系统proc是process(进程)的缩写。这个......
  • 【RocketMQ】数据的清理机制
    Broker在启动的时候会注册定时任务,定时清理过期的数据,默认是每10s执行一次,分别清理CommitLog文件和ConsumeQueue文件:publicclassDefaultMessageStoreimplementsMessageStore{//CommitLog清理类privatefinalCleanCommitLogServicecleanCommitLogService;......
  • linux进程的管理与调度 --- wake_up_process
    如下为唤醒进程的API,执行内容如下:给待唤醒进程选择一个合适的CPU将待唤醒进程放入选定CPU的运行队列,每个CPU都有一个运行队列判断当前进程是否应该被待唤醒进程抢占,如果应该,置位当前进程的 TIF_NEED_RESCHED标志intwake_up_process(structtask_struct*p)//入参为待......
  • RocketMQ5.0 搭建 Name Server And Broker+Proxy 同进程部署、搭建RocketMQ控制台图形
    前言RocketMQ5.0中的几个角色NameServer、Broker和Proxy,它们的作用如下:NameServer:NameServer是RocketMQ的名称服务器,负责管理消息队列和消费者组。Broker:Broker是RocketMQ的消息代理服务器,负责接收、处理和存储消息。Proxy:Proxy是RocketMQ的代理服务器,用于扩展消息......
  • 揭开 Amazon Bedrock 的神秘面纱 | 基础篇
    在2023年4月,亚马逊云科技曾宣布将AmazonBedrock纳入使用生成式人工智能进行构建的新工具集。AmazonBedrock是一项完全托管的服务,提供各种来自领先AI公司(包括AI21Labs、Anthropic、Cohere、StabilityAI和Amazon等)的高性能基础模型(FM),以及用于构建生成式人工智能应......