2015-02-23 332 views
2

我的數據是一種不規則的應用ROC等來確定閾值。爲了簡化,這裏是一個演示,讓x根據敏感度和特異性確定閾值

x<-c(0,0,0,12, 3, 4, 5, 15, 15.3, 20,18, 26) 

假設x=15.1是未知真實閾值和相應的測試結果y將是負面的(0)如果x==0 OR x > 15.1,否則y爲正(1)等即:

y<-c(0,0,0,1, 1, 1, 1, 1, 0,0,0,0) 

由於0x一個積極的結果,我不知道以何種方式我能確定的012門檻以預測y最好。我曾嘗試過R包裝的pROC和ROCR,這兩種情況似乎都不那麼直接。有人會給我一些建議嗎?

回答

3

您有一種情況,您可以預測x爲高值x,並預測x爲低值,除非您總是預測0(如果x == 0)。像pROC和ROCR這樣的標準軟件包期望x的低值爲與預測y = 0相關聯。您可以通過將您的數據這種情況:(使用this answer提取TPR

  1. 翻轉所有的預測
  2. 用小負值更換0的符號在x

代碼和FPR for each cutoff):

x2 <- -x 
x2[x2 == 0] <- -1000 
library(ROCR) 
pred <- prediction(x2, y) 
perf <- performance(pred, "tpr", "fpr") 
data.frame([email protected][[1]], [email protected][[1]], 
      [email protected][[1]]) 
#  cut  fpr tpr 
# 1  Inf 0.0000000 0.0 
# 2  -3.0 0.0000000 0.2 
# 3  -4.0 0.0000000 0.4 
# 4  -5.0 0.0000000 0.6 
# 5 -12.0 0.0000000 0.8 
# 6 -15.0 0.0000000 1.0 
# 7 -15.3 0.1428571 1.0 
# 8 -18.0 0.2857143 1.0 
# 9 -20.0 0.4285714 1.0 
# 10 -26.0 0.5714286 1.0 
# 11 -1000.0 1.0000000 1.0 

現在,您可以根據真實和錯誤的陽性率選擇您喜歡的截止值,re認爲所選截斷值將從原始值中取消。