Web Analytics Made Easy - StatCounter
Metodología bayesiana con modelos latentes | Blog
Safe Creative #1912290338994

Metodología bayesiana con modelos latentes

En nuestro laboratorio hemos desarrollado una metodología bayesiana con empleo de modelos latentes para la estima de parámetros de diagnóstico de técnicas que facilite la toma de decisiones y método apropiado de detección, cuando no se dispone de técnica de referencia o gold-standard. El modelo se ha desarrollado empleando un virus de vid presente en España para poder evaluarlo con vistas a aplicarlo a virus emergentes.

A continuación se detalla la programación del modelo:

Código de OpenBUGS, que asume dos técnicas condicionalmente dependientes DAS-ELISA (ELISA) y spot real-time RT-PCR (spot), y una tercera independiente, real-time RT-PCR convencional (qPCR), y tres poblaciones. Priors informativos para sensibilidad (Se) y especificidad (Sp) de DAS-ELISA y real-time RT-PCR convencional. Priors no informativos, β (1,1), para sensibilidad y especificidad de spot real-time RT-PCR y prevalencias de tres poblaciones (Prev1, Prev2, Prev3). Likelihood ratios (LR) se calculan en cada iteración.

model;
{
y1[1:Q, 1:Q, 1:Q] ~ dmulti(p1[1:Q, 1:Q, 1:Q], n1)
y2[1:Q, 1:Q, 1:Q] ~ dmulti(p2[1:Q, 1:Q, 1:Q], n2)
y3[1:Q, 1:Q, 1:Q] ~ dmulti(p3[1:Q, 1:Q, 1:Q], n3)
p1[1,1,1] <- Prev1*SeqPCR*(Sespot*SeELISA+covDp) + (1-Prev1)*(1-SpqPCR)*((1-Spspot)*(1-SpELISA)+covDn)
p1[1,2,1] <- Prev1*SeqPCR*(Sespot*(1-SeELISA)-covDp) + (1-Prev1)*(1-SpqPCR)*((1-Spspot)*SpELISA-covDn)
p1[1,1,2] <- Prev1*(1-SeqPCR)*(Sespot*SeELISA+covDp) + (1-Prev1)*SpqPCR*((1-Spspot)*(1-SpELISA)+covDn)
p1[1,2,2] <- Prev1*(1-SeqPCR)*(Sespot*(1-SeELISA)-covDp) + (1-Prev1)*SpqPCR*((1-Spspot)*SpELISA-covDn)
p1[2,1,1] <- Prev1*SeqPCR*((1-Sespot)*SeELISA-covDp) + (1-Prev1)*(1-SpqPCR)*(Spspot*(1-SpELISA)-covDn)
p1[2,2,1] <- Prev1*SeqPCR*((1-Sespot)*(1-SeELISA)+covDp) + (1-Prev1)*(1-SpqPCR)*(Spspot*SpELISA+covDn)
p1[2,1,2] <- Prev1*(1-SeqPCR)*((1-Sespot)*SeELISA-covDp) + (1-Prev1)*SpqPCR*(Spspot*(1-SpELISA)-covDn)
p1[2,2,2] <- Prev1*(1-SeqPCR)*((1-Sespot)*(1-SeELISA)+covDp) + (1-Prev1)*SpqPCR*(Spspot*SpELISA+covDn)
p2[1,1,1] <- Prev2*SeqPCR*(Sespot*SeELISA+covDp) + (1-Prev2)*(1-SpqPCR)*((1-Spspot)*(1-SpELISA)+covDn)
p2[1,2,1] <- Prev2*SeqPCR*(Sespot*(1-SeELISA)-covDp) + (1-Prev2)*(1-SpqPCR)*((1-Spspot)*SpELISA-covDn)
p2[1,1,2] <- Prev2*(1-SeqPCR)*(Sespot*SeELISA+covDp) + (1-Prev2)*SpqPCR*((1-Spspot)*(1-SpELISA)+covDn)
p2[1,2,2] <- Prev2*(1-SeqPCR)*(Sespot*(1-SeELISA)-covDp) + (1-Prev2)*SpqPCR*((1-Spspot)*SpELISA-covDn)
p2[2,1,1] <- Prev2*SeqPCR*((1-Sespot)*SeELISA-covDp) + (1-Prev2)*(1-SpqPCR)*(Spspot*(1-SpELISA)-covDn)
p2[2,2,1] <- Prev2*SeqPCR*((1-Sespot)*(1-SeELISA)+covDp) + (1-Prev2)*(1-SpqPCR)*(Spspot*SpELISA+covDn)
p2[2,1,2] <- Prev2*(1-SeqPCR)*((1-Sespot)*SeELISA-covDp) + (1-Prev2)*SpqPCR*(Spspot*(1-SpELISA)-covDn)
p2[2,2,2] <- Prev2*(1-SeqPCR)*((1-Sespot)*(1-SeELISA)+covDp) + (1-Prev2)*SpqPCR*(Spspot*SpELISA+covDn)
p3[1,1,1] <- Prev3*SeqPCR*(Sespot*SeELISA+covDp) + (1-Prev3)*(1-SpqPCR)*((1-Spspot)*(1-SpELISA)+covDn)
p3[1,2,1] <- Prev3*SeqPCR*(Sespot*(1-SeELISA)-covDp) + (1-Prev3)*(1-SpqPCR)*((1-Spspot)*SpELISA-covDn)
p3[1,1,2] <- Prev3*(1-SeqPCR)*(Sespot*SeELISA+covDp) + (1-Prev3)*SpqPCR*((1-Spspot)*(1-SpELISA)+covDn)
p3[1,2,2] <- Prev3*(1-SeqPCR)*(Sespot*(1-SeELISA)-covDp) + (1-Prev3)*SpqPCR*((1-Spspot)*SpELISA-covDn)
p3[2,1,1] <- Prev3*SeqPCR*((1-Sespot)*SeELISA-covDp) + (1-Prev3)*(1-SpqPCR)*(Spspot*(1-SpELISA)-covDn)
p3[2,2,1] <- Prev3*SeqPCR*((1-Sespot)*(1-SeELISA)+covDp) + (1-Prev3)*(1-SpqPCR)*(Spspot*SpELISA+covDn)
p3[2,1,2] <- Prev3*(1-SeqPCR)*((1-Sespot)*SeELISA-covDp) + (1-Prev3)*SpqPCR*(Spspot*(1-SpELISA)-covDn)
p3[2,2,2] <- Prev3*(1-SeqPCR)*((1-Sespot)*(1-SeELISA)+covDp) + (1-Prev3)*SpqPCR*(Spspot*SpELISA+covDn)
ls <- (Sespot-1)*(1-SeELISA)
us <- min(Sespot,SeELISA) - Sespot*SeELISA
lc <- (Spspot-1)*(1-SpELISA)
uc <- min(Spspot,SpELISA) - Spspot*SpELISA
rhoD <- covDp / sqrt(Sespot*(1-Sespot)*SeELISA*(1-SeELISA))
rhoDc <- covDn / sqrt(Spspot*(1-Spspot)*SpELISA*(1-SpELISA))
covDn ~ dunif(lc, uc)
covDp ~ dunif(ls, us)
SeELISA~dbeta(108.41,18.49)
SpELISA~dbeta(34.17,1.34)
Sespot~dbeta(1,1)
Spspot~dbeta(1,1)
SeqPCR~dbeta(53.58,2.63)
SpqPCR~dbeta(51.41,7.23)
Prev1~dbeta(1,1)
Prev2~dbeta(1,1)
Prev3~dbeta(1,1)
LRELISApos<-SeELISA/(1-SpELISA)
LRELISAneg<-(1-SeELISA)/SpELISA
LRspotpos<-Sespot/(1-Spspot)
LRspotneg<-(1-Sespot)/Spspot
LRqPCRpos<-SeqPCR/(1-SpqPCR)
LRqPCRneg<-(1-SeqPCR)/SpqPCR
LRELISAposspotpos<-LRELISApos*LRspotpos
LRELISAposspotneg<-LRELISApos*LRspotneg
LRELISAnegspotpos<-LRELISAneg*LRspotpos
LRELISAnegspotneg<-LRELISAneg*LRspotneg
LRELISAposqPCRpos<-LRELISApos*LRqPCRpos
LRELISAposqPCRneg<-LRELISApos*LRqPCRneg
LRELISAnegqPCRpos<-LRELISAneg*LRqPCRpos
LRELISAnegqPCRneg<-LRELISAneg*LRqPCRneg
LRspotposqPCRpos<-LRspotpos*LRqPCRpos
LRspotposqPCRneg<-LRspotpos*LRqPCRneg
LRspotnegqPCRpos<-LRspotneg*LRqPCRpos
LRspotnegqPCRneg<-LRspotneg*LRqPCRneg
LRELISAposspotposqPCRpos<-LRELISApos*LRspotpos*LRqPCRpos
LRELISAposspotposqPCRneg<-LRELISApos*LRspotpos*LRqPCRneg
LRELISAposspotnegqPCRpos<-LRELISApos*LRspotneg*LRqPCRpos
LRELISAposspotnegqPCRneg<-LRELISApos*LRspotneg*LRqPCRneg
LRELISAnegspotposqPCRpos<-LRELISAneg*LRspotpos*LRqPCRpos
LRELISAnegspotposqPCRneg<-LRELISAneg*LRspotpos*LRqPCRneg
LRELISAnegspotnegqPCRpos<-LRELISAneg*LRspotneg*LRqPCRpos
LRELISAnegspotnegqPCRneg<-LRELISAneg*LRspotneg*LRqPCRneg
}

#Note: for this model initial values were:
#SeELISA=0.86,SpELISA=0.99,SeqPCR=0.97,SpqPCR=0.89

Con estos parámetros se puede establecer la probabilidad post-test de que una cepa esté infectada según los resultados del diagnóstico de una, dos o tres técnicas. De esta forma dependiendo de la prevalencia de la infección se puede seleccionar el método más apropiado para realizar el análisis.

blog comments powered by Disqus