View source: R/extract_descriptives_jags.R
| extract_descriptives_jags | R Documentation |
This function takes a JAGS object as input and extracts the descriptive statistics (mean and standard deviation) of all the model parameters.
extract_descriptives_jags(jags.object.base, w, prec.name)
jags.object.base |
character string, the name of the JAGS object fitted in |
w |
numeric, the weighting factor to weight the likelihood. For the base model w=1. |
prec.name |
character string, the name of the precision parameter to be used for logarithmic transformation of posterior samples for the precoision parameter |
numerical matix, the matrix has two columns with names "mean" and "sd" for the mean and standard deviation of the marginal posterior distributions and has as many rows as there are parameters in the model (without random effects)
rjags
data(eight_schools)
#prior settings
mean_mu<-0
prec_mu<-1/(4^2)
prec_tau<-1/(5^2)
##########################################################
library(rjags)
library(coda)
#sessionInfo()
list.modules()
# In order to sample from the likelihood in JAGS one has to load the "dic" module and
#mention "deviance" in variable.names
load.module("dic")
list.modules()
set.seed(44566)
###############
# rjags interface with code in a model string
###############
# In JAGS the normal distribution is parametrized by its mean and precision
jags_data<-list(y=eight_schools$y, sigma_2=eight_schools$prec,
mean_mu=mean_mu, prec_mu=prec_mu,
prec_tau=prec_tau)
# define parameters
schools.params.jags<-c("mu", "tau_2", "deviance")
schools_centered_modelString <- "
# likelihood
model{
for(i in 1:length(y)){
y[i] ~ dnorm(theta[i], sigma_2[i])
theta[i] ~ dnorm(mu, tau_2);
}
# priors
mu ~ dnorm(mean_mu, prec_mu);
tau ~ dnorm(0,prec_tau)T(0,);
tau_2 <- 1/(tau^2);
}
"
writeLines(schools_centered_modelString, con="TempModel.txt") # write to a file
# # model initiation
rjags.8schools <- jags.model(
file = "TempModel.txt",
data = jags_data,
n.chains = 4,
n.adapt = 4000,
inits = list(list(.RNG.name = "base::Wichmann-Hill", .RNG.seed = 44561),
list(.RNG.name = "base::Wichmann-Hill", .RNG.seed = 44562),
list(.RNG.name = "base::Wichmann-Hill", .RNG.seed = 44563),
list(.RNG.name = "base::Wichmann-Hill", .RNG.seed = 44564)))
# burn-in
update(rjags.8schools, n.iter = 20000)
N.iter <- 2*(10^5)
n.thin <- 100
# sampling/monitoring
fit.rjags.8schools <- coda.samples(
model = rjags.8schools ,
variable.names = schools.params.jags,
n.iter = N.iter,
thin = n.thin)
del = 0.01
descriptives_jags_8schools <- extract_descriptives_jags(jags.obj = fit.rjags.8schools,
w = 1+0.01, prec.name = "tau_2")
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.