baggr_compare function

(Run and) compare multiple baggr models

(Run and) compare multiple baggr models

Compare multiple baggr models by either providing multiple already existing models as (named) arguments or passing parameters necessary to run a baggr model.

baggr_compare( ..., what = "pooling", compare = c("groups", "hyperpars", "effects"), transform = NULL, prob = 0.95, plot = FALSE )

Arguments

  • ...: 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 baggr prior_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 effects prior_comparison # plot the comparison of the two distributions plot(prior_comparison) # Now compare different types of pooling for the same model pooling_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 prior bg1 <- 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)

See Also

plot.baggr_compare and print.baggr_compare

for working with results of this function

Author(s)

Witold Wiecek, Brice Green

  • Maintainer: Witold Wiecek
  • License: GPL (>= 3)
  • Last published: 2024-02-12