原文链接: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)

# 思考减少变量bplevelraw_data <- sqldf# 对变量类别进行辨别ra_da <- mapstr(ra_da )

数据预处理

查看和解决缺失值

# 这里咱们应用mice包进行缺失值解决aggr

matplot

由上图能够看出,除了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)

 

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

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

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

sipt(mcod, pch=12)

# 填充数据mi_t <- completefir_aa$loe <- miout$guosesum(is.na(flda))

删除反复行

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

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

查看离群点

#查看异样值gplot(coedta)+geom_boxplot(ae(ftr(1),age))

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

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

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

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

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

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

totChol: 总胆固醇程度大于240mg/dl已属于十分高,故删去程度值为600mg/dl的记录。 sysBP: 去掉收缩压为295mg/dl的记录

# 删除各变量离群点competedata
# 分类型变量列联剖析ggplot+geom_boxplot

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

cometddata %>% fitr %>% ggplot

由图像知,glucose和hearRate变量有不显着的危险

table1=tablechisq.test

table1

table2=tablechisq.test

table3=tablechisq.test

chisq.test

ggpairs

diaBP和sysBP有多重共线性的问题。 

currentSmoker变量可能不显着,上面进入模型局部。

模型

# 划分数据集split = sample.splittrain = subset

逻辑回归

# 逻辑回归模型 - 应用所有变量fultaog = glmsummary(fulog)

 

fldaog = glmsummary(fuatLg)

prdts = predictglm_le <- table
ACCU

随机森林

rfoel <- randomForest# 取得重要性imprace

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

# 获取重要性ggplot +   geom_bar   geom_text

这里有患病危险的误差不降反升,须要探索其中起因

# 绘制分类图像pred<-predictpdou_1<-predict  #输入概率table <- tablesum(diag/sum #预测准确率

plot(margin

SVM反对向量机

# 先进行模型调优tud <- tune.svmsummary(tud )

# 应用turning函数失去最佳参数设置反对向量机mel.nd <- svmcost=tuned$summary(modted)

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

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

模型诊断

依据下面三个模型的后果,能够看出预测后果的类别数量散布十分不平衡

sum

sum(TeYaHD == 0)

针对这一景象,须要采取办法均衡数据集。


最受欢迎的见解

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