拓端數據tecdat|R語言邏輯回歸(Logistic回歸)模型分類預測病人冠心病風險


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

原文出處:拓端數據部落公眾號

 

本文的目的是完成一個邏輯回歸分析。使你對分析步驟和思維過程有一個基本概念。

  1.  
    library(tidyverse)
  2.  
    library(broom)
  3.  
     

這些數據來自一項正在進行的對鎮居民的心血管研究。其目的是預測一個病人是否有未來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年冠心病的風險

加載並准備數據

  1.  
    read_csv("framingham.csv") %>%
  2.  
    drop_na() %>% #刪除具有缺失值的觀察值
  3.  
    ageCent = age - mean(age),
  4.  
    totCholCent = totChol - mean(totChol),

擬合邏輯回歸模型

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

預測

對於新病人

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

預測對數幾率

predict(risk_m, x0) 

 

預測概率

根據這個概率,你是否認為這個病人在未來10年內有患冠心病的高風險?為什么?

 

  1.  
     
  2.  
    risk

混淆矩陣

  1.  
     
  2.  
    risk_m %>%
  3.  
    group_by(TenYearCHD, risk_predict) %>%
  4.  
    kable(format="markdown")

 

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

 

有多大比例的觀察結果被錯誤分類?
依靠混淆矩陣來評估模型的准確性有什么缺點?

ROC曲線

  1.  
    ggplot(risk_m_aug,
  2.  
    oc(n.cuts = 10, labelround = 3) +
  3.  
    geom_abline(intercept = 0) +

auc(roc )$AUC

 

一位醫生計划使用你的模型的結果來幫助選擇病人參加一個新的心臟病預防計划。她問你哪個閾值最適合為這個項目選擇病人。根據ROC曲線,你會向醫生推薦哪個閾值?為什么?

假設

為什么我們不繪制原始殘差?

  1.  
    ggplot(data = risk aes(x = .fitted, y = .resid)) +
  2.  
    labs(x = "預測值", y = "原始殘差")

分級的殘差圖

  1.  
    plot(x = fitted, y = resid,
  2.  
    xlab = "預測概率",
  3.  
    main = "分級后的殘值與預測值的對比",

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

檢查假設:

- 線性?- 隨機性?- 獨立性?

系數的推斷

currentSmoker1的測試統計量是如何計算的?
在統計學上,totalCholCent是否是預測一個人患冠心病高風險的重要因素?
用檢驗統計量和P值來證明你的答案。
用置信區間說明你的答案。

 

偏離偏差檢驗

  1.  
    glm(TenYearCHD ~ ageCent + currentSmoker + totChol,
  2.  
    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指標


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM