bayesian - rjags error Invalid vector argument to ilogit -
i'd compare betareg regression vs. same regression using rjags
library(betareg) d = data.frame(p= sample(c(.1,.2,.3,.4),100, replace= true), id = seq(1,100,1)) # looking reproduce regression jags b=betareg(p ~ id, data= d, link = c("logit"), link.phi = null, type = c("ml")) summary(b)
below trying same regression rjags
#install.packages("rjags") library(rjags) jags_str = " model { #model y ~ dbeta(alpha, beta) alpha <- mu * phi beta <- (1-mu) * phi logit(mu) <- + b*id #priors ~ dnorm(0, .5) b ~ dnorm(0, .5) t0 ~ dnorm(0, .5) phi <- exp(t0) }" id = d$id y = d$p model <- jags.model(textconnection(jags_str), data = list(y=y,id=id) ) update(model, 10000, progress.bar="none"); # burnin 10000 samples samp <- coda.samples(model, variable.names=c("mu"), n.iter=20000, progress.bar="none") summary(samp) plot(samp)
i error on line
model <- jags.model(textconnection(jags_str), data = list(y=y,id=id) ) error in jags.model(textconnection(jags_str), data = list(y = y, id = id)) : runtime error: invalid vector argument ilogit
can advise
(1) how fix error
(2) how set priors beta regression
thank you.
this error occurs because have supplied id
vector scalar function logit
. in jags inverse link functions cannot vectorized. address this, need use for
loop go through each element of id
. add additional element data list denotes how long id
is.
d = data.frame(p= sample(c(.1,.2,.3,.4),100, replace= true), id = seq(1,100,1), len_id = length(seq(1,100,1)))
from there need make small edit jags code.
for(i in 1:(len_id)){ y[i] ~ dbeta(alpha[i], beta[i]) alpha[i] <- mu[i] * phi beta[i] <- (1-mu[i]) * phi logit(mu[i]) <- + b*id[i] }
however, if track mu
going matrix 20000 (# of iterations) 100 (length of id
). more interested in actual parameters (a
, b
, , phi
).
Comments
Post a Comment