在pROC包中指定正类

时间:2016-07-23 01:27:05

标签: r classification roc auc proc-r-package

我想使用pROC软件包计算不同的分类指标(敏感性,特异性)。为此,我可以在coords包中使用pROC函数:

# 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)

这里需要1作为积极的类,即可能是最流行的类,但我不确定。我想知道,如果有可能使用'0'作为积极的类。 例如,您可以在caret包的confusionMatrix函数中执行此操作:

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

表示1为正面和

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

表示0为正类。我正在使用pROC包,因为它提供了其他功能,例如确定最佳截止值等,这在插入符号中是不可能的。但是,有没有办法在pROC包中指定正面和负面类?

1 个答案:

答案 0 :(得分:3)

使用levels参数:

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

这里“控制”表示否定观察,“情况”表示肯定。选择不是基于普遍性,仅仅基于levels(as.factor(response))的前两个值。

要更改它,请传递长度为2的向量,例如:

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

请注意,在设置direction参数(默认情况下为"auto")之前,它对您的曲线没有影响。