2016-07-23 25 views
0

Ich möchte verschiedene Klassifikationsmetriken (Empfindlichkeit, Spezifität) mit pROC-Paket berechnen. Dafür kann ich coords Funktion in pROC Paket verwenden wie:Spezying der positiven Klasse in pROC-Paket

# Load library 
library(pROC) 
# Load data 
data(aSAH) 
#Convert Good and Poor to 1 and 0 
aSAH$outcome <- ifelse(aSAH$outcome=="Good", 1, 0) 
# Calculate ROC 
rocobj <- roc(aSAH$outcome, aSAH$s100b) 
# Get sensitivity and specificity 
coords(rocobj, 0.55) 

Hier 1 als positive Klasse nimmt, das heißt kann die Klasse sein, die am weitesten verbreitet ist, aber ich bin nicht sicher. Ich frage mich, ob es möglich ist, '0' als positive Klasse zu verwenden. Zum Beispiel können Sie tun, dass in caretconfusionMatrix Funktion Paket als:

confusionMatrix(factor(as.numeric(aSAH$s100b<0.55),levels=c('0','1')), 
        factor(aSAH$outcome,levels=c('0','1')), positive='1') 

für 1 als positiv und

confusionMatrix(factor(as.numeric(aSAH$s100b<0.55),levels=c('0','1')), 
        factor(aSAH$outcome,levels=c('0','1')), positive='0') 

für 0 als positive Klasse. Ich benutze das pROC-Paket, da es andere Funktionen bietet, wie zum Beispiel das Bestimmen der besten Cutoffs usw., was in Caret nicht möglich ist. Gibt es jedoch eine Möglichkeit, die positive und negative Klasse im pROC Paket anzugeben?

Antwort

2

Benutze das levels Argument:

levels: the value of the response for controls and cases 
      respectively. 

Here "Kontrolle" bedeutet eine negative Beobachtung und "Fall" ist eine positive. Die Wahl basiert nicht auf der Prävalenz, sondern nur auf den ersten beiden Werten von levels(as.factor(response)).

rocobj <- roc(aSAH$outcome, aSAH$s100b, levels = c(1, 0)) 

Beachten Sie, dass es keinen Unterschied zu Ihrer Kurve machen, bis Sie das direction Argument gesetzt, die auf "auto" standardmäßig:

es zu ändern, einen Vektor der Länge zwei wie passieren.