data{ int<lower=0> n_obs; int<lower=0> n_spp; int<lower=1> spp[n_obs]; real cs_TPRE[n_obs]; real cs_LDMC[n_obs]; int TRT[n_obs]; real TYPE[n_obs]; int<lower=0> y[n_obs]; }parameters{ real a0_raw[n_spp]; real a0_mu; real<lower=0> a0_sigma; real a1; real a2; real a3; real a4; real b0_raw[n_spp]; real b0_mu; real<lower=0> b0_sigma; real b1; real b2; real b3; real b4;}transformed parameters { real lambda[n_obs]; real p0[n_obs]; real a0[n_spp]; real b0[n_spp]; for (s in 1:n_spp) { a0[s] <- a0_raw[s] * a0_sigma + a0_mu; b0[s] <- b0_raw[s] * b0_sigma + b0_mu; } for (i in 1:n_obs) { lambda[i] <- exp(b0[spp[i]] + b1 * TRT[i] + b2 * cs_LDMC[i] + b3 * TYPE[i] + b4 * cs_TPRE[i]); p0[i] <- inv_logit(a0[spp[i]] + a1 * TRT[i] + a2 * cs_LDMC[i] + a3 * TYPE[i] + a4 * cs_TPRE[i]); }}model { for (s in 1:n_spp) { a0_raw[s] ~ normal(0,1); b0_raw[s] ~ normal(0,1); } for (i in 1:n_obs){ if (y[i] == 0) { increment_log_prob(log_sum_exp(bernoulli_log(1, p0[i]), bernoulli_log(0, p0[i]) + poisson_log(y[i], lambda[i]))); } else { increment_log_prob(bernoulli_log(0, p0[i]) + poisson_log(y[i], lambda[i])); } }}generated quantities { real pred[n_obs]; real resid[n_obs]; real log_lik[n_obs]; for(i in 1:n_obs) { if (y[i]== 0) { log_lik[i] <- log_sum_exp(bernoulli_log(1, p0[i]), bernoulli_log(0, p0[i]) + poisson_log(y[i], lambda[i]));} else { log_lik[i] <- bernoulli_log(0, p0[i]) + poisson_log(y[i], lambda[i]); } pred[i] <- (1-p0[i]) * lambda[i]; resid[i] <- (y[i] - pred[i])/sqrt(pred[i]); }} data{ int<lower=0> n_obs; int<lower=0> n_spp; int<lower=1> spp[n_obs]; real cs_TPRE[n_obs]; real cs_LDMC[n_obs]; int TRT[n_obs]; real TYPE[n_obs]; int<lower=0> y[n_obs]; }parameters{ real a0_raw[n_spp]; real a0_mu; real<lower=0> a0_sigma; real a1; real a2; real a3; real a4; real b0_raw[n_spp]; real b0_mu; real<lower=0> b0_sigma; real b1; real b2; real b3; real b4; real<lower=0> phi;}transformed parameters { real lambda[n_obs]; real p0[n_obs]; real a0[n_spp]; real b0[n_spp]; for (s in 1:n_spp) { a0[s] <- a0_raw[s] * a0_sigma + a0_mu; b0[s] <- b0_raw[s] * b0_sigma + b0_mu; } for (i in 1:n_obs) { lambda[i] <- exp(b0[spp[i]] + b1 * TRT[i] + b2 * cs_LDMC[i] + b3 * TYPE[i] + b4 * cs_TPRE[i]); p0[i] <- inv_logit(a0[spp[i]] + a1 * TRT[i] + a2 * cs_LDMC[i] + a3 * TYPE[i] + a4 * cs_TPRE[i]); }}model { for (s in 1:n_spp) { a0_raw[s] ~ normal(0,1); b0_raw[s] ~ normal(0,1); } for (i in 1:n_obs){ if (y[i] == 0) { increment_log_prob(log_sum_exp(bernoulli_log(1, p0[i]), bernoulli_log(0, p0[i]) + neg_binomial_2_log(y[i], lambda[i], phi))); } else { increment_log_prob(bernoulli_log(0, p0[i]) + neg_binomial_2_log(y[i], lambda[i], phi)); } }}generated quantities { real pred[n_obs]; real resid[n_obs]; real log_lik[n_obs]; for(i in 1:n_obs) { if (y[i]== 0) { log_lik[i] <- log_sum_exp(bernoulli_log(1, p0[i]), bernoulli_log(0, p0[i]) + neg_binomial_2_log(y[i], lambda[i], phi));} else { log_lik[i] <- bernoulli_log(0, p0[i]) + neg_binomial_2_log(y[i], lambda[i], phi); } pred[i] <- (1-p0[i]) * lambda[i]; resid[i] <- (y[i] - pred[i])/sqrt(pred[i] + phi * pred[i]^2); }} waic lpd p_waic elpd_waic p_loo elpd_loo 8422.1959 -3700.7198 510.3781 -4211.0980 451.4138 -4152.1336 waic lpd p_waic elpd_waic p_loo elpd_loo 4596.69227 -2234.31099 64.03514 -2298.34614 64.81982 -2299.13082 mean se_mean sd 2.5% 25% 50% 75% 97.5% n_eff Rhatphi 4.23 0.01 0.32 3.65 4 4.22 4.43 4.91 622 1.01