Я ищу для построения точки FPR и TPR на графике AUC для разных пороговых значений.Пользовательский AUC в R с разными порогами и двоичными предсказаниями
Например, если data$C2
- это мой кадр данных с столбцом истинного ответа (0 или 1), я хочу создать вектор с предсказанными значениями (0 или 1), когда data$C1
(другая колонка измерения) выше или ниже указанного порога. Вот функция, которую я попытался с пакетом ROCR.
fun <- function (data, col1, col2){
perfc <- NULL #Create null vectors for prediction and performance
perfs <- NULL
temp <- NULL
d <- seq(0.10,0.30,0.01) ##Various thresholds to be tested
for (i in length(d){
temp <- ifelse(data[,col1] > d, 1 , 0) ##Create predicted responses
pred <- prediction(temp, data[,col2]) #Predict responses over true values
perf <- performance(pred, "tpr","fpr") #Store performance information
predc[i] <- pred #Do this i times for every d in the sequence
perfc[i] <- perf
preds <- prediction.class(predc, col2) #Combine to make prediction class
perfs <- performance.class(preds, "tpr","fpr") #Combine to make performance class
}
plot(perfs) #Plot TPR against FPR
}
Является ли проблема, потому что temp
вектор список и истинные метки из матрицы? Я неправильно применяю это для цикла?
Заранее благодарен!
Редактировать: Вот моя попытка сделать это вручную без пакета ROC.
for(t in seq(0.40,0.60,0.01)) #I want to do this for every t in the sequence
{
t <- t
TP <- 0
FP <- 0
p <- sum(data$C2==1, na.rm=TRUE) #Total number of true positives
n <- sum(data$C2==0, na.rm=TRUE) #Total number of true negatives
list <- data$C1 #Column to vector
test <- ifelse(list > t, 1, 0) #Make prediction vector
for(i in 1:nrow(data))
{if(test==1 & data$C2==1)
{TP <- TP + 1} #Count number of correct predictions
if(test==1 & data$C2==0)
{FP <- FP + 1} #Count number of false positives
}
plot(x=(FP/n),y=(TP/p)) #Plot every FP,TP pair
}
есть в любом случае, чтобы ограничить или ввести определенные пороговые значения, которые я хочу, чтобы включить в кривой ROC Скажем t = 0,1 до t = 0,3 и увидеть полученную tpr, fpr, точность и т. Д. для каждого t? – user2324
Как насчет графика в этой [галерее] (http://rocr.bioinf.mpi-sb.mpg.de/rocr_gallery.html)? –