无法使用confusionMatrix显示灵敏度/特异性

无法使用confusionMatrix显示灵敏度/特异性,r,confusion-matrix,R,Confusion Matrix,我有一个下表,我想使用confusionMatrix进行分析: 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.num

我有一个下表,我想使用
confusionMatrix
进行分析:

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)

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

如果你看看你的桌子,你会发现它的格式不对。行和列标签应该相同,但在本例中不是这样

tab = table(value>600,genotype)

tab

       genotype
         A  B
  FALSE 83  6
  TRUE  17 94
因此,当我们运行
confusionMatrix
时,由于行和列标签不同,我们会得到一个错误(错误消息就是这样告诉您的):

通常,要创建混淆矩阵,您应该有一列预测标签和一列参考标签(真值),因此我不确定您创建的表作为混淆矩阵是否有意义。在任何情况下,为了显示表的正确格式,让我们将行标签更改为与列标签相同。然后该功能将工作:

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

tab

genotype
   A  B
A 83  6
B 17 94

confusionMatrix(tab)
混淆矩阵与统计
基因型
A B
A 83 6
B 17 94
准确度:0.885
95%可信区间:(0.8325,0.9257)
无信息率:0.5
P值[Acc>NIR]:<2e-16
卡帕:0.77
麦克内马尔试验P值:0.03706
灵敏度:0.8300
特异性:0.9400
位置预测值:0.9326
负预测值:0.8468
流行率:0.5000
检出率:0.4150
检出率:0.4450
平衡精度:0.8850
“积极”类:A

如果你看一下你的表格,你会发现它的格式不对。行和列标签应该相同,但在本例中不是这样

tab = table(value>600,genotype)

tab

       genotype
         A  B
  FALSE 83  6
  TRUE  17 94
因此,当我们运行
confusionMatrix
时,由于行和列标签不同,我们会得到一个错误(错误消息就是这样告诉您的):

通常,要创建混淆矩阵,您应该有一列预测标签和一列参考标签(真值),因此我不确定您创建的表作为混淆矩阵是否有意义。在任何情况下,为了显示表的正确格式,让我们将行标签更改为与列标签相同。然后该功能将工作:

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

tab

genotype
   A  B
A 83  6
B 17 94

confusionMatrix(tab)
混淆矩阵与统计
基因型
A B
A 83 6
B 17 94
准确度:0.885
95%可信区间:(0.8325,0.9257)
无信息率:0.5
P值[Acc>NIR]:<2e-16
卡帕:0.77
麦克内马尔试验P值:0.03706
灵敏度:0.8300
特异性:0.9400
位置预测值:0.9326
负预测值:0.8468
流行率:0.5000
检出率:0.4150
检出率:0.4450
平衡精度:0.8850
“积极”类:A

你说的“它不起作用”是什么意思。你收到错误信息了吗?如果是,请张贴。另外,
confusionMatrix
来自
caret
包,因此将
library(caret)
添加到代码的开头。一般来说,在SO上发布问题时,您应该包含重现问题所需的所有信息。这使人们更容易帮助你。@eipi10很好的一点,很抱歉错过了它“它不起作用”是什么意思。你收到错误信息了吗?如果是,请张贴。另外,
confusionMatrix
来自
caret
包,因此将
library(caret)
添加到代码的开头。一般来说,在SO上发布问题时,您应该包含重现问题所需的所有信息。这使得人们更容易帮助你。@eipi10很好,很抱歉错过了
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