我有一个来自SAS的数据集,它是用两列y和yhat评分的数据。 y是二进制(0,1),y是得分值,模型是逻辑回归。我想在这个SAS模型中为r创建roc并将其与R中的其他模型进行比较。我不知道如何实现这一点?有什么建议?感谢。
如何使用SAS的预测值在R中创建ROC?
答案 0 :(得分:1)
您可以像这样使用ROCR包:
## computing a simple ROC curve (x-axis: fpr, y-axis: tpr)
library(ROCR)
pred <- prediction( SASdataset$predictions, SASdataset$labels)
perf <- performance(pred, "tpr", "fpr")
plot(perf)
答案 1 :(得分:1)
非常简单,如果你知道ROC曲线是如何工作的。您希望能够使用模型中的预测值将人们分类为您在下面使用的0或1的二分结果。
因此,如果您要为0.5的预测值选择截止值,那么高于此阈值的任何人都会被视为正/ 1 /患病/等,而任何低于0 /未受影响的人。
那很好,但可以改进吗?所以这里的想法是,如果我们经历了一系列截止点,哪一个最准确地将人们分类为我们的二分结果,即将模型的预测值与我们知道的实际分类进行比较。 / p>
# some data
dat <- data.frame(pred = rep(0:1, each = 50),
predict = c(runif(50), runif(50, .5, 1.5)))
# a matrix of the cutoffs, specificity, and sensitivity
p1 <- matrix(0, nrow = 19, ncol = 3)
i <- 1
# for each cutoff value, create a 2x2 table and calculate your sens/spec
for (p in seq(min(dat$predict), .95, 0.05)) {
t1 <- table(dat$predict > p, dat$pred)
p1[i, ] <- c(p, (t1[2, 2]) / sum(t1[ , 2]), (t1[1, 1]) / sum(t1[ , 1]))
i <- i + 1
}
# and plot
plot(1 - p1[ , 3], p1[ , 2], type = 'l',
xlab = '1 - spec', ylab = 'sens',
main = 'ROC', cex.main = .8)
那里有一些软件包,ROCR
是我用过的软件包,但这需要几分钟的时间来编程,很容易理解,并且在基础R中。