如何使用 ggplot2 绘制 roc 曲线(附示例)


逻辑回归是一种统计方法,当响应变量是二元时,我们用它来拟合回归模型。为了评估逻辑回归模型对数据集的拟合程度,我们可以查看以下两个指标:

  • 敏感性:当结果实际上是积极的时,模型预测观察结果为积极的概率。
  • 特异性:当结果实际上为负时,模型预测观察结果为负的概率。

可视化这两个指标的一个简单方法是创建ROC 曲线,它是显示逻辑回归模型的敏感性和特异性的图表。

本教程介绍如何使用 ggplot2 可视化包在 R 中创建和解释 ROC 曲线。

示例:使用 ggplot2 的 ROC 曲线

假设我们在 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 ")

为了可视化逻辑回归模型在测试集上的性能,我们可以使用pROC 包中的ggroc()函数创建 ROC 图:

 #load necessary packages
library (ggplot2)
library (pROC)

#define object to plot
rocobj <- roc(test$default, predicted)

#create ROC plot
ggroc(rocobj) 

ggplot2中的ROC曲线

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, ' ) ')) 

ggplot2中的ROC曲线与AUC

请注意,您还可以修改情节的主题:

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

使用 ggplot2 在 R 中绘制 ROC 曲线

请参阅本文以获取最佳 ggplot2 主题指南。

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注