案例:糖尿病患醫療品質

pacman::p_load(caTools, ggplot2, dplyr)
D = read.csv("data/quality.csv")  # Read in dataset
set.seed(88)
split = sample.split(D$PoorCare, SplitRatio = 0.75)  # split vector
TR = subset(D, split == TRUE)
TS = subset(D, split == FALSE)
glm1 = glm(PoorCare ~ OfficeVisits + Narcotics, TR, family=binomial)
summary(glm1)


【A】傳統準確性指標

Fig 12.1 - 混淆矩陣與模型準確性指標

Fig 12.1 - 混淆矩陣與模型準確性指標


Training Data

預測機率 Predicted Probability (Training)

混淆矩陣 Confusion Matrix (Training)

      Predict
Acture FALSE TRUE
     0    70    4
     1    15   10

模型準確性指標 Accuracy Metrices (Training)

   accuracy sensitivity specificity 
      0.808       0.400       0.946 


Testing Data

預測機率 Predicted Probability (Testing)

混淆矩陣 Confusion Matrix (Testing)

      Predict
Acture FALSE TRUE
     0    23    1
     1     5    3

比較模型準確性指標 Accuracy Matrices (Testing)

            Train  Test
accuracy    0.808 0.812
sensitivity 0.400 0.375
specificity 0.946 0.958



【B】預測機率分佈、臨界機率、混淆矩陣

Fig 12.2 - 預測機率分佈、臨界機率、混淆矩陣

Fig 12.2 - 預測機率分佈、臨界機率、混淆矩陣


預測機率分佈 (DPP) - Distribution of Predicted Probability (Train)


預測機率分佈 (DPP) - Distribution of Predicted Probability (Test)





【C】作業曲線(ROC)與辨識率(AUC)

ROC - Receiver Operation Curve

AUC - Area Under Curve

[1] 0.77459 0.79948


🗿 練習:
使用TR$MemberID以外的所有欄位,建立一個邏輯式回歸模型來預測PoorCare,並:
  【A】 分別畫出TrainingTestingDPP
  【B】 分別畫出TrainingTestingROC
  【C】 分別算出TrainingTestingACCSENSSPEC
  【D】 分別算出TrainingTestingAUC
  【E】 跟用兩個預測變數的模型相比,這一個模型有比較準嗎?
  【F】 為什麼它比較準(或比較不準)呢?