获取数据框中多个预测变量和结果的 AUC

Getting AUCs for several predictors and outcomes in a dataframe

我希望能够从 pROC 包中同时执行大量 AUC。这是一个带有两个预测变量和一个二进制结果的简单数据框,我尝试将 sapply() 与 pROC 库中的 auc() 和 roc() 一起使用。我做错了什么?

library(pROC)
df <- data.frame(z = rnorm(100,0,1), x=rnorm(100,0,1), y = as.factor(sample(0:1, 100, replace=TRUE)))

#One AUC at a time
auc(roc(df$y, df$x))
auc(roc(df$y, df$z))

#Trying to get multiple
predictors <- c("z","x")
results <- lapply(df, function(x){auc(roc(y, predictors))})

此解决方案使用 for 循环,这是最优雅的方法还是可以 sapply/lapply 代替?

您可以通过以下方式使用lapply -

predictors <- c("z","x")
results <- lapply(predictors, function(x) auc(roc(df$y, df[[x]])))
results

#[[1]]
#Area under the curve: 0.6214

#[[2]]
#Area under the curve: 0.6238

sapply 会 return 一个数值向量。

sapply(predictors, function(x) auc(roc(df$y, df[[x]])))

#        z         x 
#0.6213942 0.6237981