I have a data set with 853 units. Below, a small sample of it:
y
[1] 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 [10] 0.000000 6.751283 0.000000 0.000000 11.927481 0.000000 0.000000 0.000000 0.000000 [19] 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 [28] 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 [37] 0.000000 0.000000 0.000000 0.000000 5.342471 2.286760 0.000000 0.000000 3.464403 [46] 3.952309 16.030779 17.942967 0.000000 0.000000
head(x)
gdp.cap bf.cap 1 8.789771 0.03911118 2 10.204732 0.02341257 3 6.890112 0.04160150 4 9.178957 0.03892352 5 9.384171 0.03880186 6 9.562188 0.04165802
I'm calling JAGS from R to run the following code:
1) In JAGS
model { # Lognormal likelihood for(i in 1:N) { y[i] ~ dlnorm(mu[i], tau) mu[i] <- beta0 + inprod(x[i,], beta[]) } # Prior for betas beta0 ~ dnorm(mbeta0, precbeta0) for (j in 1:K) { # b are the number betas to be estimated beta[j] ~ dnorm(m[j], prec[j]) } # Prior for precision of Y tau ~ dgamma(tau.a, tau.b) sigma <- 1/sqrt(tau) }
2) In R:
dt <- read.csv("data.csv", header=T, sep=',') dt <- na.omit(dt) # Organize Data y <- dt[,30] x <- as.matrix(dt[,c(31,46)]) # Data: data <- list(N=length(y), K=2, y=y, x=x, m=c(-2,2), prec=c(.20, .20), tau.a=1, tau.b=2, mbeta0=0, precbeta0=.01) inits <- rep(list(list(beta0=0, beta=c(1,1), tau=1)),5) param <- c("beta0", "beta", "sigma") # Sample Posterior library(rjags) sim <- jags.model(file="Bayesian/lognormal.bug", data=data, inits=inits, n.chains=5, n.adapt=1000)
I don't know why I get the following error:
Compiling model graph Resolving undeclared variables Allocating nodes Graph Size: 39212 Initializing model Deleting model Error in jags.model(file = "Bayesian/lognormal.bug", data = data, inits = inits, : Error in node y[1] Observed node inconsistent with unobserved parents at initialization
Any help, please?
Contents
hide
Best Answer
You can't have zero values in a lognormal random variable–the support of the lognormal distribution is strictly positive.
If you explain in more detail what you're trying to do we may be able to help you write down a model that makes more sense.