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

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

全文链接: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), ])

image.png

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:

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

image.png

点击标题查阅往期内容


R语言数据可视化分析案例:探索BRFSS数据


01

02

03

04


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

image.png

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

研究问题3:

plot(brs203$iome2, brfs13$ltpn1

image.png

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

研究问题4:

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

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

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

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

image.png

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

用逻辑回归预测中风

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

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

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

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

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

mean(strke$avedrnk2,.rm = T)

image.png

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

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

查看将用于建模的数据。

hed(sroe)
sumary(sroe)

image.png

image.png

将结果转换为二元结果。

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

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

拟合逻辑回归模型

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

image.png

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

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

image.png

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

评估模型的预测能力

fite.result <- ifelse(fited.ults > 0.5,1,0)
misCasifEror <- mean(ftted.reuts != testvdtk3)
prnt(pase('Accuracy',1misClasiicEror))

image.png

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

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

p <- predicodel, newdat=est, te="response")
pr <- prdition(p, tet$cdstrk3)
auc <- uc@y.vaus[[1]]

image.png

image.png

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


相关文章
|
2月前
|
数据采集 机器学习/深度学习 数据可视化
R语言从数据到决策:R语言在商业分析中的实践
【9月更文挑战第1天】R语言在商业分析中的应用广泛而深入,从数据收集、预处理、分析到预测模型构建和决策支持,R语言都提供了强大的工具和功能。通过学习和掌握R语言在商业分析中的实践应用,我们可以更好地利用数据驱动企业决策,提升企业的竞争力和盈利能力。未来,随着大数据和人工智能技术的不断发展,R语言在商业分析领域的应用将更加广泛和深入,为企业带来更多的机遇和挑战。
|
14天前
|
数据挖掘 C语言 C++
R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。
【10月更文挑战第21天】时间序列分析是一种重要的数据分析方法,广泛应用于经济学、金融学、气象学、生态学等领域。R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。本文将介绍使用R语言进行时间序列分析的基本概念、方法和实例,帮助读者掌握R语言在时间序列分析中的应用。
38 3
|
2月前
|
数据采集 数据可视化 数据挖掘
R语言在金融数据分析中的深度应用:探索数据背后的市场智慧
【9月更文挑战第1天】R语言在金融数据分析中展现出了强大的功能和广泛的应用前景。通过丰富的数据处理函数、强大的统计分析功能和优秀的可视化效果,R语言能够帮助金融机构深入挖掘数据价值,洞察市场动态。未来,随着金融数据的不断积累和技术的不断进步,R语言在金融数据分析中的应用将更加广泛和深入。
|
6月前
|
数据可视化 数据挖掘 API
【R语言实战】聚类分析及可视化
【R语言实战】聚类分析及可视化
|
6月前
|
机器学习/深度学习 数据可视化
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为2
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为
|
3月前
|
机器学习/深度学习 数据采集 数据可视化
R语言在数据科学中的应用实例:探索与预测分析
【8月更文挑战第31天】通过上述实例,我们展示了R语言在数据科学中的强大应用。从数据准备、探索、预处理到建模与预测,R语言提供了完整的解决方案和丰富的工具集。当然,数据科学远不止于此,随着技术的不断发展和业务需求的不断变化,我们需要不断学习和探索新的方法和工具,以更好地应对挑战,挖掘数据的潜在价值。 未来,随着大数据和人工智能技术的普及,R语言在数据科学领域的应用将更加广泛和深入。我们期待看到更多创新的应用实例,为各行各业的发展注入新的动力。
|
3月前
|
数据采集 存储 数据可视化
R语言时间序列分析:处理与建模时间序列数据的深度探索
【8月更文挑战第31天】R语言作为一款功能强大的数据分析工具,为处理时间序列数据提供了丰富的函数和包。从数据读取、预处理、建模到可视化,R语言都提供了灵活且强大的解决方案。然而,时间序列数据的处理和分析是一个复杂的过程,需要结合具体的应用场景和需求来选择合适的方法和模型。希望本文能为读者在R语言中进行时间序列分析提供一些有益的参考和启示。
|
3月前
|
资源调度 数据挖掘
R语言回归分析:线性回归模型的构建与评估
【8月更文挑战第31天】线性回归模型是统计分析中一种重要且实用的工具,能够帮助我们理解和预测自变量与因变量之间的线性关系。在R语言中,我们可以轻松地构建和评估线性回归模型,从而对数据背后的关系进行深入的探索和分析。
|
3月前
|
机器学习/深度学习 数据采集
R语言逻辑回归、GAM、LDA、KNN、PCA主成分分类分析预测房价及交叉验证
上述介绍仅为简要概述,每个模型在实施时都需要仔细调整与优化。为了实现高度精确的预测,模型选择与调参是至关重要的步骤,并且交叉验证是提升模型稳健性的有效途径。在真实世界的房价预测问题中,可能还需要结合地域经济、市场趋势等宏观因素进行综合分析。
67 3
|
6月前
|
数据采集 数据可视化
利用R语言进行因子分析实战(数据+代码+可视化+详细分析)
利用R语言进行因子分析实战(数据+代码+可视化+详细分析)