Compare multiple baggr models by either providing multiple already existing models as (named) arguments or passing parameters necessary to run a baggr model.
...: Either some (at least 1) objects of class baggr
(you should name your objects, see the example below) or the same arguments you'd pass to baggr . In the latter case you must specify what to compare.
what: One of "pooling" (comparison between no, partial and full pooling) or "prior" (comparison between prior and posterior predictive). If pre-existing baggr models are passed to ..., this argument is ignored.
compare: When plotting, choose between comparison of "groups"
(default), "hyperpars" (to omit group-specific estimates) or (predicted) "effects". The "groups" option is not available when what = "prior".
transform: a function (e.g. exp(), log()) to apply to the the sample of group (and hyper, if hyper=TRUE) effects before plotting; when working with effects that are on log scale, exponent transform is used automatically, you can plot on log scale by setting transform = identity
prob: Width of uncertainty interval (defaults to 95%)
plot: logical; calls plot.baggr_compare when running baggr_compare
Returns
an object of class baggr_compare
Details
If you pass parameters to the function you must specify what kind of comparison you want, either "pooling", which will run fully/partially/un-pooled models and then compare them, or "prior" which will generate estimates without the data and compare them to the model with the full data. For more details see baggr , specifically the ppd argument.
Examples
# Most basic comparison between no, partial and full pooling# (This will run the models)# run model with just prior and then full data for comparison# with the same arguments that are passed to baggrprior_comparison <- baggr_compare(schools, model ='rubin',#this is just for illustration -- don't set it this low normally! iter =500, prior_hypermean = normal(0,3), prior_hypersd = normal(0,2), prior_hypercor = lkj(2), what ="prior")# print the aggregated treatment effectsprior_comparison
# plot the comparison of the two distributionsplot(prior_comparison)# Now compare different types of pooling for the same modelpooling_comparison <- baggr_compare(schools, model ='rubin',#this is just for illustration -- don't set it this low normally! iter =500, prior_hypermean = normal(0,3), prior_hypersd = normal(0,2), prior_hypercor = lkj(2), what ="pooling",# You can automatically plot: plot =TRUE)# Compare existing models (you don't have to, but best to name them):bg1 <- baggr(schools, pooling ="partial")bg2 <- baggr(schools, pooling ="full")baggr_compare("Partial pooling model"= bg1,"Full pooling"= bg2)#' ...or simply draw from prior predictive dist (note ppd=T)bg1 <- baggr(schools, ppd=TRUE)bg2 <- baggr(schools, prior_hypermean = normal(0,5), ppd=TRUE)baggr_compare("Prior A, p.p.d."=bg1,"Prior B p.p.d."=bg2, compare ="effects")# Compare how posterior predictive effect varies with e.g. choice of priorbg1 <- baggr(schools, prior_hypersd = uniform(0,20))bg2 <- baggr(schools, prior_hypersd = normal(0,5))baggr_compare("Uniform prior on SD"=bg1,"Normal prior on SD"=bg2, compare ="effects", plot =TRUE)# Models don't have to be identical. Compare different subsets of input data:bg1_small <- baggr(schools[1:6,], pooling ="partial")baggr_compare("8 schools model"= bg1,"First 6 schools"= bg1_small, plot =TRUE)