This function compte the Bayes factors (BFs) that are appropriate to the
input. For vectors or single models, it will compute BFs for single parameters()
, or is hypothesis
is specified,
BFs for restricted models()
. For multiple models,
it will return the BF corresponding to comparison between models()
and if a model comparison is passed, it will
compute the inclusion BF()
.
For a complete overview of these functions, read the Bayes factor vignette.
Usage
bayesfactor(
...,
prior = NULL,
direction = "two-sided",
null = 0,
hypothesis = NULL,
effects = c("fixed", "random", "all"),
verbose = TRUE,
denominator = 1,
match_models = FALSE,
prior_odds = NULL
)
Arguments
- ...
A numeric vector, model object(s), or the output from
bayesfactor_models
.- prior
An object representing a prior distribution (see 'Details').
- direction
Test type (see 'Details'). One of
0
,"two-sided"
(default, two tailed),-1
,"left"
(left tailed) or1
,"right"
(right tailed).- null
Value of the null, either a scalar (for point-null) or a range (for a interval-null).
- hypothesis
A character vector specifying the restrictions as logical conditions (see examples below).
- effects
Should results for fixed effects, random effects or both be returned? Only applies to mixed models. May be abbreviated.
- verbose
Toggle off warnings.
- denominator
Either an integer indicating which of the models to use as the denominator, or a model to be used as a denominator. Ignored for
BFBayesFactor
.- match_models
See details.
- prior_odds
Optional vector of prior odds for the models. See
BayesFactor::priorOdds<-
.
Value
Some type of Bayes factor, depending on the input. See bayesfactor_parameters()
, bayesfactor_models()
or bayesfactor_inclusion()
Note
There is also a plot()
-method implemented in the see-package.
Examples
library(bayestestR)
if (require("logspline")) {
prior <- distribution_normal(1000, mean = 0, sd = 1)
posterior <- distribution_normal(1000, mean = .5, sd = .3)
bayesfactor(posterior, prior = prior)
}
#> Loading required package: logspline
#> Warning: Bayes factors might not be precise.
#> For precise Bayes factors, sampling at least 40,000 posterior samples is recommended.
#> Bayes Factor (Savage-Dickey density ratio)
#>
#> BF
#> ----
#> 1.21
#>
#> * Evidence Against The Null: 0
if (FALSE) {
# rstanarm models
# ---------------
if (require("rstanarm")) {
model <- stan_lmer(extra ~ group + (1 | ID), data = sleep)
bayesfactor(model)
}
}
if (require("logspline")) {
# Frequentist models
# ---------------
m0 <- lm(extra ~ 1, data = sleep)
m1 <- lm(extra ~ group, data = sleep)
m2 <- lm(extra ~ group + ID, data = sleep)
comparison <- bayesfactor(m0, m1, m2)
comparison
bayesfactor(comparison)
}
#> Inclusion Bayes Factors (Model Averaged)
#>
#> P(prior) P(posterior) Inclusion BF
#> group 0.67 1.00 5.61e+03
#> ID 0.33 1.00 9.77e+03
#>
#> * Compared among: all models
#> * Priors odds: uniform-equal