7 votos

Regresión de cuantiles en JAGS

Estoy tratando de implementar una regresión del quantile simple en R con JAGS :

n <- 200
x <- runif(n=n,min=0,max=10)
y <- 1 + 2*x + rnorm(n,sd=.6*x)
p <- 0.95
jdf <- list(y=y,x=x,p=p)
params <- c("alpha","beta","tau")
mcmcmodel <- jags.model(file="qreg.jag",data=jdf,n.chains=3)
update(mcmcmodel,2000)
mcsamples <- coda.samples(mcmcmodel,params,n.iter=10000,thin=10)

con qreg.jag como sigue:

model{
 for(i in 1:length(y)){
   mu[i] <- alpha + beta*x[i]
   cmu[i] <- (step(mu[i])/(1-p) + step(-mu[i])/p)*mu[i]/2
   y[i] ~ ddexp(cmu[i],2*tau*p*(1-p))
 }

 #priors for regression
 alpha ~ dnorm(0,1E-6)
 beta ~ dnorm(0,1E-6)#dunif(0,100)

 lsigma ~ dunif(-5,15)
 sigma <- exp(lsigma)
 tau <- pow(sigma,-2)
}

He comparado mis resultados con bayesQR paquete: no coinciden los resultados y lo he implementado da estimaciones razonables.

¿Puede alguien ayudar?

6voto

Abhi Puntos 111

He utilizado un procedimiento de aumento de datos propuesto aquí con el siguiente modelo:

model{
 for(i in 1:length(y)){
   mu[i] <- alpha + beta*x[i]
   w[i] ~ dexp(tau)
   me[i] <- (1-2*p)/(p*(1-p))*w[i] + mu[i]
   pe[i] <- (p*(1-p)*tau)/(2*w[i])
   y[i] ~ dnorm(me[i],pe[i])
 }

 #priors for regression
 alpha ~ dnorm(0,1E-6)
 beta ~ dnorm(0,1E-6)

 lsigma ~ dunif(-5,15)
 sigma <- exp(lsigma/2)
 tau <- pow(sigma,-2)
}

Esto funciona razonablemente bien.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X