Bu ikili tahmin problemine nasıl yaklaşmalıyım?


9

Aşağıdaki biçime sahip bir veri kümem var.

Kanser Tahminleri Kanser Yok

İkili sonuç kanseri var / kanser yok. Veri setindeki her doktor her hastayı gördü ve hastanın kanser olup olmadığı konusunda bağımsız bir karar verdi. Doktorlar daha sonra teşhislerinin doğru olduğuna dair güven seviyelerini 5 üzerinden verir ve güven seviyesi parantez içinde gösterilir.

Bu veri kümesinden iyi tahminler almanın çeşitli yollarını denedim.

Güven düzeylerini görmezden gelerek doktorlar arasında ortalama bir değer elde etmek benim için gayet iyi çalışıyor. Yukarıdaki tabloda, Hasta 1 ve Hasta 2 için doğru tanıları üretecekti, ancak yanlış bir şekilde Hasta 3'ün kanser olduğunu söylemiş olurdu, çünkü 2-1 çoğunlukta doktorlar Hasta 3'ün kanser olduğunu düşünüyorlar.

Ayrıca iki doktoru rastgele örneklediğimiz bir yöntem denedim ve eğer birbirleriyle aynı fikirde değillerse, karar oyu hangi doktordan daha emin olursa olsun. Bu yöntem, çok fazla doktora danışmamız gerekmediği için ekonomiktir, ancak hata oranını biraz arttırır.

İki doktoru rastgele seçtiğimiz ilgili bir yöntemi denedim ve eğer birbirleriyle aynı fikirde değillerse rastgele iki tane daha seçiyoruz. Bir tanı en az iki 'oy' ile devam ederse, o tanı lehine olan şeyleri çözeriz. Değilse, daha fazla doktor örnek alıyoruz. Bu yöntem oldukça ekonomiktir ve çok fazla hata yapmaz.

Bir şeyler yapmanın daha karmaşık bir yolunu kaçırdığımı hissetmeye yardım edemem. Örneğin, veri kümesini eğitim ve test setlerine ayırabileceğim bir yol olup olmadığını merak ediyorum ve tanıları birleştirmek için en uygun yolu çalıştırabilir ve sonra bu ağırlıkların test setinde nasıl performans gösterdiğini görebilirsiniz. Bir olasılık, deneme setinde hata yapmaya devam eden düşük kilolu doktorları ve belki de yüksek güvenle yapılan hafif kilolu teşhisleri sağlayan bir çeşit yöntemdir (güven, bu veri kümesindeki doğrulukla ilişkilidir).

Bu genel açıklamaya uyan çeşitli veri kümelerim var, bu nedenle örnek boyutları değişiyor ve tüm veri kümeleri doktorlar / hastalar ile ilgili değil. Bununla birlikte, bu özel veri kümesinde her biri 108 hasta gören 40 doktor bulunmaktadır.

DÜZENLEME: İşte @ jeremy-miles'nin cevabını okumamdan kaynaklanan bazı ağırlıklandırmalara bir bağlantı .

  1. Ağırlıksız sonuçlar ilk sütunda bulunur. Aslında bu veri kümesinde, daha önce yanlışlıkla söylediğim gibi, maksimum güven değeri 5 değil, 5 idi. Böylece @ jeremy-miles'in yaklaşımını takiben herhangi bir hastanın alabileceği en yüksek ağırlıksız puan 7 olacaktır. Herhangi bir hastanın alabileceği en düşük ağırlıksız puan 0'dır, bu da her doktorun o hastanın kansere sahip olmadığına dair 4 güven seviyesiyle iddia ettiği anlamına gelir.

  2. Cronbach Alpha tarafından ağırlıklandırma. SPSS'de genel olarak Cronbach Alfa'sının 0.9807 olduğunu buldum. Cronbach Alpha'yı daha manuel bir şekilde hesaplayarak bu değerin doğru olduğunu doğrulamaya çalıştım. Ben yapıştırmak 40 doktor, bir kovaryans matrisi oluşturulur burada . Sonra Cronbach Alfa formülü burada (burada doktorların ürün "in) öğelerin sayısı I hesaplanır kovaryans matrisi tüm çapraz elemanları toplanmasıyla ve tüm elemanları toplanmasıyla kovaryans matrisi. Sonra anladımα=KK-1(1-Σσxben2σT2)Kσxi2σT2α=40401(18.7915200.7112)=0,9807 Daha sonra her doktor doktordan alındığında ortaya çıkabilecek 40 farklı Cronbach Alpha hesapladım Veri kümesi. Cronbach's Alpha'ya sıfır katkıda bulunan herhangi bir doktora ağırlık verdim. Kalan doktorlar için Cronbach's Alpha'ya yaptıkları olumlu katkılarla orantılı olarak ağırlık buldum.

  3. Toplam Madde Korelasyonlarına Göre Ağırlıklandırma. Tüm Toplam Öğe Korelasyonlarını hesaplıyorum ve daha sonra her doktoru korelasyonlarının boyutuyla orantılı olarak ağırlıklandırıyorum.

  4. Regresyon Katsayılarına Göre Ağırlıklandırma.

Hala emin olmadığım bir şey, hangi yöntemin diğerinden "daha iyi" çalıştığını söylemek. Daha önce, Peirce Skill Score gibi ikili bir tahmin ve ikili bir sonucun olduğu durumlar için uygun olan şeyleri hesaplıyordum. Ancak, şimdi 0'dan 1 yerine 0'dan 7'ye kadar tahminlerim var. Tüm ağırlıklı puanları> 3,50'den 1'e ve tüm ağırlıklı puanları <3,50'den 0'a mı dönüştürmeliyim?


Biz diyebilir miyiz No Cancer (3)olduğunu Cancer (2)? Bu, probleminizi biraz basitleştirecektir.
Wayne

1
Re: veri yapınız, farklı sütunlarda farklı değişkenlere (hastanın kanseri olup olmadığı; değerlendirmenin ne kadar emin olduğu) sahip olmak neredeyse her zaman daha iyidir. Bunları "kansersiz (3)" gibi birleştirmek seçeneklerinizi ciddi şekilde sınırlar.
rolando2

Maksimum güven ile kanser kestirim veri aralıkları @Wayne Cancer (4)maksimum güven ile bir kanser tahminine No Cancer (4). Bunu söyleyemeyiz No Cancer (3)ve Cancer (2)aynıyız, ama bir süreklilik olduğunu söyleyebiliriz ve bu sürekliliğin orta noktaları Cancer (1)ve No Cancer (1).
user1205901 - Monica'yı

@ rolando2 Tavsiye için teşekkürler. Kendi veri dosyamdaki şeyleri yeniden düzenledim, böylece şimdi ayrılmışlar.
user1205901 - Monica'yı

1
Eşiğinizin ayarlanabilir bir parametre olduğuna dikkat edin , bu nedenle uygun kesme değerlendirme ölçütünüze bağlı olacaktır. Metriğinize aşina olmadığım için Google'ı aradım ve aslında ilk isabet sizinle alakalı olabilir: Maksimum Peirce beceri puanı hakkında bir not (2007) .
GeoMatt22

Yanıtlar:


7

İlk olarak, doktorların birbirleriyle aynı fikirde olup olmadığını görecektim. 50 doktoru ayrı ayrı analiz edemezsiniz, çünkü modele fazla uyuyacaksınız - bir doktor tesadüfen harika görünecek.

Güven ve teşhisi 10 puanlık bir ölçekte birleştirmeyi deneyebilirsiniz. Eğer doktorlar hastanın kansere sahip olmadığını söylüyorlar ve çok kendilerine güveniyorlarsa, bu 0'dır. Eğer doktor kansere sahip olduklarını ve kendilerine çok emin olduklarını söylüyorsa, bu 9'dur. ve emin değilsiniz, bu 5, vb.

Tahmin etmeye çalıştığınızda, bir çeşit regresyon analizi yaparsınız, ancak bu değişkenlerin nedensel düzenini düşünmek, bunun tersidir. Hastanın kansere sahip olup olmadığı tanının nedeni olup olmadığı, tanıdır.

Satırlarınız sabırlı olmalı ve sütunlarınız doktor olmalıdır. Artık psikometride yaygın olan bir durum var (bu yüzden etiketi ekledim).

Sonra puanlar arasındaki ilişkilere bakın. Her hastanın ortalama bir puanı ve her doktordan bir puanı vardır. Ortalama puan her doktorun puanı ile pozitif olarak ilişkili mi? Değilse, bu doktor muhtemelen güvenilir değildir (buna madde-toplam korelasyonu denir). Bazen bir doktoru toplam puandan (veya ortalama puandan) çıkarır ve bu doktorun diğer tüm doktorların ortalamasıyla ilişkili olup olmadığını görürsünüz - bu düzeltilmiş madde toplam korelasyonudur.

Cronbach'ın alfa (sınıf içi korelasyonun bir şeklidir) ve her doktor olmadan alfa hesaplayabilirsiniz. Bir doktor eklediğinizde alfa her zaman yükselmelidir, bu nedenle bir doktoru kaldırdığınızda yükselirse, doktorun derecesi şüphelidir (bu genellikle düzeltilmiş madde-toplam korelasyonundan farklı bir şey söylemez).

R kullanırsanız, bu tür şeyler psych paketinde alpha işlevi kullanılarak kullanılabilir. Stata kullanırsanız, komut alfa, SAS'ta proc düzeltmesi ve SPSS'de ölçek altında, güvenilirlik.

Daha sonra, her bir doktorun ortalama skoru veya ağırlıklı ortalama (korelasyon tarafından ağırlıklandırılmış) olarak bir skor hesaplayabilir ve bu skorun gerçek tanıyı öngörüp öngörmediğini görebilirsiniz.

Ya da o aşamayı atlayabilir ve her doktorun tanı puanını ayrı ayrı azaltabilir ve regresyon parametrelerini ağırlık olarak tedavi edebilirsiniz.

Açıklık istemekten çekinmeyin ve bir kitap istiyorsanız, Streiner ve Norman'ın "Sağlık Ölçüm Ölçekleri" ni seviyorum.

-Düzenle: OP ek bilgilerine dayanarak.

Vay canına, bu bir Cronbach alfa heck. Bunu yüksek gördüğüm tek zaman bir hata yapıldığı zamandır.

Şimdi lojistik regresyon yapacağım ve ROC eğrilerine bakacağım.

Regresyon ile ağırlıklandırma ve korelasyon arasındaki fark, doktorların nasıl tepki verdiğine inandığınıza bağlıdır. Bazı dokümanlar (daha yetenekli olmadan) genellikle daha kendinden emin olabilirler ve bu nedenle aşırı aralıkları daha fazla kullanabilirler. Bunu düzeltmek istiyorsanız, regresyon yerine korelasyon kullanmak bunu yapar. Muhtemelen gerileme ile ağırlık olacaktır, çünkü bu orijinal verileri tutar (ve herhangi bir bilgiyi atmaz).

Edit (2): Her birinin çıktıyı ne kadar iyi tahmin ettiğini görmek için R'de lojistik regresyon modelleri çalıştırdım. tl / dr: aralarında hiçbir şey yok.

İşte benim kod:

d <- read.csv("Copy of Cancer data - Weightings.csv")

mrc <- glm(cancer ~ weightrc, data = d, family = "binomial")
mun <- glm(cancer ~ unweight, data = d, family = "binomial")
mca <- glm(cancer ~ weightca, data = d, family = "binomial")
mic <- glm(cancer ~ weightic, data = d, family = "binomial")

d$prc <- predict(mrc, type = "response")
d$pun <- predict(mun, type = "response")
d$pca <- predict(mca, type = "response")
d$pic <- predict(mic, type = "response")

par(mfrow = c(2, 2))
roc(d$cancer, d$prc, ci = TRUE, plot = TRUE)
roc(d$cancer, d$pun, ci = TRUE, plot = TRUE)
roc(d$cancer, d$pca, ci = TRUE, plot = TRUE)
roc(d$cancer, d$pic, ci = TRUE, plot = TRUE)

4 ROC eğrisi

Ve çıktı:

> par(mfrow = c(2, 2))
> roc(d$cancer, d$prc, ci = TRUE, plot = TRUE)

Call:
roc.default(response = d$cancer, predictor = d$prc, ci = TRUE,     plot = TRUE)

Data: d$prc in 81 controls (d$cancer 0) < 27 cases (d$cancer 1).
Area under the curve: 0.9831
95% CI: 0.9637-1 (DeLong)
> roc(d$cancer, d$pun, ci = TRUE, plot = TRUE)

Call:
roc.default(response = d$cancer, predictor = d$pun, ci = TRUE,     plot = TRUE)

Data: d$pun in 81 controls (d$cancer 0) < 27 cases (d$cancer 1).
Area under the curve: 0.9808
95% CI: 0.9602-1 (DeLong)
> roc(d$cancer, d$pca, ci = TRUE, plot = TRUE)

Call:
roc.default(response = d$cancer, predictor = d$pca, ci = TRUE,     plot = TRUE)

Data: d$pca in 81 controls (d$cancer 0) < 27 cases (d$cancer 1).
Area under the curve: 0.9854
95% CI: 0.9688-1 (DeLong)
> roc(d$cancer, d$pic, ci = TRUE, plot = TRUE)

Call:
roc.default(response = d$cancer, predictor = d$pic, ci = TRUE,     plot = TRUE)

Data: d$pic in 81 controls (d$cancer 0) < 27 cases (d$cancer 1).
Area under the curve: 0.9822
95% CI: 0.9623-1 (DeLong)

1
Çok iyi. Akıl yürütmenizin izin verdiği gibi, bazı doktorlar eğilimi geliştirirken benzersiz bir anlayışa katkıda bulunarak alfa'yı daha da kötüleştirebilir.
rolando2

@ jeremy-miles Bu yanıt için teşekkür ederiz ve bu konu hakkında soru sormak için iyi bir teklif. Önerdiklerinizi uygulamaya çalıştım ve bazı sonuçları yayınlamak için OP'yi düzenledim. Merak ettiğim en önemli şey, yazınızı doğru şekilde yorumlayıp yorumlamadığım ve ayrıca belirli toplama yöntemlerinin sonucu tahmin etmede diğer yöntemlerden daha iyi çalıştığını göstermek için ne gerekeceğidir.
user1205901 - Monica'yı

Verileri gönderdiğiniz için teşekkür ederiz. Sonra bakacağım. (Hangi yazılımı kullanıyorsunuz?)
Jeremy Miles

@JeremyMiles Bu düzenlemeyi gönderdiğiniz için teşekkür ederiz! MATLAB kullanıyorum, ancak R kodunu yayınladığınızdan beri R'yi yukarı kaydırıp kullanmak için yeterli biliyorum. SPSS'de Cronbach's Alpha olduğunu hesapladım - R'den farklı bir değer elde ediyor musunuz?
user1205901 - Monica'yı

1
Evet, ben de öyle düşünüyordum. Böylece her doktor farklı bir kilo alır.
Jeremy Miles

2

Kutudan çıktığı iki öneri:

  1. Lojistik regresyonunuzun kayıp fonksiyonu üzerinde ağırlık kullanabilirsiniz, böylece hastanın P = 1 ile kansere sahip olduğundan çok emin olan doktorun etkisi iki katına çıkarsa, P = 0.75 ile kanseri olduğunu söyleyen bir başkası vardır. Olasılıklarınızı ağırlıklara düzgün bir şekilde dönüştürmeyi unutmayın.
  2. Genellikle ihmal edilen bir model ailesi sıralama modelidir. Sıralayıcılar içinde üç büyük grup vardır: girdilerinizin ne olduğuna bağlı olarak liste, nokta ve çift sıralaması. Durumunuzda puansal sıralama kullanabileceğiniz anlaşılıyor .

Olasılıkları doğru bir şekilde ağırlıklara dönüştürmenin bir yolunu önerebilir misiniz? Bu konsepti araştırmayı denedim, ancak bunun nasıl yapılacağı konusunda net bir tavsiye bulamadım.
user1205901 - Monica

@ user1205901, aklımda çok basit bir şey vardı: Let P= doktor tarafından verilen kanser olma olasılığı, sonra (python notasyonunda): y=[1 if p >= 0.5 else 0 for p in P]ve w=[abs(p-0.5)*2 for p in P]. Sonra modeli LogisticRegression().fit(X,y,w)
Ricardo Cruz

Kayıp fonksiyonunda, bu, örneğin, kanser olmadığı için ağırlığı 0,2'den 0,1'e iki katına çıkarır (0,1 -> 0,8 ve 0,2 -> 0,6). Doktor emin değilse (P ~ 0.5) gözlem gözlem kaybına neredeyse hiçbir şey katmaz. Hangi modeli kullanırsa kullansın, çoğu modelin desteklediği kayıp fonksiyonuna bir maliyet vektörü eklemeyi desteklemesi gerekir. Bunun iyi olup olmadığını bilmiyorum, ama denemek önemsiz görünüyor. Önce bir metrik belirtmesi gerekiyor. Kayıp fonksiyonu, en üst düzeye çıkarmak istediği metriğe göre daha uygun olabilir.
Ricardo Cruz

2

(Bu benim uzmanlık alanım dışında, bu yüzden Jeremy Miles'ın cevabı daha güvenilir olabilir.)

İşte bir fikir.

İlk olarak, güven düzeyinin olmadığını düşünün. Sonra her hasta içinben=1...N-, ya kanser var ya da değil cben{0,1}ve her doktor j=1...m Onlara kanser teşhisi konmuş ya da konmamış, dbenj{0,1}.

Basit bir yaklaşım, doktorların belirli bir hastanın teşhisi üzerinde hemfikir olabileceği veya hemfikir olabileceği, ancak hastanın gerçek durumunu bildiğimiz takdirde, her bir doktorun teşhisinin bağımsız olarak tedavi edilebileceğini varsaymaktır . YanidbenjHangi şartlı bağımsız gibi verilencben. Bu , tahmin edilmesi kolay parametrelerle Naive Bayes olarak bilinen iyi tanımlanmış bir sınıflandırıcı ile sonuçlanır .

Özellikle, birincil parametreler taban hızdır, p[c]1N-Σbencbenve koşullu tanı olasılıkları

p[dj|c]ΣbendbenjcbenΣbencben
Bu ikinci parametrenin doktor tanılarının ağırlıklı ortalaması olduğunu unutmayın. jağırlıkların gerçek hasta koşulları olduğu yerlerde cben.

Şimdi bu model makul ise, güven seviyelerini birleştirmenin bir yolu ağırlıkları ayarlamaktır. O zaman koşullu olasılıklar

p[dj|c,wj]ΣbendbenjwbenjcbenΣbenwbenjcben
Buraya wbenj0 güven düzeyini oluşturan bir ağırlıktır. dbenj.

Ağırlıklarınız olasılık olarak kullanıldığında w[0,1]" Bernoulli kısayolu" formülünü kullanabilirsiniz.

p[d|w]=dw(1-d)1-w
hesaba katmak d=0 uygun şekilde.

Not: Bu, yazılım vermek gerektirir 0^0=1ziyade 0^0=NaNortak ama değer denetimi olan! Alternatif olarak,w(0,1)örneğin, güven k{1...K} sonra w=k/(K+1) çalışır.


@Wayne tarafından yapılan yorum bağlamında: Eğer söylüyorsanız No Cancer (3) = Cancer (2), bu benim ağırlıklandırma modeli ile tutarlıw[k]=kK, dan beri 25=1-35. Alternatif olarak, eğer derseniz No Cancer (3) = Cancer (3),w[k]=kK+1, dan beri 36=1-36.
GeoMatt22

Anladığımı kontrol edebilir miyim
p[dj|c,wj]ΣbendbenjwbenjcbenΣbenwbenjcben
doğru şekilde? Sonuçlar [1,0,1] ve doktor tahminleri [0,1,1] ise ve doktor ağırlıkları [0,2,0,4,0,8] ise, ağırlıklı koşullu tanı olasılığı 0,5 olarak mı ortaya çıkıyor?
user1205901 - Monica'yı

Maalesef, sadece dağırlıklı olacak, yani δ[0,1]göstergeler yerine d{0,1}. Yani davan içinδben=wben(dben=1)+(1-wben)(dben=0)δ=[0.8,0.4,0.8]. Sonrap[c,δ]=cδ¯=0.8+0+0.83=230.8, süre p[2]=c¯=23 ve p[δ]=δ¯=560.8. Yanip[c|δ]=p[c,δ]/p[δ]=0.8 ve p[δ|c]=p[c,δ]/p[c]=0.8.
GeoMatt22

0

Sorunuzdan, test etmek istediğiniz şeyin ölçüm sisteminiz olduğu anlaşılıyor. Proses mühendisliği alanında, bu bir nitelik ölçüm sistemi analizi veya MSA olacaktır.

Bu bağlantı, gerekli örneklem büyüklüğü hakkında bazı yararlı bilgiler sağlar ve hesaplamalar bu tür bir çalışma yürütmek için yapılır. https://www.isixsigma.com/tools-templates/measurement-systems-analysis-msa-gage-rr/making-sense-attribute-gage-rr-calculations/

Bu çalışma ile, aynı hastayı en az iki kez aynı bilgi ile teşhis etmek için doktora da ihtiyacınız olacaktır.

Bu çalışmayı iki yoldan biriyle yapabilirsiniz. Her bir doktor tarafından doktorlar arasındaki anlaşmayı belirlemek için basit kanser olabilir / kansersiz derecelendirmeyi kullanabilirsiniz. İdeal olarak, aynı güven düzeyiyle teşhis koyabilmelidirler. Daha sonra her hekim arasında ve her doktor tarafından anlaşmayı test etmek için 10 puanlık ölçeğin tamamını kullanabilirsiniz. (Herkes kanserin (5) aynı derecelendirme olduğunu, hiçbir kanserin (1) aynı derecelendirme olmadığını kabul etmelidir & c.)

Bağlantılı web sitesindeki hesaplamaları, testleriniz için kullanabileceğiniz herhangi bir platformda gerçekleştirmek kolaydır.

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.