if (FALSE) {
n <- 4000
m <- 25
dat <- data.frame(
x = rnorm(n),
g = factor(sample(1:m, n, replace=TRUE), levels=1:m)
)
v <- rnorm(m, sd=0.6)
dat$y <- rnorm(n, mean = with(dat, 1 - 0.5*x + v[g]), sd=0.4)
sampler <- create_sampler(
y ~ x + (1|g), data=dat
)
sim <- MCMCsim(sampler, store.all=TRUE)
compute_DIC(sim)
summary(sim)
# more explicit specification, allowing non-default names, priors etc.
sampler <- create_sampler(
y ~ reg(~ x, name="beta") + gen(~1, factor = ~ g, name="v"),
data=dat,
family = f_gaussian(var.prior = pr_fixed(value = 0.4^2))
)
sim <- MCMCsim(sampler, store.all=TRUE)
compute_DIC(sim)
summary(sim)
bayesplot::mcmc_recover_intervals(as.array(sim$beta), c(1, -0.5))
bayesplot::mcmc_recover_hist(as.array(sim$v_sigma), 0.6)
bayesplot::mcmc_recover_scatter(as.array(sim$v), v)
# heteroscedastic data
dat$y <- rnorm(n,
mean = with(dat, 1 - 0.5*x + v[g]),
sd = with(dat, exp(0.5*(0.2 + 0.5*x)))
)
sampler <- create_sampler(
y ~ reg(~ x, name="beta") + gen(~1, factor = ~ g, name="v"),
data=dat,
family = f_gaussian(
var.prior = pr_fixed(value = 1),
var.model = ~ 1 + x
)
)
sim <- MCMCsim(sampler, store.all=TRUE)
compute_DIC(sim)
compute_WAIC(sim)
summary(sim)
bayesplot::mcmc_recover_intervals(as.array(sim$beta), c(1, -0.5))
bayesplot::mcmc_recover_intervals(as.array(sim$vreg1), c(0.2, 0.5))
bayesplot::mcmc_recover_hist(as.array(sim$v_sigma), 0.6)
bayesplot::mcmc_recover_scatter(as.array(sim$v), v)
}
Run the code above in your browser using DataLab