# ess_bulk: Bulk effective sample size (bulk-ESS) In posterior: Tools for Working with Posterior Distributions

## Description

Compute a bulk effective sample size estimate (bulk-ESS) for a single variable. Bulk-ESS is useful as a diagnostic for the sampling efficiency in the bulk of the posterior. It is defined as the effective sample size for rank normalized values using split chains. For the tail effective sample size see `ess_tail()`.

## Usage

 ```1 2 3 4 5 6 7``` ```ess_bulk(x, ...) ## Default S3 method: ess_bulk(x, ...) ## S3 method for class 'rvar' ess_bulk(x, ...) ```

## 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 (2019). Rank-normalization, folding, and localization: An improved R-hat for assessing convergence of MCMC. arXiv preprint `arXiv:1903.08008`.

Other diagnostics: `ess_basic()`, `ess_quantile()`, `ess_sd()`, `ess_tail()`, `mcse_mean()`, `mcse_quantile()`, `mcse_sd()`, `rhat_basic()`, `rhat()`, `rstar()`
 ```1 2 3 4 5``` ```mu <- extract_variable_matrix(example_draws(), "mu") ess_bulk(mu) d <- as_draws_rvars(example_draws("multi_normal")) ess_bulk(d\$Sigma) ```