pROC情节作为对象?

时间:2015-07-20 17:15:12

标签: r plot ggplot2 roc proc-r-package

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

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"))

1 个答案:

答案 0 :(得分:2)

正如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评估规则的耐心外,您可以做的事情没有限制。