2015-04-30 3 views
8

Я пытаюсь подобрать модель логистической регрессии в JAGS, но у меня есть данные в виде (# success y, # попытки n), а не двоичная переменная. В R можно сопоставить модель с такими данными, используя glm (y/n ~) с аргументом «веса», но я не знаю, как это сделать в JAGS.Логистическая регрессия, когда ответ пропорционален (с использованием JAGS)

Вот простой пример, на который я надеюсь обратиться к тем, что я пытаюсь задать. Обратите внимание, что я использую пакет rjags. Спасибо за любую помощь!

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

Ваша модель завернутый в кавычках. Я не знаком с RJags, но это выглядит некорректно для меня. – Phil

+0

Модели @Phil, BUGS/JAGS иногда указываются таким образом (их тогда нужно было бы записать во временный файл) –

+0

Именно поэтому я думал, что буду отмечать это, а не погружаться в глубокий конец и редактировать его! Рад, что у вас есть решение. – Phil

ответ

8

Вам не нужно вычислить p в ваших данных. Просто пусть это будет логический узел в вашей модели. Я предпочитаю интерфейс R2jags, который позволяет определить модель ОШИБКИ в виде функции 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) 
} 

Теперь запустите его:

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