2017-03-04 117 views
1

我已經使用R生成了一個混淆矩陣,如下所示。是否有可能從R中的混淆矩陣中檢索出假陽性和假陰性?

是否可以從該矩陣中檢索61的假負值並將其分配給R中的變量? $ byClass似乎不適用於這種情況。 謝謝。

Confusion Matrix and Statistics 

       Reference 
    Prediction no yes 
      no 9889 61 
      yes 6 44 

       Accuracy : 0.9933   
       95% CI : (0.9915, 0.9948) 
    No Information Rate : 0.9895   
    P-Value [Acc > NIR] : 4.444e-05  

        Kappa : 0.5648   
Mcnemar's Test P-Value : 4.191e-11  

      Sensitivity : 0.9994   
      Specificity : 0.4190   
     Pos Pred Value : 0.9939   
     Neg Pred Value : 0.8800   
      Prevalence : 0.9895   
     Detection Rate : 0.9889   
    Detection Prevalence : 0.9950   
     Balanced Accuracy : 0.7092   

     'Positive' Class : no  
+0

請給出一個可重複的例子:http://stackoverflow.com/q/5963269/4996248 –

+0

也許'as.matrix()'可以讓你得到混淆矩陣中的單個值。 –

回答

3

您沒有提供一個重複的例子,或在你的代碼加載的任何包,但它看起來像你使用confusionMatrixcaret包。這裏有一個通用的例子:

library(caret) 

# Fake data 
dat = data.frame(measured=rep(0:1, c(40,60)), modeled=rep(c(0:1,0:1), c(30,10,20,40))) 

# Generate confusion matrix 
cm = confusionMatrix(dat$modeled, dat$measured, positive="1") 

cm 
Confusion Matrix and Statistics 

      Reference 
Prediction 0 1 
     0 30 20 
     1 10 40 

       Accuracy : 0.7    
       95% CI : (0.6002, 0.7876) 
    No Information Rate : 0.6    
    P-Value [Acc > NIR] : 0.02478   

        Kappa : 0.4    
Mcnemar's Test P-Value : 0.10035   

      Sensitivity : 0.6667   
      Specificity : 0.7500   
     Pos Pred Value : 0.8000   
     Neg Pred Value : 0.6000   
      Prevalence : 0.6000   
     Detection Rate : 0.4000   
    Detection Prevalence : 0.5000   
     Balanced Accuracy : 0.7083   

     'Positive' Class : 1 

cm實際上是一個列表,所以讓我們看看它包含:

str(cm) 

List of 6 
$ positive: chr "1" 
$ table : 'table' int [1:2, 1:2] 30 10 20 40 
    ..- attr(*, "dimnames")=List of 2 
    .. ..$ Prediction: chr [1:2] "0" "1" 
    .. ..$ Reference : chr [1:2] "0" "1" 
$ overall : Named num [1:7] 0.7 0.4 0.6 0.788 0.6 ... 
    ..- attr(*, "names")= chr [1:7] "Accuracy" "Kappa" "AccuracyLower" "AccuracyUpper" ... 
$ byClass : Named num [1:11] 0.667 0.75 0.8 0.6 0.8 ... 
    ..- attr(*, "names")= chr [1:11] "Sensitivity" "Specificity" "Pos Pred Value" "Neg Pred Value" ... 
$ mode : chr "sens_spec" 
$ dots : list() 
- attr(*, "class")= chr "confusionMatrix" 

看起來cm$table有實際混淆矩陣:

cm$table 
  Reference 
Prediction 0 1 
     0 30 20 
     1 10 40 

因此誤報的次數爲:

cm$table[2,1] 
[1] 10 
+0

謝謝。這正是我正在尋找的。 –