2015-04-30 15 views
8

Sto cercando di adattare un modello di regressione logistica in JAGS, ma ho dati in forma di (# successo y, # tentativi n), piuttosto che una variabile binaria. In R, si può adattare un modello a dati come questi usando glm (y/n ~) con l'argomento "pesi", ma non sono sicuro di come inserirlo in JAGS.Regressione logistica quando la risposta è una proporzione (utilizzando JAGS)

Ecco un semplice esempio che spero si rivolge a ciò che sto cercando di chiedere. Si noti che sto usando il pacchetto rjags. Grazie per qualsiasi aiuto!

y <- rbinom(10, 500, 0.2) 
n <- sample(500:600, 10) 
p <- y/n 
x <- sample(0:100, 10) # some covariate 

data <- data.frame(y, n, p, x) 

model <- "model{ 
# Specify likelihood 
for(i in 1:10){ 
    y[i] ~ dbin(p[i], n[i]) 
    logit(p[i]) <- b0 + b1*x 
} 

# Specify priors 
b0 ~ dnorm(0, 0.0001) 
b1 ~ dnorm(0, 0.0001) 
}" 
+0

Il modello è avvolto tra virgolette. Non ho familiarità con RJags, ma non mi sembra corretto. – Phil

+0

I modelli @Phil, BUGS/JAGS a volte vengono specificati in questo modo (dovrebbero quindi essere scritti in un file temporaneo) –

+0

Proprio per questo ho pensato di contrassegnarlo anziché immergerlo nel deep end e modificarlo! Sono contento che tu abbia trovato una soluzione. – Phil

risposta

8

Non è necessario calcolare p nel set di dati. Lascia che sia un nodo logico nel tuo modello. Io preferisco l'interfaccia R2jags, che consente di specificare un modello BACHI sotto forma di una funzione di R ...

jagsdata <- data.frame(y=rbinom(10, 500, 0.2), 
        n=sample(500:600, 10), 
        x=sample(0:100, 10)) 
model <- function() { 
    ## Specify likelihood 
    for(i in 1:10){ 
     y[i] ~ dbin(p[i], n[i]) 
     logit(p[i]) <- b0 + b1*x[i] 
    } 
    ## Specify priors 
    b0 ~ dnorm(0, 0.0001) 
    b1 ~ dnorm(0, 0.0001) 
} 

Ora eseguirlo:

library("R2jags") 
jags(model.file=model,data=jagsdata, 
    parameters.to.save=c("b0","b1"))