Comment Tracer la courbe ROC en R avec seulement connu SN / PPV / informations Cutoff

StackOverflow https://stackoverflow.com/questions/9308227

  •  25-10-2019
  •  | 
  •  

Question

Compte tenu de ces données:

#Cutpoint         SN   (1-PPV)
5       0.56    0.01
7       0.78    0.19
9       0.91    0.58
courbe

Comment puis-je tracer ROC avec R qui produisent des résultats similaires comme attaché image?

Je sais package ROCR mais il ne prend pas une telle entrée.

Était-ce utile?

La solution

Si vous voulez juste créer l'intrigue (sans que spline d'interpolation stupide entre les points), puis tracer uniquement les données que vous donnez de la manière standard, préfixer un point (0,0) et un à annexant (1,1) pour donner les points d'extrémité de la courbe.

## your data with different labels
dat <- data.frame(cutpoint = c(5, 7, 9),
                  TPR = c(0.56, 0.78, 0.91),
                  FPR = c(0.01, 0.19, 0.58))

## plot version 1    
op <- par(xaxs = "i", yaxs = "i")
plot(TPR ~ FPR, data = dat, xlim = c(0,1), ylim = c(0,1), type = "n")
with(dat, lines(c(0, FPR, 1), c(0, TPR, 1), type = "o", pch = 25, bg = "black"))
text(TPR ~ FPR, data = dat, pos = 3, labels = dat$cutpoint)
abline(0, 1)
par(op)

Pour expliquer le code: Les premiers jeux d'appel de la région plot() jusqu'à comploter, sans faire un tracé du tout. Notez que je force la parcelle pour couvrir la plage (0,1) dans les deux axes. L'appel par() dit R à des axes de tracé qui couvrent la plage des données -. La valeur par défaut les étend de 4 pour cent de la gamme sur chaque axe

La ligne suivante, with(dat, lines(....)) dessine la courbe ROC et ici nous et ajouter les PREPEND points à (0,0) et (1,1) pour donner la courbe pleine. Ici, j'utilise type = "o" pour donner des points et des lignes overplotted, les points sont représentés par le caractère 25 qui lui permet d'être rempli d'une couleur, ici noir.

Puis-je ajouter des étiquettes aux points à l'aide text(....); l'argument pos est utilisé pour positionner l'étiquette à une distance à partir des coordonnées de tracé réelles. Je prends les étiquettes à partir de l'objet cutpoint dans la trame de données.

L'appel abline() tire le 1:. 1 ligne (ici la 0, et 1 signifie une interception de 0 et une pente de 1 respectivement

La dernière ligne remet à zéro les paramètres complotant aux valeurs par défaut, nous enregistré dans op avant de traçage (dans la première ligne).

Les intrigue résultant ressemble à ceci:

entrer image description ici

Il est pas un fac-similé exact et je préfère le tracé en utilisant la valeur par défaut pour les plages de l'axe (ajout de 4 pour cent):

plot(TPR ~ FPR, data = dat, xlim = c(0,1), ylim = c(0,1), type = "n")
with(dat, lines(c(0, FPR, 1), c(0, TPR, 1), type = "o", pch = 25, bg = "black"))
text(TPR ~ FPR, data = dat, pos = 3, labels = dat$cutpoint)
abline(0, 1)

entrer image description ici

Encore une fois, pas un vrai fac-similé mais proche.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top