Compute various point-estimates, such as the mean, the median or the MAP, to describe posterior distributions.

point_estimate(x, centrality = "all", dispersion = FALSE, ...)

# S3 method for numeric
point_estimate(x, centrality = "all", dispersion = FALSE, threshold = 0.1, ...)

# S3 method for stanreg
point_estimate(
x,
centrality = "all",
dispersion = FALSE,
effects = c("fixed", "random", "all"),
component = c("location", "all", "conditional", "smooth_terms", "sigma",
"distributional", "auxiliary"),
parameters = NULL,
...
)

# S3 method for brmsfit
point_estimate(
x,
centrality = "all",
dispersion = FALSE,
effects = c("fixed", "random", "all"),
component = c("conditional", "zi", "zero_inflated", "all"),
parameters = NULL,
...
)

# S3 method for BFBayesFactor
point_estimate(x, centrality = "all", dispersion = FALSE, ...)

## Arguments

x Vector representing a posterior distribution, or a data frame of such vectors. Can also be a Bayesian model (stanreg, brmsfit, MCMCglmm, mcmc or bcplm) or a BayesFactor model. The point-estimates (centrality indices) to compute. Character (vector) or list with one or more of these options: "median", "mean", "MAP" or "all". Logical, if TRUE, computes indices of dispersion related to the estimate(s) (SD and MAD for mean and median, respectively). Additional arguments to be passed to or from methods. For centrality = "trimmed" (i.e. trimmed mean), indicates the fraction (0 to 0.5) of observations to be trimmed from each end of the vector before the mean is computed. Should results for fixed effects, random effects or both be returned? Only applies to mixed models. May be abbreviated. Should results for all parameters, parameters for the conditional model or the zero-inflated part of the model be returned? May be abbreviated. Only applies to brms-models. Regular expression pattern that describes the parameters that should be returned. Meta-parameters (like lp__ or prior_) are filtered by default, so only parameters that typically appear in the summary() are returned. Use parameters to select specific parameters for the output.

## Note

There is also a plot()-method implemented in the see-package.

Vignette In-Depth 1: Comparison of Point-Estimates

## Examples

library(bayestestR)

point_estimate(rnorm(1000))
#> Point Estimate
#>
#> Median    |     Mean |   MAP
#> ----------------------------
#> -8.64e-03 | 7.97e-03 | -0.04point_estimate(rnorm(1000), centrality = "all", dispersion = TRUE)
#> Point Estimate
#>
#> Median    |  MAD |  Mean |   SD |  MAP
#> --------------------------------------
#> -5.22e-03 | 1.03 | -0.01 | 0.99 | 0.06point_estimate(rnorm(1000), centrality = c("median", "MAP"))
#> Point Estimate
#>
#> Median |   MAP
#> --------------
#> -0.08  | -0.27
df <- data.frame(replicate(4, rnorm(100)))
point_estimate(df, centrality = "all", dispersion = TRUE)
#> Point Estimate
#>
#> Parameter | Median |  MAD |  Mean |   SD |   MAP
#> ------------------------------------------------
#> X1        |  -0.07 | 1.02 |  0.03 | 0.97 | -0.39
#> X2        |  -0.04 | 0.88 | -0.03 | 1.03 |  0.02
#> X3        |  -0.24 | 0.94 | -0.09 | 1.08 | -0.34
#> X4        |   0.08 | 1.00 | -0.03 | 0.95 |  0.25point_estimate(df, centrality = c("median", "MAP"))
#> Point Estimate
#>
#> Parameter | Median |   MAP
#> --------------------------
#> X1        |  -0.07 | -0.39
#> X2        |  -0.04 |  0.02
#> X3        |  -0.24 | -0.34
#> X4        |   0.08 |  0.25if (FALSE) {
# rstanarm models
# -----------------------------------------------
library(rstanarm)
model <- rstanarm::stan_glm(mpg ~ wt + cyl, data = mtcars)
point_estimate(model, centrality = "all", dispersion = TRUE)
point_estimate(model, centrality = c("median", "MAP"))

# emmeans estimates
# -----------------------------------------------
library(emmeans)
point_estimate(emtrends(model, ~1, "wt"), centrality = c("median", "MAP"))

# brms models
# -----------------------------------------------
library(brms)
model <- brms::brm(mpg ~ wt + cyl, data = mtcars)
point_estimate(model, centrality = "all", dispersion = TRUE)
point_estimate(model, centrality = c("median", "MAP"))

# BayesFactor objects
# -----------------------------------------------
library(BayesFactor)
bf <- ttestBF(x = rnorm(100, 1, 1))
point_estimate(bf, centrality = "all", dispersion = TRUE)
point_estimate(bf, centrality = c("median", "MAP"))
}