Advertisement

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

阅读量:

原文链接:http://tecdat.cn/?p=22410

本文旨在进行一个逻辑回归研究。帮助你掌握分析步骤和思维过程的基础知识。

复制代码
 library(tidyverse)

    
 library(broom)

这些数据源自一项正在进行的对镇居民的心血管研究项目。该项目旨在预测每位病人在未来十年内是否会有冠心病的风险。该数据集包含详细的信息内容。

  • 男性: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)
c60098fedccf6305b34427aeed0be5b4.png

预测

对于新病人

复制代码
 data_frame(ageCent = (60 - 49.552), 

    
                  totCholCent = (263 - 236.848),
ed97d8daaf0c396b3f3ee6277a176994.png

预测对数几率

复制代码
    predict(risk_m, x0)
c4a12ea8f0ecfbd0e9fa56832678f7ce.png

预测概率

b925dd8ecdc01226ba357243772aee6f.png

根据该概率值,您认为该病人在未来十年内是否会发生冠心病的风险较高?其主要原因可能包括他的生活方式、饮食习惯以及是否有家族遗传史等

复制代码
    risk
5c48f7e0b10bfb112027a9c67170282e.png

混淆矩阵

复制代码
 risk_m %>%

    
   group\_by(TenYearCHD, risk\_predict) %>%
    
   kable(format="markdown")
d27badab0696467ffb73b8138f3e8356.png
复制代码
    mutate( predict = if_else(.fitted > threshold, "1: Yes", "0: No"))
e6959a753d9699f6108995b5ed1e7a29.png

有多少比例的观测数据被错误分类? 基于混淆矩阵评估模型准确性的有哪些不足?

ROC曲线

复制代码
 ggplot(risk\_m\_aug, 

    
   oc(n.cuts = 10, labelround = 3) + 
    
   geom_abline(intercept = 0) +
140457679ee1790f1f6daef774f2b610.png
复制代码
    auc(roc )$AUC
55f0f0e313a9b49ad58da7733ac3a33d.png

该医生打算利用你的模型的结果来协助挑选符合条件的病人加入一项新的心脏病预防项目。
她询问最适合该项目用于筛选病人的阈值是多少?
基于ROC曲线分析,请问您会向医生推荐哪个合适的阈值?原因是什么?

假设

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

复制代码
 ggplot(data = risk aes(x = .fitted, y = .resid)) +

    
   labs(x = "预测值", y = "原始残差")
fc6b12dcec933d8315c23f6e20be1b7e.png

分级的残差图

复制代码
 plot(x =  fitted, y =  resid,

    
                 xlab = "预测概率", 
    
                 main = "分级后的残值与预测值的对比",
76e989b46fa37f01f0379184319ba530.png
4a1b251eb9d090bb4e68b0af88846e9d.png
2a3a3bc059a2846e23c6e54a88ea5922.png
复制代码
 ## # 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)
a481c604666dd437515995f686363bd5.png
复制代码
    anova
78cc35841a29b54d62f19eca4b9e94c1.png

AIC

1fd0fd4f15c69e0cc3bde45e27e2257e.png

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

使用step逐步回归选择模型

复制代码
    step(full_model )
601f3428bbe0172227208898d0e76a85.png
05d297c0a3afa815c1586e5b41502627.png
复制代码
    kable(format = "markdown" )
d11f54ad426ea87cb6618223d59624e0.png

504d5c9d72b566193363afe8bc3ada9b.jpeg

最受欢迎的见解

点击标题查阅往期内容

R语言用局部加权回归(Lowess)对logistic逻辑回归诊断和残差分析

R语言混合效应逻辑回归(mixed effects logistic)模型分析肺癌数据

通过R语言分别运用主成分PCA(Principal Component Analysis)、逻辑回归(Logistic Regression)、决策树(Decision Tree)以及随机森林(Random Forest)对心脏疾病相关特征进行研究,并同时进行多维数据分析处理。

R语言使用Metropolis- Hasting抽样算法进行逻辑回归

R语言多元Logistic逻辑回归 应用案例

R语言自适应LASSO 多项式回归、二元逻辑回归和岭回归应用分析

在 R 语言环境中对 logit 模型施加惩罚项以实现 LASSO 和 岭 回归方法,在面对高维度数据时进行特征选择并进行分类问题的实例分析

R语言:逻辑回归ROC曲线对角线分析过程及结果

R语言逻辑回归分析连续变量和分类变量之间的“相关性“

在R语言中实现Logistic逻辑回归

R语言用逻辑回归、决策树和随机森林对信贷数据集进行分类预测

R语言逻辑回归和泊松回归模型对发生交通事故概率建模

R语言多元分类的逻辑回归模型用于在混合分布中模拟单个风险损失值评估的应用

利用Rcpp加速Metropolis-Hastings采样用于估计贝叶斯逻辑回归模型的参数

更多内容,请点击左下角“阅读原文 ”查看报告全文

c958a4e96bf2342eb9b5861e70a945f6.gif
27d5f6d4572d0f920711c0893bbfa2d9.png
9027180619b24c6a7258fb455eb365ec.jpeg

**关注我们
**

案例精选、技术干货 第一时间与您分享

7725e2da2f5606910dc4e2f57d595e72.jpeg

长按二维码加关注

更多内容,请点击左下角“阅读原文 ”查看报告全文

814029dc739e1fd8a2b273025b6a90eb.gif

全部评论 (0)

还没有任何评论哟~