En iyi kesme noktası ve güven aralığı R'de ROC eğrisi kullanılarak nasıl belirlenir?


51

Normal ve tümör hücrelerini ayırt etmek için kullanılabilecek bir test verisine sahibim. ROC eğrisine göre bu amaç için iyi görünüyor (eğri altındaki alan 0,9):

ROC eğrisi

Benim sorularım:

  1. Bu test için kesme noktası ve okumaların belirsiz olarak değerlendirileceği yerdeki güven aralığı nasıl belirlenir?
  2. Bunu (kullanarak ggplot2) görselleştirmek için en iyi yolu nedir ?

Grafik ROCRve ggplot2paketler kullanılarak oluşturulmuştur :

#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 aşağıdaki verileri içerir:

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

Yanıtlar:


30

Bu soruyu cevaplayan herkese teşekkürler. Tek bir doğru cevabın olamayacağı ve kriterlerin kesin teşhis testinin gerisinde kalan amaçlara bağlı olacağı konusunda hemfikirim.

Sonunda , bu tür bir analizde kesinti noktası bulmaya adanmış bir R paketi OptimalCutpoints bulmuştum. Aslında, kesme noktasını belirlemek için birkaç yöntem vardır.

  • "CB" (fayda-maliyet yöntemi);
  • "MCT" (Sınıflandırma Maliyetini Azaltır);
  • "MinValueSp" (Belirlilik için ayarlanmış bir minimum değer);
  • "MinValueSe" (Hassasiyet için ayarlanmış bir minimum değer);
  • "RangeSp" (Belirlilik için ayarlanmış bir değerler aralığı);
  • "RangeSe" (Hassasiyet için ayarlanmış bir değerler aralığı);
  • "ValueSp" (Belirlilik için ayarlanmış bir değer);
  • "ValueSe" (Hassasiyet için ayarlanan bir değer);
  • "MinValueSpSe" (Spesifiklik ve Hassasiyet için ayarlanan minimum değer);
  • "MaxSp" (Spesifikliği maksimize eder);
  • "MaxSe" (Hassasiyeti en üst düzeye çıkarır);
  • "MaxSpSe" (Hassasiyeti ve Spesifikliği aynı anda arttırır);
  • "Max-SumSpSe" (Duyarlılık ve Spesifiklik toplamını maksimize eder);
  • "MaxProdSpSe" (Hassasiyet ve Spesifiklik ürününü en üst düzeye çıkarır);
  • "ROC01" (ROC arsa ve nokta (0,1) arasındaki mesafeyi en aza indirir);
  • "SpEqualSe" (Hassasiyet = Özgüllük);
  • "Youden" (Youden Dizini);
  • "MaxEfficiency" (Verimlilik veya Doğruluk oranını en yükseğe çıkarır);
  • "Minimax" (en sık yapılan hatayı en aza indirir);
  • "AUC" (AUC'nin bir işlevi olan uyumu maksimize eder);
  • "MaxDOR" (Teşhis Oran Oranını maksimize eder);
  • "MaxKappa" (Kappa Endeksini maksimize eder);
  • "MaxAccuracyArea" (Doğruluk Alanını maksimize eder);
  • "MinErrorRate" (Hata Oranını en aza indirir);
  • "MinValueNPV" (Negatif Tahmini Değer için ayarlanan bir minimum değer);
  • "MinValuePPV" (Olumlu Tahmini Değer için ayarlanan minimum değer);
  • "MinValueNPVPPV" (Tahmini Değerler için ayarlanan bir minimum değer);
  • "PROC01" (PROC grafiği ile nokta (0,1) arasındaki mesafeyi en aza indirir);
  • "NPVEqualPPV" (Olumsuz Tahmini Değer = Olumlu Tahmini Değer);
  • "ValueDLR.Negative" (Negatif Teşhis Olabilirlik Oranı için ayarlanan bir değer);
  • "ValueDLR.Positive" (Pozitif Teşhis Olabilirlik Oranı için ayarlanan bir değer);
  • "MinPvalue" (işaretleyici ile kesim noktası kullanılarak elde edilen ikili sonuç arasındaki ilişkiyi ölçen istatistiksel Ki-kare testi ile ilişkili p değerini en aza indirir);
  • "ObservedPrev" (Gözlenen prevalansa en yakın değer);
  • "MeanPrev" (Diyagnostik test değerlerinin ortalamasına en yakın değer);
  • "PrevalenceMatching" (Öngörülen yaygınlık için öngörülen değer pratikte gözlemlenen yaygınlığa eşittir).

Bu yüzden şimdi görev, her durum için en uygun yöntemi seçmek için daraltıldı.

Paket belgelerinde açıklanan, güven aralıklarını belirleme ve yöntemlerin her birinin ayrıntılı açıklamasını içeren birçok yöntem vardır.


18
Tam sayıdaki metot, eşiksizliğin keyfiliğinin bir işaretidir. Girdi değişkenlerinde kesiklik kullanmak tamamen uygun olmadığından ve sadece tahmin edilen bir değere göre kesmek (gerekirse) aramak için uygun olmadığından, bunun için neden bu kadar çok çaba harcandığı açık değildir. Bir Bayes optimum karar kuralı verirseniz, kayıp fonksiyonu ile her şey halledilir; ROC eğrisi yok, duyarlılık ve özgüllük gibi geriye dönük olasılıklar yok, giriş değişkenlerinde kesinti yok.
Frank Harrell

@ FrankHarrell Bu konuda ayrıntılı bilgi verebilir misiniz? "Kayıp fonksiyonuyla bir Bayes optimum karar kuralı kurarsanız, her şey halledilir." Bununla ilgili daha fazla literatür nereden bulabilirim?
Siyah Süt

1
Bayes optimal kararları ve uygun puanlama kuralları hakkındaki literatüre bakın.
Frank Harrell

26

Bence çoklu kesme seçenekleri var. Duyarlılığı ve özgüllüğü farklı bir şekilde ağırlıklandırabilirsiniz (örneğin, belki de sizin için düşük bir teste sahip olsanız bile, yüksek hassasiyetli bir teste sahip olmak daha önemlidir.

Hassasiyet ve özgüllük sizin için aynı öneme sahipse, kesimi hesaplamanın bir yolu, ROC eğriniz ve grafiğinizin sol üst köşesi arasındaki Öklid mesafesini en aza indiren değeri seçmektir.

Başka bir yol, kesme olarak maksimize eden değeri (hassasiyet + özgüllük - 1) kullanmaktır.

Ne yazık ki, profesörlerden veya diğer istatistikçilerden öğrendiğim için bu iki yöntem için referanslarım yok. Ben sadece ikinci yönteme atıfta bulunduğumu duydum 'Youden endeksi' [1]).

[1] https://en.wikipedia.org/wiki/Youden%27s_J_statistic


15

Bir kesme bulmak için günaha karşı. Önceden belirlenmiş bir fayda / kayıp / maliyet işlevine sahip olmadığınız sürece, en uygun karar alma karşısında bir kesim uçar. Ve bir ROC eğrisi bu konuyla ilgili değildir.


7

Matematiksel olarak konuşursak, kesinti için çözmek üzere başka bir koşul gerekir.

@ Andrea'nın amacını şu şekilde tercüme edebilirsiniz: "temel sorun hakkında dış bilgiyi kullanmak".

Örnek koşullar:

  • Bu uygulama için duyarlılığa> = x ve / veya özgüllük> = y'ye ihtiyacımız var.

  • sahte bir negatif, negatif bir pozitifin 10 katı kadar kötüdür. (Bu size ideal köşeye en yakın noktanın bir değişikliğini verir.)


1
Tam olarak optimum kararı almak için dış bilgiye ihtiyacınız var. Ancak, kayıp fonksiyonu yukarıdaki miktarlarla ifade edilmez ve optimum karar, bireysel fonksiyon için sonucun öngörülen olasılığından , kayıp fonksiyonuyla birleştiğinden gelir.
Frank Harrell,

6

Kesime karşı doğruluğu görselleştirin. ROCR belgelerinde daha fazla ayrıntı okuyabilir ve aynı zamanda çok güzel sunumlar yapabilirsiniz .

görüntü tanımını buraya girin


1
Kaynak koduna daha yakından bakarsanız, bu paketi kullandım ve bu pakete ait belgeleri okudum. Doğru kesme noktalarını ve "gri bölgeyi" belirlemek için hiçbir aracı yoktur
Yuriy Petrovskiy

1
Kodunuzu kesinlikle okudum, ancak "doğru kesim" diye bir terim yok ancak konu Doğruluk ve kesmek için doğru bir fikir verebilir. Ve bu arsa kullanarak maksimum doğruluk için kesme nasıl bulacağınızı öğrenebilirsiniz.
Vladimir Chupakhin,

2

Daha da önemlisi - bu eğrinin arkasında çok az veri noktası var. Duyarlılık / özgüllük tradeoffını nasıl yapacağınıza karar verdiğinizde, eğriyi ve sonuçta elde edilen kesim numarasını yeniden başlatmanızı şiddetle tavsiye ederim. Tahmini en iyi eşliğinizde çok fazla belirsizlik olduğunu fark edebilirsiniz.


1
Deney hala devam ediyor, bu yüzden daha fazla veri puanı alacağım. Metodolojiye ilgi duyuyorum (bunun her veri noktası için aynı olduğunu düşünüyorum). Ve bu tür testlerde yaygın olarak kullanılan "gri bölge" nin belirlenmesinde istatistiksel bir yöntem bulamadım.
Yuriy Petrovskiy
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.