【问题标题】:Changing scale of the ROC chart更改 ROC 图的比例
【发布时间】:2017-04-24 17:22:57
【问题描述】:

在运行逻辑回归后,我正在使用以下代码绘制 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 - 特别是?

【问题讨论】:

标签: r roc proc-r-package


【解决方案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 到 0 的降序排列。我希望它从 0 到 1。
  • OP图中的x轴确实的特异性。如果不反转轴,将其标记为 1-Sp 会产生误导。
  • 同意@Calimo。仅仅强迫标签改变会产生误导。永远不要那样做。而是使用 legacy 将比例从 0 更改为 1(递增顺序)。轴参数。
  • 旧版。轴取值为 TRUE 或 FALSE(默认),指示是否必须将特异性轴(x 轴)绘制为降低“特异性”(FALSE,默认值)或增加“1 - 特异性”(TRUE),就像在大多数旧版软件中一样。这仅影响轴,而不影响绘图坐标
【解决方案2】:
  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)
    

【讨论】:

    猜你喜欢
    • 2021-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-29
    相关资源
    最近更新 更多