R语言逻辑回归(Logistic回归)模型分类预测病人冠心病风险

简介: R语言逻辑回归(Logistic回归)模型分类预测病人冠心病风险

本文的目的是完成一个逻辑回归分析。使你对分析步骤和思维过程有一个基本概念。

library(tidyverse)
library(broom)

这些数据来自一项正在进行的对镇居民的心血管研究。其目的是预测一个病人是否有未来10年的冠心病风险。该数据集包括以下内容。

  • 男性:0=女性;1=男性
  • 年龄。
  • 教育。1 = 高中以下;2 = 高中;3 = 大学或职业学校;4 = 大学以上
  • 当前是否吸烟。0=不吸烟;1=吸烟者
  • cigsPerDay: 每天抽的烟数量(估计平均)。
  • BPMeds: 0 = 不服用降压药;1 = 正在服用降压药
  • 中风。0 = 家族史中不存在中风;1 = 家族史中存在中风
  • 高血压。0 =高血压在家族史上不流行;1 =高血压在家族史上流行
  • 糖尿病:0 = 没有;1 = 有
  • totChol: 总胆固醇(mgdL)
  • sysBP: 收缩压(mmHg)
  • diaBP: 舒张压(mmHg)
  • BMI: 体重指数
  • 心率
  • 葡萄糖:总葡萄糖mgdL
  • TenYearCHD: 0 = 患者没有未来10年冠心病的风险; 1 = 患者有未来10年冠心病的风险

加载并准备数据

read_csv("framingham.csv") %>%
  drop_na() %>% #删除具有缺失值的观察值
  ageCent = age - mean(age), 
  totCholCent = totChol - mean(totChol),

拟合逻辑回归模型

glm(TenYearCHD ~ age +  Smoker +  CholCent, 
              data = data, family = binomial)

预测

对于新病人

data_frame(ageCent = (60 - 49.552), 
                 totCholCent = (263 - 236.848),

预测对数几率

predict(risk_m, x0)

预测概率

根据这个概率,你是否认为这个病人在未来10年内有患冠心病的高风险?为什么?

risk

混淆矩阵

risk_m %>%
  group\_by(TenYearCHD, risk\_predict) %>%
  kable(format="markdown")

mutate( predict = if_else(.fitted > threshold, "1: Yes", "0: No"))

有多大比例的观察结果被错误分类?

依靠混淆矩阵来评估模型的准确性有什么缺点?

ROC曲线

ggplot(risk\_m\_aug, 
  oc(n.cuts = 10, labelround = 3) + 
  geom_abline(intercept = 0) +

auc(roc )$AUC

一位医生计划使用你的模型的结果来帮助选择病人参加一个新的心脏病预防计划。她问你哪个阈值最适合为这个项目选择病人。根据ROC曲线,你会向医生推荐哪个阈值?为什么?

假设

为什么我们不绘制原始残差?

ggplot(data = risk aes(x = .fitted, y = .resid)) +
  labs(x = "预测值", y = "原始残差")

分级的残差图

plot(x =  fitted, y =  resid,
                xlab = "预测概率", 
                main = "分级后的残值与预测值的对比",

## # A tibble: 2 x 2
##   currentSmoker mean_resid
##   <fct>              <dbl>
## 1 0              -2.95e-14
## 2 1              -2.42e-14

检查假设:

- 线性?- 随机性?- 独立性?

系数的推断

currentSmoker1的测试统计量是如何计算的?

在统计学上,totalCholCent是否是预测一个人患冠心病高风险的重要因素?

用检验统计量和P值来证明你的答案。

用置信区间说明你的答案。

偏离偏差检验

glm(TenYearCHD ~ ageCent + currentSmoker + totChol, 
              data = heart_data, family = binomial)

anova

AIC

根据偏离偏差检验,你会选择哪个模型?

基于AIC,你会选择哪个模型?

使用step逐步回归选择模型

step(full_model )

kable(format = "markdown" )


最受欢迎的见解

相关文章
|
2月前
【R语言实战】——带有高斯新息的金融时序的GARCH模型拟合预测及VAR/ES风险度量
【R语言实战】——带有高斯新息的金融时序的GARCH模型拟合预测及VAR/ES风险度量
|
2月前
【R语言实战】——带有新息为标准学生t分布的金融时序的GARCH模型拟合预测
【R语言实战】——带有新息为标准学生t分布的金融时序的GARCH模型拟合预测
|
2月前
【R语言实战】——Logistic回归模型
【R语言实战】——Logistic回归模型
|
2月前
|
机器学习/深度学习 算法
R语言分类回归分析考研热现象分析与考研意愿价值变现
R语言分类回归分析考研热现象分析与考研意愿价值变现
|
2月前
|
机器学习/深度学习 数据可视化
R语言Stan贝叶斯回归置信区间后验分布可视化模型检验|附数据代码
R语言Stan贝叶斯回归置信区间后验分布可视化模型检验|附数据代码
|
2月前
|
数据可视化 数据挖掘 索引
R语言层次聚类、多维缩放MDS分类RNA测序(RNA-seq)乳腺发育基因数据可视化|附数据代码2
R语言层次聚类、多维缩放MDS分类RNA测序(RNA-seq)乳腺发育基因数据可视化|附数据代码
|
2月前
|
移动开发 数据可视化
广义线性模型beta二项分布的淋巴结疾病风险预测可视化R语言2实例合集|附数据代码
广义线性模型beta二项分布的淋巴结疾病风险预测可视化R语言2实例合集|附数据代码
|
2月前
|
存储 数据可视化 数据挖掘
R语言层次聚类、多维缩放MDS分类RNA测序(RNA-seq)乳腺发育基因数据可视化|附数据代码1
R语言层次聚类、多维缩放MDS分类RNA测序(RNA-seq)乳腺发育基因数据可视化|附数据代码
|
2月前
|
数据可视化 数据挖掘 API
【R语言实战】聚类分析及可视化
【R语言实战】聚类分析及可视化
|
2月前
|
机器学习/深度学习 数据可视化
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为2
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为

热门文章

最新文章