关于算法:R语言逻辑回归Logistic回归模型分类预测病人冠心病风险

41次阅读

共计 2135 个字符,预计需要花费 6 分钟才能阅读完成。

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

本文的目标是实现一个逻辑回归剖析。使你对剖析步骤和思维过程有一个基本概念。

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


最受欢迎的见解

1.R 语言多元 Logistic 逻辑回归 利用案例

2. 面板平滑转移回归 (PSTR) 剖析案例实现

3.matlab 中的偏最小二乘回归(PLSR)和主成分回归(PCR)

4.R 语言泊松 Poisson 回归模型剖析案例

5.R 语言回归中的 Hosmer-Lemeshow 拟合优度测验

6.r 语言中对 LASSO 回归,Ridge 岭回归和 Elastic Net 模型实现

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

8.python 用线性回归预测股票价格

9.R 语言如何在生存剖析与 Cox 回归中计算 IDI,NRI 指标

正文完
 0