Compute an effective sample size estimate for the standard deviation (SD) estimate of a single variable. This is defined as the effective sample size estimate for the absolute deviation from mean.
Arguments
- x
(multiple options) One of:
A matrix of draws for a single variable (iterations x chains). See
extract_variable_matrix().An
rvar.
- ...
Arguments passed to individual methods (if applicable).
Value
If the input is an array, returns a single numeric value. If any of the draws
is non-finite, that is, NA, NaN, Inf, or -Inf, the returned output
will be (numeric) NA. Also, if all draws within any of the chains of a
variable are the same (constant), the returned output will be (numeric) NA
as well. The reason for the latter is that, for constant draws, we cannot
distinguish between variables that are supposed to be constant (e.g., a
diagonal element of a correlation matrix is always 1) or variables that just
happened to be constant because of a failure of convergence or other problems
in the sampling process.
If the input is an rvar, returns an array of the same dimensions as the
rvar, where each element is equal to the value that would be returned by
passing the draws array for that element of the rvar to this function.
References
Aki Vehtari, Andrew Gelman, Daniel Simpson, Bob Carpenter, and Paul-Christian Bürkner (2021). Rank-normalization, folding, and localization: An improved R-hat for assessing convergence of MCMC (with discussion). Bayesian Analysis. 16(2), 667-–718. doi:10.1214/20-BA1221
See also
Other diagnostics:
ess_basic(),
ess_bulk(),
ess_quantile(),
ess_tail(),
mcse_mean(),
mcse_quantile(),
mcse_sd(),
pareto_diags(),
pareto_khat(),
rhat(),
rhat_basic(),
rhat_nested(),
rstar()
Examples
mu <- extract_variable_matrix(example_draws(), "mu")
ess_sd(mu)
#> [1] 131.1074
d <- as_draws_rvars(example_draws("multi_normal"))
ess_sd(d$Sigma)
#> [,1] [,2] [,3]
#> [1,] 226.3239 165.9586 277.6148
#> [2,] 165.9586 287.7507 264.0477
#> [3,] 277.6148 264.0477 280.1463