Fehlerverdacht validieren in reportROC::reportROC

Wie erweitere ich R um eigene Funktionen oder Pakete? Welches Paket ist passend für meine Fragestellung?

Moderatoren: EDi, jogo

Antworten
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Fehlerverdacht validieren in reportROC::reportROC

Beitrag von bigben »

Hallo Leute,

ich glaube, ich habe einen Fehler in einem CRAN-Package gefunden und würde Euch gerne Fragen, ob ich Recht habe, bevor ich die Autoren anschreibe.
Ich habe ganz klassisch einen Test, dessen Sensitivität und Spezifität ich bestimmen möchte. Soweit kein Problem, aber ich hätte gerne auch Konfidenzintervalle, und das kann ich nicht selbst, da brauche ich ein Paket für.

Zunächst die Daten, einen Auszug aus den Originaldaten für eine echte Publikation:

Code: Alles auswählen

test.positiv <- c(1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 
                  0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 
                  0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 
                  0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
                  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0)
wirklich <- c(1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 
              0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 
              0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 
              1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 
              0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1)
test.positiv <- as.factor(test.positiv)
wirklich <- as.factor(wirklich)
Konfidenzintervalle für die gefragten Größen liefert die Funktion reportROC im gleichnamigen Package.

Code: Alles auswählen

install.packages("reportROC")
library(reportROC)
reportROC(gold = wirklich, predictor.binary = test.positiv)
Inhaltlich erscheinen mir Sensitivität und Spezifität genau vertauscht und deshalb habe ich zum Vergleich die Werte mit caret berechnet. Ich denke, dass caret von sehr vielen Usern verwendet wird und die Chance, da einen Fehler zu finden, proportional kleiner ist.

Code: Alles auswählen

library(caret)
# Erst die Sensitivität
reportROC(gold = wirklich, predictor.binary = test.positiv)$SEN
sensitivity(data = as.factor(test.positiv), reference = as.factor(wirklich))
# Dann die Spezifität

Code: Alles auswählen

reportROC(gold = wirklich, predictor.binary = test.positiv)$SPE
specificity(data = test.positiv, reference = wirklich)
Könnt Ihr den Fehler nachvollziehen? Sehr Ihr das auch als Fehler, den ich an die Autoren berichten sollte?

Ich mache mich erstmal auf die Suche nach einem anderen Paket für die Konfidenzintervalle. Die spucken mir die caret-Funktionen leider nicht aus...

LG,
Bernhard


Edit: Als anderes Paket bin ich jetzt mit epiR::epi.tests fündig geworden.
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Antworten