@ Tim ♦ ve @ gung ♦ 'ın cevapları hemen hemen her şeyi kapsıyor olsa da, her ikisini de tek bir sentezlemeye çalışacağım ve daha fazla açıklama sunacağım.
Alıntılanan çizgilerin bağlamı, en yaygın olduğu gibi, çoğunlukla belirli bir Eşik şeklinde klinik testlere atıfta bulunabilir. Bir hastalık düşünün ve olarak adlandırılan sağlıklı durumu içeren dışındaki her şeyi düşünün . Testimiz için, için iyi bir tahmin elde etmemizi sağlayan bazı proxy ölçümleri bulmak istiyoruz . (1) Mutlak özgüllük / duyarlılık almamamızın nedeni, proxy miktarımızın değerleriyle mükemmel bir şekilde ilişkili olmamasıdır. hastalık durumu, ancak sadece genel olarak bununla bağlantılıdır ve bu nedenle, bireysel ölçümlerde, bu miktarın için eşikimizi geçme şansımız olabilir.D D c D D cDDDcDDcbireyler ve tersi. Anlaşılır olması açısından, değişkenlik için bir Gauss Modelini varsayalım.
Diyelim ki proxy miktarı olarak kullanıyoruz . Eğer güzel seçilmiş olup, daha sonra daha yüksek olmalıdır ( beklenen değer operatörüdür). Şimdi, nin aslında her biri için gittikçe artan bir beklenen değere sahip 3 derece , , şiddetinden oluşan kompozit bir durum ( ) olduğunu fark ettiğimizde ortaya çıkar . Tek bir kişi için, kategorisinden veya seçilenx E [ x D ] E [ x D c ]xxE[ xD]E[ xD c]D D c D 1 D 2 D 3 x D D c x T D D c x T D x D cEDDcD1D2D3xDDckategorisinde, 'testin' pozitif çıkıp çıkma olasılığı, seçtiğimiz eşik değerine bağlı olacaktır. Bize seçim diyelim ikisine birden sahip gerçekten rastgele bir örneği inceleyerek dayalı ve bireyler. Bizim bazı yanlış pozitif ve negatif neden olacaktır. Rastgele bir kişisi , yeşil grafik tarafından verilirse değerini ve kırmızı grafikle rastgele seçilmiş bir kişisininkini .xTDDcxTDxDc
Elde edilen gerçek sayılar ve bireylerin gerçek sayılarına bağlı olacaktır, ancak ortaya çıkan özgüllük ve duyarlılık değişmeyecektir. Let kümülatif olasılık fonksiyonu. Daha sonra, hastalığının prevalansı için, testimizin kombine popülasyonda gerçekte nasıl performans gösterdiğini görmeye çalıştığımızda, genel durumdan bekleneceği gibi 2x2'lik bir tablo.D c F ( ) p DDDcF()pD
(D,+)=p(1−FD(xT))
(Dc,−)=(1−p)(1−FDc(xT))
(D,−)=p(FD(xT))
(Dc,+)=(1−p)∗FDc(xT)
Gerçek sayılar bağımlıdır, ancak hassasiyet ve özgüllük bağımsızdır. Ancak, bunların her ikisi de ve ' bağımlıdır . Dolayısıyla, bunları etkileyen tüm faktörler bu metrikleri kesinlikle değiştirecektir. Örneğin, yoğun bakım ünitesinde , yerine ile değiştirilecekti ve ayaktan hastalardan bahsediyorsak, . Hastanede, prevalansın da farklı olması ayrı bir konudur,ppFDFDcFDFD3FD1ancak duyarlılıkların ve özelliklerin farklı olmasına neden olan farklı yaygınlık değil, farklı dağılımdır, çünkü eşiğin tanımlandığı model ayaktan veya yatan hasta olarak görünen popülasyon için geçerli değildi . Birden fazla alt popülasyonda devam edebilir ve parçalayabilirsiniz , çünkü yatan alt bölümünün de diğer nedenlerden dolayı yükselmiş bir olması gerekir (çünkü çoğu proxy de diğer ciddi koşullarda 'yükseltilir'). Ve kırılma bu ise alt popülasyonunun içine nüfus, sensitivite değişikliği açıklayan popülasyonunda değişiklikler karşılık gelen (spesifiklik değişikliği açıklayan veDcDcxDDcFDFDc ) .Bu bileşik grafiğinin gerçekte içerdiği şeydir . Renklerin Her aslında kendi olacaktır ve dolayısıyla sürece bu differes olarak hangi orijinal duyarlılık ve özgüllük hesaplandı bu ölçümler değişecektir.DFF
Misal
Sırasıyla 10000 Dc, 500.750.300 D1, D2, D3 ile 11550 kişilik bir nüfusu varsayalım. Yorumlanan kısım, yukarıdaki grafikler için kullanılan koddur.
set.seed(12345)
dc<-rnorm(10000,mean = 9, sd = 3)
d1<-rnorm(500,mean = 15,sd=2)
d2<-rnorm(750,mean=17,sd=2)
d3<-rnorm(300,mean=20,sd=2)
d<-cbind(c(d1,d2,d3),c(rep('1',500),rep('2',750),rep('3',300)))
library(ggplot2)
#ggplot(data.frame(dc))+geom_density(aes(x=dc),alpha=0.5,fill='green')+geom_density(data=data.frame(c(d1,d2,d3)),aes(x=c(d1,d2,d3)),alpha=0.5, fill='red')+geom_vline(xintercept = 13.5,color='black',size=2)+scale_x_continuous(name='Values for x',breaks=c(mean(dc),mean(as.numeric(d[,1])),13.5),labels=c('x_dc','x_d','x_T'))
#ggplot(data.frame(d))+geom_density(aes(x=as.numeric(d[,1]),..count..,fill=d[,2]),position='stack',alpha=0.5)+xlab('x-values')
Dc, D1, D2, D3 ve D bileşiği dahil olmak üzere çeşitli popülasyonlar için x-araçlarını kolayca hesaplayabiliriz.
mean(dc)
mean(d1)
mean(d2)
mean(d3)
mean(as.numeric(d[,1]))
> mean(dc) [1] 8.997931
> mean(d1) [1] 14.95559
> mean(d2) [1] 17.01523
> mean(d3) [1] 19.76903
> mean(as.numeric(d[,1])) [1] 16.88382
Orijinal Test durumumuz için 2x2'lik bir tablo elde etmek için, ilk önce verilere göre bir eşik belirleriz (gerçek durumda test @ gung gösterdiği gibi çalıştırıldıktan sonra ayarlanır). Her neyse, 13.5 eşiği varsayarak, tüm popülasyonda hesaplandığında aşağıdaki hassasiyet ve özgüllüğü elde ederiz.
sdc<-sample(dc,0.1*length(dc))
sdcomposite<-sample(c(d1,d2,d3),0.1*length(c(d1,d2,d3)))
threshold<-13.5
truepositive<-sum(sdcomposite>13.5)
truenegative<-sum(sdc<=13.5)
falsepositive<-sum(sdc>13.5)
falsenegative<-sum(sdcomposite<=13.5)
print(c(truepositive,truenegative,falsepositive,falsenegative))
sensitivity<-truepositive/length(sdcomposite)
specificity<-truenegative/length(sdc)
print(c(sensitivity,specificity))
> print(c(truepositive,truenegative,falsepositive,falsenegative)) [1]139 928 72 16
> print(c(sensitivity,specificity)) [1] 0.8967742 0.9280000
Ayaktan hastalarla çalıştığımızı ve hastalıklı hastaları sadece D1 oranından aldığımızı varsayalım ya da sadece D3 aldığımız YBÜ'de çalışıyoruz. (daha genel bir durum için, Dc bileşenini de ayırmamız gerekir) Hassasiyetimiz ve özgüllüğümüz nasıl değişir? Prevalansı değiştirerek (yani, her iki duruma ait hastaların nispi oranını değiştirerek, özgüllüğü ve duyarlılığı hiç değiştirmiyoruz.
sdc<-sample(dc,0.1*length(dc))
sd1<-sample(d1,0.1*length(d1))
truepositive<-sum(sd1>13.5)
truenegative<-sum(sdc<=13.5)
falsepositive<-sum(sdc>13.5)
falsenegative<-sum(sd1<=13.5)
print(c(truepositive,truenegative,falsepositive,falsenegative))
sensitivity1<-truepositive/length(sd1)
specificity1<-truenegative/length(sdc)
print(c(sensitivity1,specificity1))
sdc<-sample(dc,0.1*length(dc))
sd3<-sample(d3,0.1*length(d3))
truepositive<-sum(sd3>13.5)
truenegative<-sum(sdc<=13.5)
falsepositive<-sum(sdc>13.5)
falsenegative<-sum(sd3<=13.5)
print(c(truepositive,truenegative,falsepositive,falsenegative))
sensitivity3<-truepositive/length(sd3)
specificity3<-truenegative/length(sdc)
print(c(sensitivity3,specificity3))
> print(c(truepositive,truenegative,falsepositive,falsenegative)) [1] 38 931 69 12
> print(c(sensitivity1,specificity1)) [1] 0.760 0.931
> print(c(truepositive,truenegative,falsepositive,falsenegative)) [1] 30 944 56 0
> print(c(sensitivity3,specificity3)) [1] 1.000 0.944
Özetlemek gerekirse, duyarlılık değişimini gösteren bir grafik (özgüllük benzer bir eğilimi izleyecekti, alt popülasyonlardan Dc popülasyonunu da bestelemiş olsaydık) popülasyon için değişen ortalama x ile, işte bir grafik
df<-data.frame(V1=c(sensitivity,sensitivity1,sensitivity3),V2=c(mean(c(d1,d2,d3)),mean(d1),mean(d3)))
ggplot(df)+geom_point(aes(x=V2,y=V1),size=2)+geom_line(aes(x=V2,y=V1))
- Proxy değilse, teknik olarak% 100 özgüllük ve duyarlılığa sahip oluruz. Diyelim ki, Karaciğer Biyopsisi üzerinde objektif olarak tanımlanmış belirli bir patolojik tabloya sahip olarak tanımlıyoruz , o zaman Karaciğer Biyopsi testi altın standart olacak ve duyarlılığımız kendisine karşı ölçülecek ve böylece% 100 verim elde edilecektir.D