ROC Analizi Nasıl Yapılır? SPSS’te AUC, Kesim Noktası ve Youden İndeksi

Kısa cevap: ROC analizi, sürekli bir test puanının (örneğin bir tarama ölçeği ya da laboratuvar değeri) iki grubu, tipik olarak hasta ve sağlıklı bireyleri ne kadar iyi ayırt ettiğini gösteren yöntemdir. SPSS’te Analyze → Classify → ROC Curve yoluyla yapılır. Sonucu önce eğri altındaki alana (AUC) bakarak okursunuz; 0,50 ayırt edicilik olmadığını, 1,00 ise kusursuz ayrımı gösterir. Ardından koordinat tablosundan Youden indeksi (duyarlılık + özgüllük − 1) en yüksek olan kesim noktasını seçersiniz. Tezde AUC, %95 güven aralığı, p değeri, kesim noktası, duyarlılık ve özgüllük birlikte raporlanır.

Tıp, hemşirelik, psikoloji ve eğitim tezlerinde “Bu ölçeğin kesme puanı kaç olmalı?” sorusu çok sık karşımıza çıkar. Bu rehberde önce temel kavramları sade bir dille açıklıyoruz. Ardından 40 kişilik kurgusal bir veri setiyle SPSS çıktısını satır satır okuyor, en iyi kesim noktasını birlikte buluyor ve dört gözlü tablodan kestirim değerlerini hesaplıyoruz. Son bölümde ise yöntem ve bulgular kısmına uyarlayabileceğiniz raporlama kalıplarını paylaşıyoruz.

ROC analizi SPSS rehberi kapak görseli: ROC eğrisi, AUC ve kesim noktası

ROC analizi nedir ve hangi soruya cevap verir?

ROC (Receiver Operating Characteristic) eğrisi, ilk olarak radar sinyallerini gürültüden ayırmak için geliştirilmiş, daha sonra tıpta tanı testlerinin değerlendirilmesinde standart hâline gelmiştir. Temel fikir basittir: Sürekli bir puan için olası her eşik değeri denenir. Her eşikte testin hastaları ne kadar yakaladığını (duyarlılık) ve sağlıklıları ne kadar doğru dışarıda bıraktığını (özgüllük) hesaplarız. Bu noktalar bir grafikte birleştirildiğinde ROC eğrisi ortaya çıkar.

Dolayısıyla ROC analizi aslında üç ayrı soruya cevap verir. İlk soru, testin genel olarak ayırt edici olup olmadığıdır; bunu AUC değeri ve onun p değeri gösterir. İkinci soru, pratikte hangi puanın “pozitif” kabul edileceğidir; bu, kesim noktası seçimiyle yanıtlanır. Üçüncü soru ise iki farklı testten hangisinin daha iyi ayırt ettiğidir; bu durumda iki AUC değeri karşılaştırılır.

Bu amaçla analiz için iki değişken yeterlidir: gerçek durumu gösteren ikili bir değişken (örneğin 1 = hasta, 0 = sağlıklı) ve test puanı. Ancak gerçek durumun güvenilir bir “altın standart” yöntemle belirlenmiş olması önemlidir. Aksi hâlde hesaplanan duyarlılık ve özgüllük, altın standardın hatalarını da içerir. Sağlık alanındaki diğer temel analizlere genel bir bakış için tıp tezlerinde istatistiksel analiz rehberimize göz atabilirsiniz.

Duyarlılık, özgüllük ve kesim noktası arasında nasıl bir ilişki vardır?

Kavramları somutlaştırmak için bir örnek kullanalım. Bir araştırmacı, 0–20 arası puan veren kısa bir tarama ölçeğinin depresyonu ne kadar iyi ayırt ettiğini incelemek istiyor. Klinik görüşmeyle 15 kişiye tanı konmuş, 25 kişi ise sağlıklı bulunmuş. Ölçekte 12 ve üzeri puanı “pozitif” kabul edersek aşağıdaki dört gözlü tablo elde edilir:

Gerçekte hasta (n = 15) Gerçekte sağlıklı (n = 25) Satır toplamı
Test pozitif (puan ≥ 12) Doğru pozitif (DP) = 13 Yanlış pozitif (YP) = 6 19
Test negatif (puan < 12) Yanlış negatif (YN) = 2 Doğru negatif (DN) = 19 21

Öğretim amaçlı kurgusal veri: 0–20 arası bir tarama ölçeği, N = 40 (15 hasta, 25 sağlıklı). Tüm değerler Python ile hesaplanmış ve elle doğrulanmıştır.

Bu tablodan iki temel ölçüt hesaplıyoruz. Duyarlılık, gerçekte hasta olanların ne kadarının test tarafından yakalandığını gösterir: Duyarlılık = DP / (DP + YN) = 13 / 15 = 0,867. Özgüllük ise sağlıklı bireylerin ne kadarının doğru biçimde negatif bulunduğunu gösterir: Özgüllük = DN / (DN + YP) = 19 / 25 = 0,760.

Burada kritik nokta şudur: Kesim noktasını düşürürseniz daha fazla hastayı yakalarsınız, ancak daha fazla sağlıklı kişi de yanlışlıkla pozitif çıkar. Kesim noktasını yükselttiğinizde ise tersi olur. Başka bir deyişle duyarlılık ile özgüllük arasında bir denge vardır. ROC eğrisi, bu dengenin bütün eşiklerdeki görüntüsüdür; yatay eksende 1 − özgüllük, dikey eksende duyarlılık yer alır.

SPSS’te ROC analizi adım adım nasıl yapılır?

Öncelikle veri dosyanızda her satır bir katılımcıyı göstermeli; bir sütunda test puanı, diğerinde gerçek durum kodu bulunmalıdır. İşlem sırası şöyledir:

  1. Menü: Güncel SPSS sürümlerinde Analyze → Classify → ROC Curve yolunu izleyin. Daha eski sürümlerde aynı pencere doğrudan Analyze → ROC Curve altında yer alır.
  2. Test Variable: Ölçek puanını bu kutuya taşıyın. Birden fazla testi karşılaştıracaksanız hepsini aynı kutuya ekleyebilirsiniz.
  3. State Variable: Gerçek durum değişkenini ekleyin ve Value of State Variable kutusuna hastalığı gösteren kodu yazın (örneğimizde 1).
  4. Display: “ROC Curve”, “With diagonal reference line”, “Standard error and confidence interval” ve “Coordinate points of the ROC Curve” seçeneklerini işaretleyin.
  5. Options: Yüksek puan hastalığa işaret ediyorsa “Larger test result indicates more positive test” seçili kalmalıdır. Düşük puanın risk gösterdiği testlerde bu yönü değiştirin.

OK düğmesine bastığınızda dört çıktı gelir: Case Processing Summary, ROC eğrisi grafiği, Area Under the Curve tablosu ve Coordinates of the Curve tablosu. SPSS’in yeni sürümlerinde (IBM dokümantasyonunda 30 ve sonrası) ayrıca Analyze → Classify → ROC Analysis adlı bir pencere bulunur. Bu pencere iki ROC eğrisinin karşılaştırılması, kesinlik-duyarlılık (precision-recall) eğrisi ve koordinat tablosunda Youden değerlerinin yazdırılması gibi ek seçenekler sunar; ancak temel yorum mantığı aynıdır.

Ayrıca analizden önce Case Processing Summary tablosunu mutlaka kontrol edin. Burada pozitif ve negatif grup sayıları görünür. Kodlamada bir hata varsa, örneğin hasta grubunu 2 olarak kodlayıp kutuya 1 yazdıysanız, sayılar beklediğinizden farklı çıkar ve bütün sonuçlar ters yorumlanır.

Eğri altındaki alan (AUC) tablosu nasıl okunur?

Örnek veri setimizde SPSS’in Area Under the Curve tablosu özetle şöyledir:

Area Std. Error Asymptotic Sig. Asymptotic 95% CI (Lower – Upper)
,903 ≈ ,047 < ,001 ≈ ,810 – ,995

Kurgusal veriyle hazırlanmış özet. Standart hata ve güven aralığı DeLong yöntemiyle hesaplanmıştır; SPSS sürümüne göre üçüncü ondalıkta küçük farklar görülebilir.

Area (AUC): 0,903 değeri, rastgele seçilen bir hastanın ölçek puanının rastgele seçilen bir sağlıklı bireyin puanından yüksek olma olasılığının yaklaşık %90 olduğunu gösterir. Böylece bu yorum, AUC’yi hem öğrenciler hem de jüri üyeleri için anlaşılır kılar.

Asymptotic Sig.: Bu değer, “gerçek alan 0,50’dir” sıfır hipotezini sınar. Burada p < ,001 olduğundan ölçeğin şanstan anlamlı düzeyde daha iyi ayırt ettiği sonucuna varılır. Ancak yalnızca p değerine bakmak yeterli değildir; çünkü çok büyük örneklemlerde 0,60 gibi zayıf bir AUC bile anlamlı çıkabilir.

%95 güven aralığı: Alt sınırın 0,81 olması, ölçeğin en kötü senaryoda bile çok iyi düzeyde ayırt edicilik gösterdiğini düşündürür. Güven aralığı 0,50’yi içeriyorsa ise test anlamlı bir ayrım yapmıyor demektir.

AUC ile Mann-Whitney U arasındaki bağ: AUC, aslında Mann-Whitney U istatistiğinin farklı bir gösterimidir: AUC = U / (n₁ × n₂) = 338,5 / (15 × 25) = 0,903. Bu yüzden iki grup arasındaki sıra farkını sınayan Mann-Whitney U testi ile ROC analizinin p değerleri aynı mantığa dayanır. AUC değerini yorumlarken aşağıdaki sınıflama yaygın olarak kullanılır:

AUC aralığı Ayırt edicilik yorumu Tezde kullanılabilecek ifade
0,50 Ayırt edicilik yok (rastgele tahmin) “Test, grupları şanstan daha iyi ayırt etmemektedir.”
0,50 – 0,70 Zayıf “Ayırt edicilik düşük düzeydedir.”
0,70 – 0,80 Kabul edilebilir “Kabul edilebilir düzeyde ayırt edicilik göstermiştir.”
0,80 – 0,90 Çok iyi “Ayırt edicilik çok iyi düzeydedir.”
0,90 ve üzeri Olağanüstü “Ayırt edicilik olağanüstü düzeydedir.”

Sınıflama Hosmer, Lemeshow ve Sturdivant’ın (2013) lojistik regresyon kitabındaki önerilere dayanır. Farklı kaynaklarda 0,60–0,70 aralığı “orta” olarak da adlandırılır; hangi ölçütü kullandığınızı tezde belirtin.

En iyi kesim noktası Youden indeksiyle nasıl bulunur?

Klasik ROC Curve penceresi kesim noktasını kendisi seçmez; yalnızca bütün olası eşikler için duyarlılık ve 1 − özgüllük değerlerini listeler. En yaygın seçim yöntemi Youden indeksidir: J = Duyarlılık + Özgüllük − 1. Bu indeks, ROC eğrisi üzerinde köşegen referans çizgisine en uzak noktayı bulur. Coordinates of the Curve tablosunun bizim örneğimizdeki ilgili satırları aşağıdadır:

Positive if Greater Than or Equal To Sensitivity 1 − Specificity Özgüllük Youden J
9,50 ,933 ,440 ,560 ,493
10,50 ,933 ,320 ,680 ,613
11,50 ,867 ,240 ,760 ,627
12,50 ,733 ,160 ,840 ,573
13,50 ,667 ,080 ,920 ,587
14,50 ,533 ,040 ,960 ,493

SPSS, kesim noktalarını gözlenen iki ardışık puanın ortası olarak verir. Bu nedenle 11,50 sınırı, tam sayılı bir ölçekte “12 ve üzeri pozitif” anlamına gelir. Son iki sütun SPSS çıktısında yoktur; elle eklenmiştir. SPSS ondalık değerleri baştaki sıfır olmadan (,867 gibi) gösterir.

Hesap nasıl yapılır? Çıktıyı Excel’e kopyalayıp yeni bir sütuna =B2-C2 formülünü yazmanız yeterlidir; çünkü duyarlılık − (1 − özgüllük), Youden indeksinin ta kendisidir. Örneğin 11,50 satırında J = 0,867 − 0,240 = 0,627 bulunur ve bu, tablodaki en yüksek değerdir. Dolayısıyla ölçek için önerilen kesme puanı 12’dir; bu puanda duyarlılık %86,7, özgüllük %76,0 olur.

Bununla birlikte Youden indeksi tek doğru cevap değildir. Örneğin hastalığı kaçırmanın bedeli yüksekse (erken tarama gibi) duyarlılığı yüksek, daha düşük bir eşik tercih edilebilir. Örneğimizde 10,50 sınırı, yani “11 ve üzeri pozitif” kuralı, duyarlılığı %93,3’e çıkarırken özgüllüğü %68’e düşürür. Yanlış pozitifin bedeli yüksekse ise tersine, özgüllüğü yüksek bir eşik seçilir. Bu nedenle tezde kesim noktasını hangi gerekçeyle seçtiğinizi açıkça yazmanız gerekir.

Öte yandan kesim noktasını aynı veride hem belirleyip hem değerlendirdiğinizde performans olduğundan iyi görünebilir. Bu iyimserliği azaltmak için mümkünse ayrı bir doğrulama örneklemi kullanın ya da sınırlılıklar bölümünde bu konuya değinin.

ROC analizinizi birlikte kontrol edelim

Kesim noktasına karar veremiyorsanız, iki testin AUC değerlerini karşılaştırmanız gerekiyorsa ya da hakem duyarlılık ve özgüllük için güven aralığı istiyorsa WhatsApp üzerinden yazabilir ya da iletişim ve teklif sayfamızı kullanabilirsiniz. Kapsam netleştikten sonra çalışma planı ve ücret bütçenize göre birlikte belirlenir.

Pozitif ve negatif kestirim değerleri nasıl hesaplanır?

Duyarlılık ve özgüllük, testin kendisini tanımlar. Klinisyenin asıl merak ettiği ise genellikle şudur: “Testi pozitif çıkan bu kişi gerçekten hasta mı?” Bu sorunun cevabı ise kestirim değerlerindedir; onları da aynı dört gözlü tablodan hesaplıyoruz:

  • Pozitif kestirim değeri (PKD): DP / (DP + YP) = 13 / 19 ≈ 0,684. Testi pozitif çıkanların yaklaşık %68’i gerçekten hastadır.
  • Negatif kestirim değeri (NKD): DN / (DN + YN) = 19 / 21 ≈ 0,905. Testi negatif çıkanların yaklaşık %90’ı gerçekten sağlıklıdır.
  • Pozitif olabilirlik oranı (LR+): Duyarlılık / (1 − Özgüllük) = 0,867 / 0,240 ≈ 3,61.
  • Negatif olabilirlik oranı (LR−): (1 − Duyarlılık) / Özgüllük = 0,133 / 0,760 ≈ 0,18.

Burada önemli bir uyarı vardır: Kestirim değerleri, örneklemdeki hastalık sıklığına bağlıdır. Örneğimizde 40 kişinin 15’i (%37,5) hastadır; oysa toplumda bu oran çok daha düşük olabilir. Sıklık azaldıkça pozitif kestirim değeri de düşer. Bu yüzden olgu-kontrol desenli çalışmalarda PKD ve NKD değerlerini genellemek yerine olabilirlik oranlarını raporlamak daha güvenli bir tercihtir.

SPSS bu değerleri ROC penceresinde vermez. Kesim noktasını belirledikten sonra Transform → Recode into Different Variables ile puanı 0/1 olarak yeniden kodlayın. Ardından Analyze → Descriptive Statistics → Crosstabs menüsünde yeni değişkeni satıra, gerçek durumu sütuna yerleştirerek dört gözlü tabloyu elde edin.

Lojistik regresyonla birlikte ROC analizi nasıl kullanılır?

Tek bir puan yerine birkaç değişkeni (örneğin yaş, cinsiyet ve ölçek puanı) birlikte kullanarak tahmin yapmak istiyorsanız önce lojistik regresyon modeli kurulur. Sonra modelin ayırt ediciliği ROC analizi ile değerlendirilir. Bunun için izleyeceğiniz sıra şöyledir:

  1. Analyze → Regression → Binary Logistic menüsünde modeli kurun.
  2. Save düğmesinde “Probabilities” kutusunu işaretleyin; SPSS veri dosyasına PRE_1 adlı bir tahmin olasılığı sütunu ekler.
  3. ROC Curve penceresinde Test Variable olarak bu PRE_1 değişkenini kullanın.

Bu yaklaşımla elde edilen AUC, lojistik regresyon çıktısındaki C istatistiğine eşittir ve modelin genel ayırt ediciliğini özetler. Ayrıca sınıflandırma tablosundaki varsayılan 0,50 eşiği yerine Youden indeksine göre seçilmiş bir olasılık eşiği kullanmak, dengesiz gruplarda daha anlamlı sonuçlar verebilir. Model kurma, Hosmer-Lemeshow testi ve odds oranı yorumu için SPSS ile lojistik regresyon analizi yazımıza bakabilirsiniz.

Benzer şekilde iki farklı ölçeğin ya da iki modelin AUC değerlerini karşılaştırmak da sık istenen bir analizdir. Aynı katılımcılarda ölçülen iki test için DeLong testini kullanıyoruz. Yeni ROC Analysis penceresinde bu karşılaştırma için eşleştirilmiş örneklem (Paired-sample design) seçeneği bulunur. Eski sürümlerde ise R’deki pROC paketinin roc.test() fonksiyonu pratik bir çözümdür.

Excel, R ve Python’da aynı hesap nasıl yapılır?

Excel’de hazır bir ROC menüsü yoktur, ancak koordinat tablosunu formüllerle oluşturabilirsiniz. Diyelim ki A sütununda puanlar, B sütununda durum kodları (1/0) ve D sütununda denenecek eşikler var. Bu durumda duyarlılık için =COUNTIFS($B:$B;1;$A:$A;">="&D2)/COUNTIF($B:$B;1), 1 − özgüllük için ise =COUNTIFS($B:$B;0;$A:$A;">="&D2)/COUNTIF($B:$B;0) formüllerini kullanın. Ardından bu iki sütunu dağılım grafiğiyle çizdiğinizde ROC eğrisi elde edilir. AUC değerini ise ardışık noktalar arasındaki alanları yamuk kuralıyla toplayarak bulursunuz.

R ve Python kullananlar için aynı analizi birkaç satırla yapmak mümkündür. Aşağıdaki kod, yukarıdaki örneği yeniden üretmek için yazılmıştır:

# R (pROC paketi)
library(pROC)
r <- roc(durum ~ puan, data = d, ci = TRUE, direction = "<")
r$auc; r$ci                         # AUC ve DeLong %95 GA
coords(r, "best", best.method = "youden",
       ret = c("threshold", "sensitivity", "specificity", "ppv", "npv"))
plot(r, print.auc = TRUE)

# Python (scikit-learn)
from sklearn.metrics import roc_auc_score, roc_curve
auc = roc_auc_score(durum, puan)
fpr, tpr, esik = roc_curve(durum, puan)
j = tpr - fpr; en_iyi = esik[j.argmax()]   # Youden indeksi

R’deki pROC paketi güven aralığını varsayılan olarak DeLong yöntemiyle hesaplar; bu nedenle sonuçlar SPSS’e çok yakın çıkar. Scikit-learn ise eşikleri gözlenen puanların kendisi olarak verir. Dolayısıyla Python’da en iyi eşik “12” olarak görünürken SPSS aynı noktayı “11,50” diye gösterir; iki sonuç aynı kuralı ifade eder.

Planlama aşamasındaysanız, ROC çalışmaları için de örneklem büyüklüğü önceden hesaplanmalıdır. Beklenen AUC değerine ve hasta-sağlıklı oranına göre gereken kişi sayısı değişir. Genel güç analizi mantığı için G*Power ile örneklem büyüklüğü hesaplama rehberimizi okuyabilirsiniz; AUC’ye özgü hesap için pROC paketindeki power.roc.test() fonksiyonu kullanılabilir.

ROC analizi sonuçları tezde nasıl raporlanır?

Raporlamada okuyucunun analizi tekrar edebilmesi için gereken bütün bilgileri vermek gerekir. Tanı doğruluğu çalışmalarında STARD 2015 kontrol listesi de bu açıdan iyi bir rehberdir. Yöntem ve bulgular bölümlerinde şu öğelere yer verin: altın standart yöntem, grup sayıları, AUC ve %95 güven aralığı, p değeri, kesim noktası ile seçim gerekçesi, duyarlılık, özgüllük ve mümkünse kestirim değerleri. Aşağıdaki kalıbı kendi değişkenlerinize uyarlayabilirsiniz:

Yöntem için örnek cümle: “Tarama ölçeğinin klinik görüşmeyle konan depresyon tanısını ayırt etme gücü ROC analizi ile değerlendirilmiştir. En uygun kesme puanı Youden indeksine göre belirlenmiştir.”

Bulgular için örnek paragraf: “Ölçeğin eğri altındaki alanı 0,903 (%95 GA: 0,810–0,995; p < ,001) olarak bulunmuş ve ayırt edicilik olağanüstü düzeyde değerlendirilmiştir. Youden indeksine göre en uygun kesme puanı 12 olarak belirlenmiştir (J = 0,627). Bu puanda duyarlılık %86,7, özgüllük %76,0, pozitif kestirim değeri %68,4 ve negatif kestirim değeri %90,5’tir.”

Son olarak sık yapılan hataları kısaca hatırlatalım. Birincisi, State Variable kutusuna yanlış kodu yazmak AUC değerini 1 − AUC olarak tersine çevirir; 0,50’nin altında bir AUC görürseniz önce kodlamayı ve test yönünü kontrol edin. İkincisi, SPSS’in verdiği 11,50 gibi ondalıklı sınırları olduğu gibi yazmak okuyucuyu şaşırtabilir; tam sayılı bir ölçekte bunu “12 ve üzeri” diye ifade edin. Üçüncüsü ise ROC eğrisi grafiğini köşegen referans çizgisi olmadan vermektir. Kısacası ROC analizi raporlanırken AUC, güven aralığı, gerekçeli bir kesim noktası ve bu noktadaki duyarlılık ile özgüllük birlikte verildiğinde bulgular hem tutarlı hem de savunulabilir olur.

Sık sorulan sorular

ROC analizi için en az kaç kişi gerekir?
Kesin bir alt sınır yoktur; ancak her iki grupta da yeterli sayıda gözlem olmalıdır. Hasta sayısı çok azsa AUC güven aralığı genişler ve kesim noktası kararsız hâle gelir. Gereken örneklemi beklenen AUC değerine göre önceden güç analiziyle belirlemek en doğru yoldur.

AUC değeri 0,50'nin altında çıktı, bu ne anlama gelir?
Çoğu zaman kodlama ya da yön hatasına işaret eder. State Variable kutusuna yazılan kodu ve Options penceresindeki test yönünü kontrol edin. Düşük puanın hastalığı gösterdiği testlerde “Smaller test result indicates more positive test” seçilmelidir. Bu düzeltmeden sonra AUC, 1 − eski değer olarak hesaplanır.

Kesim noktası için Youden indeksi dışında hangi yöntemler var?
Sık kullanılan bir alternatif, ROC eğrisinde sol üst köşeye (duyarlılık = 1, özgüllük = 1) en yakın noktayı seçmektir. Ayrıca klinik amaca göre en az %90 duyarlılık gibi önceden belirlenmiş bir koşulu sağlayan eşik de seçilebilir. Hangi yöntemi kullandığınızı yöntem bölümünde gerekçesiyle belirtmeniz yeterlidir.

ROC analizi yalnızca tıp tezlerinde mi kullanılır?
Hayır. Psikolojide ölçek kesme puanı belirlemede, eğitimde başarı ya da risk tahmininde ve makine öğrenmesinde sınıflandırma modellerinin değerlendirilmesinde de yaygın olarak kullanılır. Ortak nokta, sürekli bir puanın ikili bir sonucu ne kadar iyi ayırt ettiğinin incelenmesidir.

Sonuç değişkenim üç kategoriliyse ROC analizi yapabilir miyim?
Klasik ROC analizi ikili bir sonuç gerektirir. Üç kategorili durumlarda her kategori diğerlerine karşı ayrı ayrı (bire karşı hepsi) değerlendirilebilir ya da çok sınıflı AUC yöntemleri kullanılabilir. Bu tür analizlerde hangi karşılaştırmanın yapıldığını tablolarda açıkça göstermek önemlidir.

İlgili rehberler ve hizmetler