Sebbene le risposte di @ Tim ♦ e @ gung ♦ coprano praticamente tutto, cercherò di sintetizzarle entrambe in una singola e fornire ulteriori chiarimenti.
Il contesto delle righe citate potrebbe riferirsi principalmente a test clinici sotto forma di una certa soglia, come è più comune. Immagina una malattia , e tutto tranne incluso lo stato di salute indicato come . Per il nostro test, vorremmo trovare alcune misure proxy che ci consentano di ottenere una buona previsione per (1) Il motivo per cui non otteniamo specificità / sensibilità assoluta è che i valori della nostra quantità proxy non sono perfettamente correlati con lo stato della malattia, ma solo generalmente associato ad esso, e quindi, nelle singole misurazioni, potremmo avere la possibilità che quella quantità superi la nostra soglia perD D c D D cDDDcDDcindividui e viceversa. Per motivi di chiarezza, assumiamo un modello gaussiano per la variabilità.
Diciamo che stiamo usando come quantità proxy. Se è stato scelto , allora deve essere maggiore di ( è l'operatore del valore atteso). Ora il problema sorge quando ci si rende conto che è una situazione composito (così è ), in realtà costituito da 3 gradi di gravità , , , ciascuno con un valore progressivamente crescente atteso per . Per un singolo individuo, selezionato dalla categoria o dallax E [ x D ] E [ x D c ] E D D c D 1 D 2 D 3 x D D c x T D D c x T D x D cXXE[ xD]E[ xD c]EDDcD1D2D3xDDccategoria, le probabilità che il "test" diventi positivo o meno dipenderanno dal valore di soglia che scegliamo. Diciamo che scegliamo sulla base dello studio di un campione veramente casuale con individui e . Il nostro causerà alcuni falsi positivi e negativi. Se selezioniamo una persona modo casuale, la probabilità che governa il suo valore se data dal grafico verde e quella di una persona scelta casualmente dal grafico rosso.xTDDcxTDxDc
I numeri effettivi ottenuti dipenderanno dai numeri effettivi degli individui e ma la specificità e la sensibilità risultanti no. Sia una funzione di probabilità cumulativa. Quindi, per la prevalenza di della malattia , ecco una tabella 2x2 come ci si aspetterebbe dal caso generale, quando proviamo a vedere effettivamente come si comporta il nostro test nella popolazione combinata.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)
I numeri effettivi dipendono da , ma sensibilità e specificità sono indipendenti. Ma entrambi dipendono da e . Quindi, tutti i fattori che influenzano questi, cambieranno sicuramente queste metriche. Se, ad esempio, lavorassimo in terapia intensiva, il nostro verrebbe invece sostituito da e se parliamo di pazienti ambulatoriali, sostituito da . È una questione separata che in ospedale anche la prevalenza sia diversa,p F D F D c F D F D 3 F D 1 D c D c x D D c F D F D c D F FppFDFDcFDFD3FD1ma non è la diversa prevalenza che sta causando differenze di sensibilità e specificità, ma la diversa distribuzione, poiché il modello su cui è stata definita la soglia non era applicabile alla popolazione che appare come ambulatoriale o ricoverato . Puoi andare avanti e scomporre in più sottopopolazioni, poiché la sottoparte ospedaliera di avrà anche un alzato per altri motivi (poiché la maggior parte dei proxy sono anche "elevati" in altre condizioni gravi). La rottura della popolazione nella sottopopolazione spiega il cambiamento di sensibilità, mentre quello della popolazione spiega il cambiamento di specificità (mediante corrispondenti cambiamenti in eDcDcxDDcFDFDc ). Questo è ciò che comprende effettivamente il grafico composito . Ognuno dei colori avrà effettivamente la propria , e quindi, fintanto che differisce dalla su cui sono stati calcolati la sensibilità e la specificità originali, queste metriche cambieranno.DFF
Esempio
Assumi una popolazione di 11550 con 10000 Dc, 500,750,300 D1, D2, D3 rispettivamente. La parte commentata è il codice utilizzato per i grafici sopra.
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')
Possiamo facilmente calcolare i mezzi x per le varie popolazioni, tra cui Dc, D1, D2, D3 e il composito D.
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
Per ottenere una tabella 2x2 per il nostro caso di test originale, abbiamo prima impostato una soglia, in base ai dati (che in un caso reale verrebbero impostati dopo aver eseguito il test come mostra @gung). Ad ogni modo, ipotizzando una soglia di 13,5, otteniamo la seguente sensibilità e specificità quando calcolati sull'intera popolazione.
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
Supponiamo che stiamo lavorando con i pazienti ambulatoriali e riceviamo pazienti malati solo dalla proporzione D1, o stiamo lavorando in terapia intensiva dove riceviamo solo D3. (per un caso più generale, dobbiamo dividere anche il componente Dc) Come cambiano la nostra sensibilità e specificità? Modificando la prevalenza (ovvero cambiando la proporzione relativa dei pazienti appartenenti a entrambi i casi, non cambiamo affatto la specificità e la sensibilità. Accade solo che questa prevalenza cambi anche con il cambiamento della distribuzione)
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
Riassumendo, un diagramma per mostrare il cambiamento di sensibilità (la specificità avrebbe seguito una tendenza simile se avessimo composto anche la popolazione Dc dalle sottopopolazioni) con una x media variabile per la popolazione, ecco un grafico
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))
- Se non è proxy, avremmo tecnicamente una specificità e sensibilità al 100%. Supponiamo, ad esempio, che definisca un particolare quadro patologico oggettivamente definito su Biopsia epatica, quindi il test Biopsia epatica diventerà il gold standard e la nostra sensibilità verrebbe misurata contro se stessa e quindi produrrebbe un 100%D