7

在运行逻辑回归后,我正在使用以下代码绘制 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 曲线如下所示(参见下面的链接)

在此处输入图像描述

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

2 回答 2

7
  1. 默认情况下,pROC 设置asp = 1以确保绘图是方形的,并且灵敏度和特异性都在相同的范围内。您可以将其设置为NANULL释放轴并填充图表,但您的 ROC 曲线会变形。

    plot(g1, asp = NA)
    

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

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

    plot(g1, legacy.axes = TRUE)
    
于 2017-04-24T12:35:25.787 回答
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()
于 2016-12-09T23:04:51.493 回答