无法使用 confusionMatrix 显示 sensitivity/specificity

Unable to display sensitivity/specificity with confusionMatrix

我想使用 confusionMatrix 分析以下 table:

value<-cbind(c(rnorm(100,500,90),rnorm(100,800,120)))
genotype<-cbind(c(rep("A",100),rep("B",100)))
df<-cbind(value,genotype)
df<-as.data.frame(df)
colnames(df)<-c("value","genotype")
df$value<-as.numeric(as.character(df$value))
table(value>600,genotype)

我想用 confusionMatrix 分析输出的敏感性和特异性,但它不起作用:

confusionMatrix(table(value>600,genotype))

如果我做错了什么,有什么想法吗?

如果您查看 table,您会发现它的格式不正确。行和列标签应该相同,但在本例中不同。

tab = table(value>600,genotype)

tab

       genotype
         A  B
  FALSE 83  6
  TRUE  17 94

当我们 运行 confusionMatrix 时,由于行和列标签不同(这就是错误消息告诉您的内容),我们因此得到一个错误:

confusionMatrix(tab)
Error in !all.equal(rownames(data), colnames(data)) : 
  invalid argument type

通常,要创建混淆矩阵,您应该有一列预测标签和一列参考标签(真实值),所以我不确定您创建的 table 是作为混淆矩阵有意义。无论如何,为了显示 table 的正确格式,让我们将行标签更改为与列标签相同。然后该函数将起作用:

dimnames(tab)[[1]] = c("A","B")

tab

genotype
   A  B
A 83  6
B 17 94

confusionMatrix(tab)
Confusion Matrix and Statistics

   genotype
     A  B
  A 83  6
  B 17 94

               Accuracy : 0.885           
                 95% CI : (0.8325, 0.9257)
    No Information Rate : 0.5             
    P-Value [Acc > NIR] : < 2e-16         

                  Kappa : 0.77            
 Mcnemar's Test P-Value : 0.03706         

            Sensitivity : 0.8300          
            Specificity : 0.9400          
         Pos Pred Value : 0.9326          
         Neg Pred Value : 0.8468          
             Prevalence : 0.5000          
         Detection Rate : 0.4150          
   Detection Prevalence : 0.4450          
      Balanced Accuracy : 0.8850          

       'Positive' Class : A