Регрессия Пуассона с несколькими ковариатами с использованием JAGS: как упростить модель

У меня есть набор данных количества заявок с y в качестве количества требований, 16 ковариат, а именно от x1 до x16 (состоит из 0 и 1), которые я расположил в матрице дизайна под названием X и E в качестве воздействия (также называемого смещением). Я пытаюсь подогнать регрессию Пуассона к этому набору данных с помощью JAGS. Коды, которые я написал для модели, приведены ниже:

Poisson.model <- function(){
    for(i in 1:N){
        y[i] ~ dpois(lambda[i])
        log(lambda[i]) <- log(E[i]) + beta1+ beta2*x1[i] + beta3*x2[i] +  beta4*x3[i] + beta5*x4[i] + beta6*x5[i] + beta7*x6[i] + beta8*x7[i] + beta9*x8[i] + beta10*x9[i] + beta11*x10[i] + beta12*x11[i] + beta13*x12[i] + beta14*x13[i] + beta15*x14[i] + beta16*x15[i] + beta17*x16[i]
}
###declare priors 
beta1 ~ dnorm(0,0.0001)
beta2 ~ dnorm(0,0.0001)
beta3 ~ dnorm(0,0.0001)
beta4 ~ dnorm(0,0.0001)
beta5 ~ dnorm(0,0.0001)
beta6 ~ dnorm(0,0.0001)
beta7 ~ dnorm(0,0.0001)
beta8 ~ dnorm(0,0.0001)
beta9 ~ dnorm(0,0.0001)
beta10 ~ dnorm(0,0.0001)
beta11 ~ dnorm(0,0.0001)
beta12 ~ dnorm(0,0.0001)
beta13 ~ dnorm(0,0.0001)
beta14 ~ dnorm(0,0.0001)
beta15 ~ dnorm(0,0.0001)
beta16 ~ dnorm(0,0.0001)
beta17 ~ dnorm(0,0.0001)

}

Мой вопрос: 1) Как мне сделать X и beta как матричное умножение, чтобы заменить длинное уравнение в правой части log (lambda [i]) 2) Как мне упростить априорные значения до одной единственной строки?


person FadzliFuzi    schedule 25.03.2014    source источник


Ответы (1)


с функцией inprod и функцией model.matrix вы передаете матрицу следующим образом

X<-model.matrix(~covariate1+covariate2,data=data)

for(i in 1:17){ beta[i] ~ dnorm(0, 0.0001)}

inprod(beta[], X[i,])+log(E[i])
person antonio    schedule 13.04.2014