วิธีพล็อตเส้นโค้ง roc โดยใช้ ggplot2 (พร้อมตัวอย่าง)
การถดถอยแบบลอจิสติก เป็นวิธีการทางสถิติที่เราใช้เพื่อปรับให้เหมาะสมกับแบบจำลองการถดถอยเมื่อตัวแปรตอบสนองเป็นไบนารี เพื่อประเมินว่าแบบจำลองการถดถอยโลจิสติกเหมาะสมกับชุดข้อมูลได้ดีเพียงใด เราสามารถดูตัวชี้วัดสองตัวต่อไปนี้:
- ความไว: ความน่าจะเป็นที่แบบจำลองคาดการณ์ผลลัพธ์ที่เป็นบวกสำหรับการสังเกต เมื่อผลลัพธ์เป็นบวกจริงๆ
- ความจำเพาะ: ความน่าจะเป็นที่แบบจำลองทำนายผลลัพธ์ที่เป็นลบสำหรับการสังเกต เมื่อผลลัพธ์เป็นลบจริงๆ
วิธีง่ายๆ ในการแสดงภาพเมตริกทั้งสองนี้คือการสร้าง เส้นโค้ง ROC ซึ่งเป็นกราฟที่แสดงความไวและความเฉพาะเจาะจงของแบบจำลองการถดถอยลอจิสติก
บทช่วยสอนนี้จะอธิบายวิธีสร้างและตีความเส้นโค้ง ROC ใน R โดยใช้แพ็คเกจการแสดงภาพ ggplot2
ตัวอย่าง: เส้นโค้ง ROC โดยใช้ ggplot2
สมมติว่าเราพอดีกับแบบจำลองการถดถอยโลจิสติกต่อไปนี้ใน R:
#load Default dataset from ISLR book data <- ISLR::Default #divide dataset into training and test set set.seed(1) sample <- sample(c( TRUE , FALSE ), nrow (data), replace = TRUE , prob =c(0.7,0.3)) train <- data[sample, ] test <- data[!sample, ] #fit logistic regression model to training set model <- glm(default~student+balance+income, family=" binomial ", data=train) #use model to make predictions on test set predicted <- predict(model, test, type=" response ")
เพื่อให้เห็นภาพประสิทธิภาพของแบบจำลองการถดถอยโลจิสติกบนชุดทดสอบ เราสามารถสร้างพล็อต ROC โดยใช้ฟังก์ชัน ggroc() จาก แพ็คเกจ pROC :
#load necessary packages library (ggplot2) library (pROC) #define object to plot rocobj <- roc(test$default, predicted) #create ROC plot ggroc(rocobj)
แกน y แสดงความไว (อัตราบวกที่แท้จริง) ของแบบจำลอง และแกน x จะแสดงความจำเพาะ (อัตราลบที่แท้จริง) ของแบบจำลอง
โปรดทราบว่าเราสามารถเพิ่มสไตล์ให้กับโครงเรื่องและยังระบุชื่อเรื่องที่มี AUC (พื้นที่ใต้เส้นโค้ง) ของโครงเรื่องด้วย:
#load necessary packages library (ggplot2) library (pROC) #define object to plot and calculate AUC rocobj <- roc(test$default, predicted) auc <- round (auc(test$default, predicted), 4 ) #create ROC plot ggroc(rocobj, color = ' steelblue ', size = 2 ) + ggtitle( paste0 (' ROC Curve ', ' (AUC = ', auc, ' ) '))
โปรดทราบว่าคุณยังสามารถแก้ไขธีมของโครงเรื่องได้:
#create ROC plot with minimal theme ggroc(rocobj, color = ' steelblue ', size = 2 ) + ggtitle( paste0 (' ROC Curve ', ' (AUC = ', auc, ' ) ')) + theme_minimal()
ดู บทความนี้ เพื่อดูคำแนะนำเกี่ยวกับธีม ggplot2 ที่ดีที่สุด