使用p中的pROC获得最佳阈值

swe*_*eet 5 r roc proc-r-package

我有一个包含两列的数据框:score1哪个是numeric,truth1哪个是boolean.我想预测truth1使用score1.要做到这一点,我想要一个简单的线性模型,然后要求一个好的阈值,即一个阈值,它在我的ROC曲线中给出了75%的灵敏度.因此,我这样做:

roc_curve = roc(truth1 ~ score1 , data = my_data)
coords(roc=roc_curve, x = 0.75, input='sensitivity', ret='threshold')
Run Code Online (Sandbox Code Playgroud)

我的问题是coords返回'NA',因为0.75的灵敏度没有出现在ROC曲线中.所以这是我的问题:如何获得阈值,这给我的灵敏度至少为0.75,具有最大特异性?

Cal*_*imo 10

选项1:您过滤结果

my.coords <- coords(roc=roc_curve, x = "all", transpose = FALSE)
my.coords[my.coords$sensitivity >= .75, ]
Run Code Online (Sandbox Code Playgroud)

选项2:您可以pROC通过请求75%和100%灵敏度之间的部分AUC 来进行欺骗:

roc_curve = roc(truth1 ~ score1 , data = my_data, partial.auc = c(1, .75), partial.auc.focus="sensitivity")
Run Code Online (Sandbox Code Playgroud)

所有pROC的方法都将遵循此请求,并仅在此感兴趣的领域为您提供结果:

coords(roc=roc_curve, x = "local maximas", ret='threshold', transpose = FALSE)
Run Code Online (Sandbox Code Playgroud)