R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化

原文链接:http://tecdat.cn/?p=24973 简介 世界卫生组织估计全世界每年有 1200 万人死于心脏病。在美国和其他发达国家,一半的死亡是由于心血管疾病。心血管疾病的早期预后可以帮助决定改变高危患者的生活方式,从而减少并发症。本研究旨在查明心脏病最相关/风险因素,并使用机器学习预测总体风险。

数据准备 来源 该数据集来自对Framingham居民正在进行的心血管研究。分类目标是预测患者未来是否有 10 年患冠心病 (CHD) 的风险。数据集提供了患者的信息。它包括超过 4,000 条记录和 15 个属性。
变量 每个属性都是一个潜在的风险因素。有人口、行为和医疗风险因素。
人口统计:
? 性别:男性或女性(标量)
? 年龄:患者年龄;(连续 - 尽管记录的年龄已被截断为整数,但年龄的概念是连续的)
行为
? 当前吸烟者:患者是否是当前吸烟者(标量)
? 每天吸烟数:此人一天内平均吸烟的香烟数量。(可以认为是连续的,因为一个人可以拥有任意数量的香烟,甚至半支香烟。)
? BP Meds:患者是否服用降压药(标量)
?中风:患者之前是否有中风(标量)
?Hyp:患者是否患有高血压(标量)
? 糖尿病:患者是否患有糖尿病(标量)
? Tot Chol:总胆固醇水平(连续)
? Sys BP:收缩压(连续)
? Dia BP:舒张压(连续)
? BMI:体重指数(连续)
? 心率:心率(连续 - 在医学研究中,心率等变量虽然实际上是离散的,但由于存在大量可能值而被认为是连续的。)
? 葡萄糖:葡萄糖水平(连续)
预测变量(预期目标)
? 10 年患冠心病 CHD 的风险(二进制:“1”表示“是”,“0”表示“否”)
心脏病预测

# 获取数据 rdaa <- read.csv(路径)

# 这边可以考虑增加变量收缩压与舒张压之差、描述收缩压、舒张压与高血压等级的变量# 看数据结构 str(ata)

R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化
文章图片

# 考虑增加变量bplevel raw_data <- sqldf# 对变量类别进行区分ra_da <- map str(ra_da )

R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化
文章图片

数据预处理 查看和处理缺失值
# 这里我们使用mice包进行缺失值处理 aggr

【R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化】R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化
文章图片

matplot

R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化
文章图片

由上图可以看出,除了glucose变量,其它变量的缺失比例都低于5%,而glucose变量缺失率超过了10%。对此的处理策略是保留glucose变量的缺失值,直接删除其它变量的缺失值。 现在处理glucose的缺失值,
# 处理glucose列 lee_a <- subset & !is.na & !is.na & !is.na & !is.na & !is.na # 查看glce与其它变量的线性相关性确定mice的填充策略 gcog = glm(lcse ~ .) smry(glseg)

R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化
文章图片

R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化
文章图片

填充,排除不重要的变量。至于为什么不选diaBP,主要是后面的相关性分析中,这两个变量会造成多重共线性。

mice%in%m=5,"pmm", mai = 50, sd=2333, pint= FALSE) #查看填充结果 smr(mc_od)

R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化
文章图片

# 查看原始数据和插补后的数据分布情况 epot(mi_md)

R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化
文章图片

sipt(mcod, pch=12)

R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化
文章图片

# 填充数据 mi_t <- complete fir_aa$loe <- miout$guose sum(is.na(flda))

R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化
文章图片

删除重复行
# 查看有无重复行并删除重复行 sum(duplicated

R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化
文章图片

comd_ata <- comdta\[!duplicated(), \]

查看离群点
#查看异常值 gplot(coedta)+geom_boxplot(ae(ftr(1),age))

R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化
文章图片

ggplot(copd\_dta)+geom\_boxplot(aes(factor(1cigDy))

R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化
文章图片

ggplot(coea)+geom_boxplot(aes(factor(1),ttl))

R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化
文章图片

ggplot(colt\_ta)+geom\_boxplot(aes(factor(1),syBP))

R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化
文章图片

ggplot(comeaa)+geom_boxplot(aes(factor(1),daP))

R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化
文章图片

ggplot()+gem_boxplot(aes(factor(1),BMI))

R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化
文章图片

R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化
文章图片

R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化
文章图片

# 查看cigsPerDay cigs\_sub <- comled\_dta # 查看totChol,删除异常点 # 查看sysBP, 删除异常点 # 查看BMI

totChol: 总胆固醇水平大于240mg/dl已属于非常高,故删去水平值为600mg/dl的记录。 sysBP: 去掉收缩压为295mg/dl的记录
# 删除各变量离群点 competedata

# 分类型变量列联分析 ggplot+geom_boxplot

R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化
文章图片

ggplot+geom_boxplot(aes,totChol,fill=TenYerCHD))

R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化
文章图片

cometddata %>% fitr %>% ggplot

R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化
文章图片

R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化
文章图片

R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化
文章图片

R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化
文章图片

R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化
文章图片

由图像知,glucose和hearRate变量有不显着的风险
table1=table chisq.test

R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化
文章图片

table1

R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化
文章图片

table2=table chisq.test

R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化
文章图片

table3=table chisq.test

R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化
文章图片

chisq.test

R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化
文章图片

R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化
文章图片

R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化
文章图片

R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化
文章图片

R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化
文章图片

ggpairs

R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化
文章图片

diaBP和sysBP有多重共线性的问题。
currentSmoker变量可能不显着,下面进入模型部分。
模型
# 划分数据集split = sample.splittrain = subset

逻辑回归
# 逻辑回归模型 - 使用所有变量 fultaog = glm summary(fulog)

R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化
文章图片

R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化
文章图片

fldaog = glm summary(fuatLg)

R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化
文章图片

prdts = predict glm_le <- table

ACCU

R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化
文章图片

随机森林
rfoel <- randomForest # 获得重要性 imprace

R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化
文章图片

# 选择重要的因素 rfmdel <- randomForest # 误差 plot

R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化
文章图片

# 获取重要性 ggplot + geom_bar geom_text

R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化
文章图片

这里有患病风险的误差不降反升,需要探究其中原因
# 绘制分类图像 pred<-predict pdou_1<-predict#输出概率 table <- table sum(diag/sum #预测准确率

R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化
文章图片

plot(margin

R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化
文章图片

SVM支持向量机
# 先进行模型调优 tud <- tune.svm summary(tud )

R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化
文章图片

R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化
文章图片

R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化
文章图片

R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化
文章图片

# 使用turning函数得到最佳参数设置支持向量机 mel.nd <- svm cost=tuned$ summary(modted)

R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化
文章图片

# 调用predict函数基于刚配置好的SVM模型进行类标号的预测: sm.ne.ed <- predict sv.tuedtble <- table sm.ue.tbe

R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化
文章图片

acy.s.vm <- sum(diag)/sum

R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化
文章图片

模型诊断 根据上面三个模型的结果,可以看出预测结果的类别数量分布非常不均衡
sum

R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化
文章图片

sum(TeYaHD == 0)

R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化
文章图片

针对这一现象,需要采取方法平衡数据集。
R语言逻辑回归、随机森林、SVM支持向量机预测Framingham心脏病风险和模型诊断可视化
文章图片

最受欢迎的见解
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语言用逻辑回归、决策树和随机森林对信贷数据集进行分类预测

    推荐阅读