pROC 图作为对象?

pROC plot as object?

我想构建一个 rPOC 绘图对象,我可以将其传递给函数并稍后进行绘图。在下面的示例中(取自 here),我当然可以绘制我的 roc 曲线。但我想创建一个绘图对象(比如定义 g <- 然后用 plot(g) 绘制它)。似乎下面的 ciobj,ci 函数的情节将添加到原始情节中,但我无法将这些层组装在一起。我尝试了 'add' 参数,并使用这些绘图函数的 return 值创建了新的绘图对象。

library(pROC)
data(aSAH)
rocobj <- plot.roc(aSAH$outcome, aSAH$s100b,  main="Confidence intervals", percent=TRUE,  ci=TRUE,  print.auc=TRUE)
ciobj <- ci.se(rocobj, specificities=seq(0, 100, 5))
plot(ciobj, type="shape", col="#1c61b6AA") 
plot(ci(rocobj, of="thresholds", thresholds="best"))

正如 MrFlick 提到的,您可以传递函数而不是对象。或者,您可以传递未评估的函数调用,并在您的函数中评估它们。例如:

library(pROC)
data(aSAH)


plot1 <- quote(plot(rocobj, main="Confidence intervals", print.auc=TRUE))
plot2 <- quote(plot(ci.se(rocobj, specificities=seq(0, 100, 5)), type="shape", col="#1c61b6AA"))
plot3 <- quote(plot(ci(rocobj, of="thresholds", thresholds="best")))

doplots <- function(rocobj, calls) {
  for (call in calls) {
    eval(call)
  }
  invisible(rocobj)
}

roc1 <- roc(aSAH$outcome, aSAH$s100b, percent = TRUE)
doplots(roc1, list(plot1, plot2, plot3))

roc2 <- roc(aSAH$outcome, aSAH$wfns, percent = TRUE)
doplots(roc2, list(plot1, plot3))

除了你对 R 的评估规则的耐心之外,你可以做的没有限制。