更改 ROC 图的比例

Changing scale of the ROC chart

在进行 运行 逻辑回归后,我使用以下代码绘制 ROC 曲线。

fit1 <- glm(formula=GB160M3~Behvscore, data=eflscr,family="binomial", na.action = na.exclude)
prob1=predict(fit1, type=c("response"))
eflscr$prob1 = prob1

library(pROC)
g1 <- roc(GB160M3~prob1, data=eflscr, plot=TRUE,  grid=TRUE, print.auc=TRUE)

绘制的 ROC 曲线如下所示(请参阅下面的 link)

  1. x 轴刻度未填充 who 图表。
  2. 我如何更改 x 轴以报告 1 - 特别是?

获得方形图的一个很好的捷径是在绘图之前运行以下内容:

par(pty="s")

这会强制绘图区域的形状为正方形。通过简单地重置图形设备并清除绘图,将绘图区域设置回最大。

dev.off()

正如@Calimo 所指出的,有 legacy.axes 参数来反转 x 轴,标签也会自动更改。您可以 运行 ?plot.roc 查看所有 pROC 绘图选项。

例子

# Get ROC object
data(aSAH)
roc1 <- roc(aSAH$outcome, aSAH$s100b)

# Plot
par(pty="s")
plot(roc1, grid = TRUE, legacy.axes = TRUE)

# Reset graphics device and clear plot
dev.off()
  1. 默认情况下,pROC 设置 asp = 1 以确保绘图是正方形的,并且灵敏度和特异性都在同一尺度上。您可以将其设置为 NANULL 以释放轴并填充图表,但您的 ROC 曲线将变形。

    plot(g1, asp = NA)
    

    按照 Joe 的建议使用 par(pty="s") 可能是更好的方法

  2. 这纯粹是一个标签问题:请注意 x 轴从 1 到 0 递减,这与在递增轴上绘制 1-specificity 完全相同。您可以将 legacy.axes 参数设置为 TRUE 以更改默认行为是否困扰您。

    plot(g1, legacy.axes = TRUE)