weakly_informative {baldur} | R Documentation |
Here we will model the mean of the prior with a weakly
informative (WI) prior. We will assume that, in essence, nothing is know
about the mean. As such, for the WI prior, we use a normal prior on
\boldsymbol{\mu}_0
centered at zero and with a very large variance.
\boldsymbol{\mu}_0\sim\mathcal{N}(0,100)
A stanmodel
that can be used in infer_data_and_decision_model.
The Stan
code for this model is given by:
weakly_informative S4 class stanmodel 'weakly_informative' coded as follows: data { int<lower=0> N; // number of data items int<lower=0> K; // number of conditions int C; // number of comparisons to perform matrix[N, K] x; // design matrix vector[N] y; // data matrix[K, C] c; // contrast matrix real alpha; // alpha prior for gamma real beta; // beta prior for gamma vector[N] u; // uncertainty } transformed data{ vector[K] n_k; // per condition measurements row_vector[C] n_c; // per comparison measurements matrix[K, C] abs_c; // abs of C for n_c calculation for (i in 1:K) { for (j in 1:C) { abs_c[i, j] = abs(c[i, j]); } } for (i in 1:K) { n_k[i] = 1/sum(x[,i]); } n_c = n_k' * abs_c; n_c = sqrt(n_c); } parameters { vector[K] mu; // coefficients for predictors real<lower=0> sigma; // error scale array[C] real y_diff; // difference in coefficients vector[K] eta; // Error in mean vector[K] prior_mu_not; // Estimation error } transformed parameters{ row_vector[C] mu_diff = mu' * c; // differences in means vector[C] sigma_lfc = sigma * n_c'; // variance of y_diff } model { sigma ~ gamma(alpha, beta); // variance eta ~ normal(0, 1); // NCP auxilary variable prior_mu_not ~ normal(0, 10); // prior mean mu ~ normal(prior_mu_not + sigma*eta, sigma); // mean y ~ normal(x * mu, sigma*u); // data model y_diff ~ normal(mu_diff, sigma_lfc); // difference statistic }