# cwi: Curvewise Intervals (CWI) In DominiqueMakowski/bayestestR: Understand and Describe Bayesian Models and Posterior Distributions

## Description

Compute the Curvewise interval (CWI) (also called the "simultaneous interval" or "joint interval") of posterior distributions using `ggdist::curve_interval()`. Whereas the more typical "pointwise intervals" contain xx% of the posterior for a single parameter, joint/curvewise intervals contain xx% of the posterior distribution for all parameters.

## Usage

 ```1 2 3 4``` ```cwi(x, ...) ## S3 method for class 'data.frame' cwi(x, ci = 0.95, ...) ```

## 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. `...` Currently not used. `ci` Value or vector of probability of the (credible) interval - CI (between 0 and 1) to be estimated. Default to `.95` (`95%`).

## Details

Applied model predictions, pointwise intervals contain xx% of the predicted response values conditional on specific predictor values. In contrast, curvewise intervals contain xx% of the predicted response values across all predictor values. Put another way, curvewise intervals contain xx% of the full prediction lines from the model.

For more details, see the ggdist documentation on curvewise intervals.

## Value

A data frame with following columns:

• `Parameter` The model parameter(s), if `x` is a model-object. If `x` is a vector, this column is missing.

• `CI` The probability of the credible interval.

• `CI_low`, `CI_high` The lower and upper credible interval limits for the parameters.

Other ci: `bci()`, `ci()`, `eti()`, `hdi()`, `si()`
 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36``` ```library(bayestestR) if (require("ggplot2") && require("rstanarm") && require("ggdist")) { # Generate data ============================================= k = 11 # number of curves (iterations) n = 201 # number of rows data <- data.frame(x = seq(-15,15,length.out = n)) # Simulate iterations as new columns for(i in 1:k) { data[paste0("iter_", i)] <- dnorm(data\$x, seq(-5,5, length.out = k)[i], 3) } # Note: first, we need to transpose the data to have iters as rows iters <- datawizard::data_transpose(data[paste0("iter_", 1:k)]) # Compute Median data\$Median <- point_estimate(iters)[["Median"]] # Compute Credible Intervals ================================ # Compute ETI (default type of CI) data[c("ETI_low", "ETI_high")] <- eti(iters, ci = 0.5)[c("CI_low", "CI_high")] # Compute CWI # ggdist::curve_interval(reshape_iterations(data), iter_value .width = c(.5)) # Visualization ============================================= ggplot(data, aes(x = x, y = Median)) + geom_ribbon(aes(ymin = ETI_low, ymax = ETI_high), fill = "red", alpha = 0.3) + geom_line(size = 1) + geom_line(data = reshape_iterations(data), aes(y = iter_value, group = iter_group), alpha = 0.3) } ```