วิธีพล็อตเส้นโค้ง 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) 

เส้นโค้ง ROC ใน ggplot2

แกน 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, ' ) ')) 

เส้นโค้ง ROC พร้อม AUC ใน ggplot2

โปรดทราบว่าคุณยังสามารถแก้ไขธีมของโครงเรื่องได้:

 #create ROC plot with minimal theme
ggroc(rocobj, color = ' steelblue ', size = 2 ) +
  ggtitle( paste0 (' ROC Curve ', ' (AUC = ', auc, ' ) ')) +
  theme_minimal() 

เส้นโค้ง ROC ใน R โดยใช้ ggplot2

ดู บทความนี้ เพื่อดูคำแนะนำเกี่ยวกับธีม ggplot2 ที่ดีที่สุด

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *