Welcome to ClientVPS Mirrors

Priors for compositions

Priors for compositions

2024-01-24

Let’s load the necessary packages:

library(zoid)

This vignette is designed to illustrate how to build priors for the estimated compositions, \(\textbf{p}\). When covariates are included in the design matrix, all elements of \(\textbf{p}\) in the Dirichlet regression (both intercepts and slopes or offsets) are assigned \(\sim N(0,1)\) priors. This approach is similar to the improper priors used in brms::brm(). These priors may be weakly informative, and the user may wish to change the standard deviation – which can be done with the prior_sd argument in fit_zoid().

fit <- fit_zoid(data, prior_sd = 2)

Dirichlet priors

A more familiar approach may be to work with Dirichlet priors. We can adjust the standard deviation in our Normal priors to match the Dirichlet. The helper function for this uses optim to minimize the RMSPE between the observed and target values. For example, if we had 8 bins and wanted to find the Dirichlet prior that would correspond to hyperparamters \((\alpha)=1\), we could call the fit_prior function.

set.seed(123)
sd = fit_prior(n_bins = 8, n_draws = draws, target = 1, iterations=iter)

The sd object is a list that contains (1) the estimated standard deviation, (2) the value of the objective function at convergence, and (3) whether or not convergence occurred (anything other than 0 is problematic). The value of the standard deviation here in sd$sd is 1.200453.

So in this case, a standard deviation of ~ 1.20 yields a prior equivalent to a \(\sim Dirichlet(1)\) prior. This new value can then be entered into our model with the prior_sd argument,

fit <- fit_zoid(data, prior_sd = 1.2)

Need a high-speed mirror for your open-source project?
Contact our mirror admin team at info@clientvps.com.

This archive is provided as a free public service to the community.
Proudly supported by infrastructure from VPSPulse , RxServers , BuyNumber , UnitVPS , OffshoreName and secure payment technology by ArionPay.