NEWS.md
rope() (and by extension p_rope()) gain a new complement argument such that rope(x, complement = TRUE) returns the ROPE posterior probability together with the posterior probabilities above/below the ROPE (the complementary probabilities).
Added display() methods for bayestestR objects. The display() methods also get a new format option, format = "tt", to produce tables with the tinytable package.
The long deprecated rnorm_perfect() function has been removed. Use distribution_normal() instead.
Prepare for upcoming changes in marginaleffects (0.29.0).
Improved efficiency for describe_posterior().
Minor improvements for models with multinomial response variables.
Minor improvements for mixture models from package brms.
effects argument have a new behavior. "all" only returns fixed effects and random effects variance components, but no longer the group level estimates. Use effects = "full" to return all parameters. This change is mainly to be more flexible and gain more efficiency for models with many parameters and / or many posterior draws.effective_sample(), and functions that call effective_sample() (like describe_posterior() with the respective test option) now also return the tail ESS.describe_posterior() now returns a columns with response levels for marginaleffects objects applied to categorical or multinomial Stan models.
describe_posterior() now returns a columns with response variables for marginaleffects objects applied to multivariate response Stan models.
Fixed issue in map_estimate() and point_estimate(centrality = "MAP") for vectors with only one unique value.
describe_posterior() no longer re-samples a model when computing indices.
describe_posterior() calls tests only when needed. Before, there was a minimal overhead by calling tests that were not requested.
emmeans / marginaleffects / data.frame(<rvar>) methods when using multiple credible levels (#688).Support for posterior::rvar-type column in data frames. For example, a data frame df with an rvar column ".pred" can now be called directly via p_direction(df, rvar_col = ".pred").
Added support for marginaleffects
The ROPE or threshold ranges in rope(), describe_posterior(), p_significance() and equivalence_test() can now be specified as a list. This allows for different ranges for different parameters.
Results from objects generated by emmeans (emmGrid/emm_list) now return results with appended grid-data.
Usability improvements for p_direction():
Results from p_direction() can directly be used in pd_to_p().
p_direction() gets an as_p argument, to directly convert pd-values into frequentist p-values.
p_direction() gets a remove_na argument, which defaults to TRUE, to remove NA values from the input before calculating the pd-values.
Besides the existing as.numeric() method, p_direction() now also has an as.vector() method.
p_significance() now accepts non-symmetric ranges for the threshold argument.
p_to_pd() now also works with data frames returned by p_direction(). If a data frame contains a pd, p_direction or PD column name, this is assumed to be the pd-values, which are then converted to p-values.
p_to_pd() for data frame inputs gets a as.numeric() and as.vector() method.
group, at, group_by and split_by will be deprecated in future releases of easystats packages. Please use by instead. This affects following functions in bayestestR: estimate_density().bayesian_as_frequentist() now supports more model families from Bayesian models that can be successfully converted to their frequentists counterparts.
bayesfactor_models() now throws an informative error when Bayes factors for comparisons could not be calculated.
bayesian_as_frequentist() for brms models with 0 + Intercept specification in the model formula.pd_to_p() now returns 1 and a warning for values smaller than 0.5.
map_estimate(), p_direction(), p_map(), and p_significance() now return a data-frame when the input is a numeric vector. (making the output consistently a data frame for all inputs.)
Argument posteriors was renamed into posterior. Before, there were a mix of both spellings, now it is consistently posterior.
Fixed issues in various format() methods, which did not work properly for some few functions (like p_direction()).
Fixed issue in estimate_density() for double vectors that also had other class attributes.
Fixed several minor issues and tests.
Improved speed performance when functions are called using do.call().
Improved speed performance to bayesfactor_models() for brmsfit objects that already included a marglik element in the model object.
as.logical() for bayesfactor_restricted() results, extracts the boolean vector(s) the mark which draws are part of the order restriction.p_map() gains a new null argument to specify any non-0 nulls.
Fixed non-working examples for ci(method = "SI").
Fixed wrong calculation of rope range for model objects in describe_posterior().
Some smaller bug fixes.
The minimum needed R version has been bumped to 3.6.
contr.equalprior(contrasts = FALSE) (previously contr.orthonorm) no longer returns an identity matrix, but a shifted diag(n) - 1/n, for consistency.
p_to_bf(), to convert p-values into Bayes factors. For more accurate approximate Bayes factors, use bic_to_bf().rvar from package posterior.contr.equalprior (previously contr.orthonorm) gains two new functions: contr.equalprior_pairs and contr.equalprior_deviations to aide in setting more intuitive priors.contr.equalprior to be more explicit about its function.p_direction() now accepts objects of class parameters_model() (from parameters::model_parameters()), to compute probability of direction for parameters of frequentist models.Bayesfactor_models() for frequentist models now relies on the updated insight::get_loglikelihood(). This might change some results for REML based models. See documentation.
estimate_density() argument group_by is renamed at.
All distribution_*(random = FALSE) functions now rely on ppoints(), which will result in slightly different results, especially with small ns.
Uncertainty estimation now defaults to "eti" (formerly was "hdi").
bayestestR functions now support draws objects from package posterior.
rope_range() now handles log(normal)-families and models with log-transformed outcomes.
New function spi(), to compute shortest probability intervals. Furthermore, the "spi" option was added as new method to compute uncertainty intervals.
bci() for some objects incorrectly returned the equal-tailed intervals.describe_posterior() gains a plot() method, which is a short cut for plot(estimate_density(describe_posterior())).Fixed issues related to last brms update.
Fixed bug in describe_posterior.BFBayesFactor() where Bayes factors were missing from out put ( #442 ).
log(BF) (column name log_BF). Printing is unaffected. To retrieve the raw BFs, you can run exp(result$log_BF).bci() (and its alias bcai()) to compute bias-corrected and accelerated bootstrap intervals. Along with this new function, ci() and describe_posterior() gain a new ci_method type, "bci".The default ci width has been changed to 0.95 instead of 0.89 (see here). This should not come as a surprise to the long-time users of bayestestR as we have been warning about this impending change for a while now :)
Column names for bayesfactor_restricted() are now p_prior and p_posterior (was Prior_prob and Posterior_prob), to be consistent with bayesfactor_inclusion() output.
Removed the experimental function mhdior.
Support for blavaan models.
Support for blrm models (rmsb).
Support for BGGM models (BGGM).
check_prior() and describe_prior() should now also work for more ways of prior definition in models from rstanarm or brms.
Fixed bug in print() method for the mediation() function.
Fixed remaining inconsistencies with CI values, which were not reported as fraction for rope().
Fixed issues with special prior definitions in check_prior(), describe_prior() and simulate_prior().
.stanreg methods gain a component argument, to also include auxiliary parameters.bayesfactor_parameters() no longer errors for no reason when computing extremely un/likely direction hypotheses.
bayesfactor_pointull() / bf_pointull() are now bayesfactor_pointnull() / bf_pointnull() (can you spot the difference? #363 ).
sexit(), a function for sequential effect existence and significance testing (SEXIT).Added startup-message to warn users that default ci-width might change in a future update.
Added support for mcmc.list objects.
unupdate() gains a newdata argument to work with brmsfit_multiple models.
Fixed issue in Bayes factor vignette (don’t evaluate code chunks if packages not available).
Added as.matrix() function for bayesfactor_model arrays.
unupdate(), a utility function to get Bayesian models un-fitted from the data, representing the priors only.
Fixed issue with default rope range for BayesFactor models.
Fixed issue in collinearity-check for rope() for models with less than two parameters.
Fixed issue in print-method for mediation() with stanmvreg-models, which displays the wrong name for the response-value.
Fixed issue in effective_sample() for models with only one parameter.
rope_range() for BayesFactor models returns non-NA values ( #343 )
mediation(), to compute average direct and average causal mediation effects of multivariate response models (brmsfit, stanmvreg).bayesfactor_parameters() works with R<3.6.0.weighted_posteriors() can now be used with data frames.
Revised print() for describe_posterior().
Improved value formatting for Bayesfactor functions.
Link transformation are now taken into account for emmeans objets. E.g., in describe_posterior().
Fix diagnostic_posterior() when algorithm is not “sampling”.
Minor revisions to some documentations.
Fix CRAN check issues for win-old-release.
describe_posterior() now also works on effectsize::standardize_posteriors().
p_significance() now also works on parameters::simulate_model().
rope_range() supports more (frequentis) models.
Fixed issue with plot() data.frame-methods of p_direction() and equivalence_test().
Fix check issues for forthcoming insight-update.
estimate_density() now also works on grouped data frames.Fixed bug in weighted_posteriors() to properly weight Intercept-only BFBayesFactor models.
Fixed bug in weighted_posteriors() when models have very low posterior probability ( #286 ).
Fixed bug in describe_posterior(), rope() and equivalence_test() for brmsfit models with monotonic effect.
Fixed issues related to latest changes in as.data.frame.brmsfit() from the brms package.
Added p_pointnull() as an alias to p_MAP().
Added si() function to compute support intervals.
Added weighted_posteriors() for generating posterior samples averaged across models.
Added plot()-method for p_significance().
p_significance() now also works for brmsfit-objects.
estimate_density() now also works for MCMCglmm-objects.
equivalence_test() gets effects and component arguments for stanreg and brmsfit models, to print specific model components.
Support for mcmc objects (package coda)
Provide more distributions via distribution().
Added distribution_tweedie().
Better handling of stanmvreg models for describe_posterior(), diagnostic_posterior() and describe_prior().
point_estimate(): argument centrality default value changed from ‘median’ to ‘all’.
p_rope(), previously as exploratory index, was renamed as mhdior() (for Max HDI inside/outside ROPE), as p_rope() will refer to rope(..., ci = 1) ( #258 )
Fixed mistake in description of p_significance().
Fixed error when computing BFs with emmGrid based on some non-linear models ( #260 ).
Fixed wrong output for percentage-values in print.equivalence_test().
Fixed issue in describe_posterior() for BFBayesFactor-objects with more than one model.
convert_bayesian_to_frequentist() Convert (refit) Bayesian model as frequentist
distribution_binomial() for perfect binomial distributions
simulate_ttest() Simulate data with a mean difference
simulate_correlation() Simulate correlated datasets
p_significance() Compute the probability of Practical Significance (ps)
overlap() Compute overlap between two empirical distributions
estimate_density(): method = "mixture" argument added for mixture density estimation
simulate_prior() for stanreg-models when autoscale was set to FALSE
print()-methods for functions like rope(), p_direction(), describe_posterior() etc., in particular for model objects with random effects and/or zero-inflation componentcheck_prior() to check if prior is informative
simulate_prior() to simulate model’s priors as distributions
distribution_gamma() to generate a (near-perfect or random) Gamma distribution
contr.bayes function for orthogonal factor coding (implementation from Singmann & Gronau’s bfrms, used for proper prior estimation when factor have 3 levels or more. See Bayes factor vignette ## Changes to functions
Added support for sim, sim.merMod (from arm::sim()) and MCMCglmm-objects to many functions (like hdi(), ci(), eti(), rope(), p_direction(), point_estimate(), …)
describe_posterior() gets an effects and component argument, to include the description of posterior samples from random effects and/or zero-inflation component.
More user-friendly warning for non-supported models in bayesfactor()-methods
Fixed bug in bayesfactor_inclusion() where the same interaction sometimes appeared more than once (#223)
Fixed bug in describe_posterior() for stanreg models fitted with fullrank-algorithm
rope_range() for binomial model has now a different default (-.18; .18 ; instead of -.055; .055)
rope(): returns a proportion (between 0 and 1) instead of a value between 0 and 100
p_direction(): returns a proportion (between 0.5 and 1) instead of a value between 50 and 100 (#168)
bayesfactor_savagedickey(): hypothesis argument replaced by null as part of the new bayesfactor_parameters() function
density_at(), p_map() and map_estimate(): method argument added
rope(): ci_method argument added
eti(): Computes equal-tailed intervals
reshape_ci(): Reshape CIs between wide/long
bayesfactor_parameters(): New function, replacing bayesfactor_savagedickey(), allows for computing Bayes factors against a point-null or an interval-null
bayesfactor_restricted(): Function for computing Bayes factors for order restricted models
bayesfactor_inclusion() now works with R < 3.6.equivalence_test(): returns capitalized output (e.g., Rejected instead of rejected)
describe_posterior.numeric(): dispersion defaults to FALSE for consistency with the other methods
pd_to_p() and p_to_pd(): Functions to convert between probability of direction (pd) and p-value
Support of emmGrid objects: ci(), rope(), bayesfactor_savagedickey(), describe_posterior(), …
describe_posterior(): Fixed column order restoration
bayesfactor_inclusion(): Inclusion BFs for matched models are more inline with JASP results.
plotting functions now require the installation of the see package
estimate argument name in describe_posterior() and point_estimate() changed to centrality
hdi(), ci(), rope() and equivalence_test() default ci to 0.89
rnorm_perfect() deprecated in favour of distribution_normal()
map_estimate() now returns a single value instead of a dataframe and the density parameter has been removed. The MAP density value is now accessible via attributes(map_output)$MAP_density
describe_posterior(), describe_prior(), diagnostic_posterior(): added wrapper function
point_estimate() added function to compute point estimates
p_direction(): new argument method to compute pd based on AUC
area_under_curve(): compute AUC
distribution() functions have been added
bayesfactor_savagedickey(), bayesfactor_models() and bayesfactor_inclusion() functions has been added
Started adding plotting methods (currently in the see package) for p_direction() and hdi()
probability_at() as alias for density_at()
effective_sample() to return the effective sample size of Stan-models
mcse() to return the Monte Carlo standard error of Stan-models
Improved documentation
Improved testing
p_direction(): improved printing
rope() for model-objects now returns the HDI values for all parameters as attribute in a consistent way
Changes legend-labels in plot.equivalence_test() to align plots with the output of the print()-method (#78)
CRAN initial publication and 0.1.0 release
Added a NEWS.md file to track changes to the package