8 votos

Cómo especificar Bayesiano de efectos mixtos en el modelo de BUGS

He publicado esto a principios de la semana, a continuación, se retractó de la pregunta, cuando he encontrado una buena fuente, no queriendo perder el tiempo de la gente. No he avanzado mucho me temo. En el intento de ser un buen ciudadano aquí voy a hacer que el problema de la forma más clara posible. Sospecho que habrá pocos interesados.

Tengo un dataframe en R I desea analizar en ERRORES o R. está en el formato largo. Se compone de múltiples observaciones de 120 personas, con un total de 885 filas. Yo soy el examen de la ocurrencia de un categórico resultado -, pero que en realidad no es relevante aquí. La pregunta es acerca de algo más profundo.

El modelo que he estado usando hasta aquí es

  mymodel<-gee(Category ~ Predictor 1 + Predictor 2..family=binomial(link="logit"),
  data=mydata, 
   id=Person)

con un marginal modelo esencialmente de contabilidad para la agrupación de los pacientes. He examinado

 mymodel<-gee(Category ~ Predictor 1 + Predictor 2.. , family=binomial(link="logit"), 
  corstr = "AR-M", 
  data=mydata, id=Person)

para tener en cuenta a la hora de ordenar las observaciones en las personas individuales.

Esto no cambia mucho.

Entonces traté de modelo a ellos mediante el siguiente conjunto de MCMCPack comandos:

 mymodel<-MCMCglmm(category~  Predictor1 + Predictor2..,  
 data=mydata, family=binomial(link="logit"))

Un examen de la salida fue emocionante, mostrando significación estadística para muchos de los predictores. Aplaudí a mí mismo como un recién convertido bayesiano, hasta que me di cuenta de que no había representó para medidas repetidas dentro de los pacientes.

Yo entiendo que se tiene en cuenta que. Entiendo que esto puede significar que el ajuste de una hyperprior para cada individuo - ¿es eso cierto? Qué forma va a tomar en los ERRORES?

Aquí tenemos un registro reg modelo: (felicitaciones a Kruschke, J., Indiana)

    model {
  for( i in 1 : nData ) {
    y[i] ~ dbern( mu[i] )
    mu[i] <- 1/(1+exp(-( b0 + inprod( b[] , x[i,] ))))
  }
  b0 ~ dnorm( 0 , 1.0E-12 )
   for ( j in 1 : nPredictors ) {
    b[j] ~ dnorm( 0 , 1.0E-12 )
  }
}

Sin embargo, no hyperprior aquí para el individuo. Aquí está mi mejor intento hasta la fecha en un dentro-diseño individual de contabilidad para medidas repetidas dentro de las personas:

Aquí Jackman modelo para ENTRECORTADO

1 model{
2 ## loop over data for likelihood
3 for(i in 1:n){
4  y[i] ~ dbern( mu[i] )
    mu[i] <- 1/(1+exp(-( b0 + inprod( b[] , x[i,] ))))
6 }
7 sigma ˜ dunif(0,20) ## prior on standard deviation
8 tau <- pow(sigma,-2) ## convert to precision
9
10 ## hierarchical model for each state's intercept & slope
11 for(p in 1:50){
12 beta[p,1:2] ˜ dmnorm(mu[1:2],Tau[,]) ## bivariate normal
13 }
14
15 ## means, hyper-parameters
16 for(q in 1:2){
17 mu[q] ˜ dnorm(0,.0016)

}

Aquí está mi hijo de puta hijo de modelo para los ERRORES

1 model{
2 ## loop over data for likelihood
3 for(i in 1:n){
4 mu.y[i] <- alpha + beta[s[i],1] + beta[s[i],2]*(j[i]-jbar)
5 demVote[i] ˜ dnorm(mu.y[i],tau)
6 }
7 sigma ˜ dunif(0,20) ## prior on standard deviation
8 tau <- pow(sigma,-2) ## convert to precision
9
10 ## hierarchical model for each state's intercept & slope
11 for(p in 1:120){
12 beta[p,1:2] ˜ dmnorm(mu[1:2],Tau[,]) ## bivariate normal
13 }
14
15 ## means, hyper-parameters
16 for(q in 1:2){
17 mu[q] ˜ dnorm(0,.0016)
  }

Puede alguien quisiera saber si me estoy dirigiendo en la dirección correcta. Mi comprensión de esto está creciendo, pero lentamente. Por favor, sea amable. Soy un médico, no una estadística! He usado R un poco, pero soy nuevo en ERRORES, y de nuevo a Bayes.

Gracias,

R

8voto

bheklilr Puntos 113

Que son (eran) casi allí. Un par de comentarios - usted no tiene que hacer la previa para el beta[,1:2] parámetros de un conjunto MV normal; usted puede hacer la previa tal que beta[i,1] y beta[i,2] son independientes, lo que simplifica las cosas (por ejemplo, no antes de covarianza necesita ser especificado.) Ten en cuenta que esto no significa que vayan a ser independiente en la parte posterior.

Otros comentarios: Ya que usted tiene un término constante - alpha - en la regresión, los componentes beta[,1] debe tener cero significa que en la anterior. También, usted no tiene un previo para alpha en el código.

He aquí un modelo jerárquico de origen y la pendiente de los términos; he intentado mantener a sus priores y la notación donde sea posible, teniendo en cuenta los cambios:

model {
  for(i in 1:n){
    mu.y[i] <- alpha + beta0[s[i]] + beta1[s[i]]*(j[i]-jbar)
    demVote[i] ~ dnorm(mu.y[i],tau)
  }

  alpha ~ dnorm(0, 0.001) ## prior on alpha; parameters just made up for illustration
  sigma ~ dunif(0,20) ## prior on standard deviation
  tau <- pow(sigma,-2) ## convert to precision

  ## hierarchical model for each state's intercept & slope
  for (p in 1:120) {
     beta0[p] ~ dnorm(0, tau0)
     beta1[p] ~ dnorm(mu1, tau1)
  }

  ## Priors on hierarchical components; parameters just made up for illustration
  mu1 ~ dnorm(0, 0.001) 
  sigma0 ~ dunif(0,20)
  sigma1 ~ dunif(0,20)
  tau0 <- pow(sigma0,-2)
  tau1 <- pow(sigma1,-2)
}

Un recurso muy útil para los modelos jerárquicos, incluyendo algunos "trucos" para acelerar la convergencia, es Gelman y de la Colina.

(Un poco tarde con la respuesta, pero puede ser útil para algunas futuro interrogador.)

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