J'ai les données d'un test qui pourrait être utilisé pour distinguer les cellules normales et les cellules tumorales. Selon la courbe ROC, cela semble bon à cet égard (la surface sous la courbe est de 0,9):
Mes questions sont:
- Comment déterminer le point de coupure pour ce test et son intervalle de confiance où les lectures doivent être jugées ambiguës?
- Quel est le meilleur moyen de visualiser cela (en utilisant
ggplot2
)?
Le graphique est rendu en utilisant ROCR
et ggplot2
packages:
#install.packages("ggplot2","ROCR","verification") #if not installed yet
library("ggplot2")
library("ROCR")
library("verification")
d <-read.csv2("data.csv", sep=";")
pred <- with(d,prediction(x,test))
perf <- performance(pred,"tpr", "fpr")
auc <-performance(pred, measure = "auc")@y.values[[1]]
rd <- data.frame(x=perf@x.values[[1]],y=perf@y.values[[1]])
p <- ggplot(rd,aes(x=x,y=y)) + geom_path(size=1)
p <- p + geom_segment(aes(x=0,y=0,xend=1,yend=1),colour="black",linetype= 2)
p <- p + geom_text(aes(x=1, y= 0, hjust=1, vjust=0, label=paste(sep = "", "AUC = ",round(auc,3) )),colour="black",size=4)
p <- p + scale_x_continuous(name= "False positive rate")
p <- p + scale_y_continuous(name= "True positive rate")
p <- p + opts(
axis.text.x = theme_text(size = 10),
axis.text.y = theme_text(size = 10),
axis.title.x = theme_text(size = 12,face = "italic"),
axis.title.y = theme_text(size = 12,face = "italic",angle=90),
legend.position = "none",
legend.title = theme_blank(),
panel.background = theme_blank(),
panel.grid.minor = theme_blank(),
panel.grid.major = theme_line(colour='grey'),
plot.background = theme_blank()
)
p
data.csv contient les données suivantes:
x;group;order;test
56;Tumor;1;1
55;Tumor;1;1
52;Tumor;1;1
60;Tumor;1;1
54;Tumor;1;1
43;Tumor;1;1
52;Tumor;1;1
57;Tumor;1;1
50;Tumor;1;1
34;Tumor;1;1
24;Normal;2;0
34;Normal;2;0
22;Normal;2;0
32;Normal;2;0
25;Normal;2;0
23;Normal;2;0
23;Normal;2;0
19;Normal;2;0
56;Normal;2;0
44;Normal;2;0
la source
À mon avis, il y a plusieurs options de coupure. Vous pouvez pondérer la sensibilité et la spécificité différemment (par exemple, il est peut-être plus important pour vous d’avoir un test très sensible même si cela signifie de faire un test spécifique peu complexe. Ou vice-versa).
Si la sensibilité et la spécificité ont la même importance pour vous, vous pouvez choisir la valeur qui minimise la distance euclidienne entre votre courbe ROC et le coin supérieur gauche de votre graphique.
Une autre façon consiste à utiliser la valeur qui maximise (sensibilité + spécificité - 1) comme seuil.
Malheureusement, je n'ai pas de références pour ces deux méthodes telles que je les ai apprises de professeurs ou d'autres statisticiens. J'ai seulement entendu parler de cette dernière méthode sous le nom d '"index de Youden" [1]).
[1] https://en.wikipedia.org/wiki/Youden%27s_J_statistic
la source
Résistez à la tentation de trouver une coupure. À moins que vous n'ayez une fonction prédéfinie d'utilité / perte / coût, une coupure va à l'encontre d'une prise de décision optimale. Et une courbe ROC n'est pas pertinente à cette question.
la source
Mathématiquement, vous avez besoin d’une autre condition à résoudre pour la coupure.
Vous pouvez traduire le point @ Andrea en: "utiliser des connaissances externes sur le problème sous-jacent".
Exemple de conditions:
pour cette application, nous avons besoin d'une sensibilité> = x et / ou d'une spécificité> = y.
un faux négatif équivaut à 10 fois moins qu'un faux positif. (Cela vous donnerait une modification du point le plus proche du coin idéal.)
la source
Visualisez la précision par rapport au seuil. Vous pouvez lire plus de détails dans la documentation de ROCR et une très belle présentation de la même chose.
la source
Ce qui est plus important, c'est qu'il y a très peu de points de données derrière cette courbe. Lorsque vous décidez comment vous allez faire le compromis sensibilité / spécificité, je vous encourage fortement à amorcer la courbe et le nombre de coupures qui en résulte. Vous constaterez peut-être qu'il y a beaucoup d'incertitude dans votre meilleure limite estimée.
la source