2017-09-13 2 views
0

Ich versuche, Klassifizierung durch logistische Regression zu tun. Um das Modell zu bewerten, verwendete ich confusionMatrix und ROC. Das Problem ist, dass die Ergebnisse der beiden Pakete unterschiedlich sind. Ich möchte herausfinden, welcher richtig oder falsch ist.verschiedene Ergebnisse von confusionMatrix von Caret-Paket und ROC von Epi-Paket in R

  1. meine Daten wie: Daten name = newoversample, mit 29 Variablen und 4802 Beobachtungen. "q89" ist die vorhergesagte Variable.

  2. mein Versuch:

(1) Verwirrung Matrix von 'caret' Bibliothek

glm.fit = glm(q89 ~ ., newoversample, family = binomial) 
    summary(glm.fit) 
    glm.probs=predict(glm.fit,type="response") 
    glm.pred=rep(0,4802) 
    glm.pred[glm.probs>.5]="1" 
    library(caret) 
    confusionMatrix(data=glm.pred, reference=newoversample$q89) 

das Ergebnis:

Confusion Matrix and Statistics 

       Reference 
    Prediction 0 1 
      0 2018 437 
      1 383 1964 

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

       Kappa : 0.6585   
    Mcnemar's Test P-Value : 0.06419   

     Sensitivity : 0.8405   
     Specificity : 0.8180   
    Pos Pred Value : 0.8220   
    Neg Pred Value : 0.8368   
     Prevalence : 0.5000   
    Detection Rate : 0.4202   
     Detection Prevalence : 0.5112   
      Balanced Accuracy : 0.8292   

      'Positive' Class : 0 

(2) ROC-Kurve von ' Epi 'Bibliothek

library(Epi) 
    rocresult <- ROC(form = q89 ~ ., data = newoversample, MI = FALSE, main = "over") 
    rocresult 

das Ergebnis: roc curve

wie Sie sehen können, hier, Empfindlichkeit ist 91 und Spezifität ist 78, die aus dem Ergebnis unterschiedlich sind (1) Verwirrung Matrix.

Ich kann nicht herausfinden, warum die Ergebnisse unterschiedlich sind und welche die richtige ist.

+) Wenn die zweite Methode (ROC-Kurve) falsch ist, lassen Sie mich bitte wissen, wie Auc oder roc-Kurve von der ersten Methode zu berechnen.

bitte helfen Sie mir!

Thankyou

Antwort

0

Sie sollten Sie das gleiche Modell plotten ROC-Kurve mit integrierten glm

library(ROCR) 
pred <- prediction(predict(glm.fit), newoversample$q89) 
perf <- performance(pred,"tpr","fpr") 
plot(perf) 

hoffe, das hilft!

Verwandte Themen