Convert a stanreg object to a format supported by the
posterior package.
Usage
# S3 method for class 'stanreg'
as_draws(x, ...)
# S3 method for class 'stanreg'
as_draws_matrix(x, ...)
# S3 method for class 'stanreg'
as_draws_array(x, ...)
# S3 method for class 'stanreg'
as_draws_df(x, ...)
# S3 method for class 'stanreg'
as_draws_list(x, ...)
# S3 method for class 'stanreg'
as_draws_rvars(x, ...)Arguments
- x
A
stanregobject returned by one of the rstanarm modeling functions.- ...
Arguments (e.g.,
pars,regex_pars) passed internally toas.matrix.stanregoras.array.stanreg.
Value
A draws object from the
posterior package. See the
posterior package documentation and vignettes for details on working
with these objects.
Details
To subset iterations, chains, or draws, use
subset_draws after making the
draws object. To subset variables use ... to pass the pars
and/or regex_pars arguments to as.matrix.stanreg or
as.array.stanreg (these are called internally by
as_draws.stanreg), or use
subset_draws after making the
draws object.
Examples
fit <- stan_glm(mpg ~ wt + as.factor(cyl), data = mtcars)
#>
#> SAMPLING FOR MODEL 'continuous' NOW (CHAIN 1).
#> Chain 1:
#> Chain 1: Gradient evaluation took 2.6e-05 seconds
#> Chain 1: 1000 transitions using 10 leapfrog steps per transition would take 0.26 seconds.
#> Chain 1: Adjust your expectations accordingly!
#> Chain 1:
#> Chain 1:
#> Chain 1: Iteration: 1 / 2000 [ 0%] (Warmup)
#> Chain 1: Iteration: 200 / 2000 [ 10%] (Warmup)
#> Chain 1: Iteration: 400 / 2000 [ 20%] (Warmup)
#> Chain 1: Iteration: 600 / 2000 [ 30%] (Warmup)
#> Chain 1: Iteration: 800 / 2000 [ 40%] (Warmup)
#> Chain 1: Iteration: 1000 / 2000 [ 50%] (Warmup)
#> Chain 1: Iteration: 1001 / 2000 [ 50%] (Sampling)
#> Chain 1: Iteration: 1200 / 2000 [ 60%] (Sampling)
#> Chain 1: Iteration: 1400 / 2000 [ 70%] (Sampling)
#> Chain 1: Iteration: 1600 / 2000 [ 80%] (Sampling)
#> Chain 1: Iteration: 1800 / 2000 [ 90%] (Sampling)
#> Chain 1: Iteration: 2000 / 2000 [100%] (Sampling)
#> Chain 1:
#> Chain 1: Elapsed Time: 0.058 seconds (Warm-up)
#> Chain 1: 0.049 seconds (Sampling)
#> Chain 1: 0.107 seconds (Total)
#> Chain 1:
#>
#> SAMPLING FOR MODEL 'continuous' NOW (CHAIN 2).
#> Chain 2:
#> Chain 2: Gradient evaluation took 1.4e-05 seconds
#> Chain 2: 1000 transitions using 10 leapfrog steps per transition would take 0.14 seconds.
#> Chain 2: Adjust your expectations accordingly!
#> Chain 2:
#> Chain 2:
#> Chain 2: Iteration: 1 / 2000 [ 0%] (Warmup)
#> Chain 2: Iteration: 200 / 2000 [ 10%] (Warmup)
#> Chain 2: Iteration: 400 / 2000 [ 20%] (Warmup)
#> Chain 2: Iteration: 600 / 2000 [ 30%] (Warmup)
#> Chain 2: Iteration: 800 / 2000 [ 40%] (Warmup)
#> Chain 2: Iteration: 1000 / 2000 [ 50%] (Warmup)
#> Chain 2: Iteration: 1001 / 2000 [ 50%] (Sampling)
#> Chain 2: Iteration: 1200 / 2000 [ 60%] (Sampling)
#> Chain 2: Iteration: 1400 / 2000 [ 70%] (Sampling)
#> Chain 2: Iteration: 1600 / 2000 [ 80%] (Sampling)
#> Chain 2: Iteration: 1800 / 2000 [ 90%] (Sampling)
#> Chain 2: Iteration: 2000 / 2000 [100%] (Sampling)
#> Chain 2:
#> Chain 2: Elapsed Time: 0.056 seconds (Warm-up)
#> Chain 2: 0.052 seconds (Sampling)
#> Chain 2: 0.108 seconds (Total)
#> Chain 2:
#>
#> SAMPLING FOR MODEL 'continuous' NOW (CHAIN 3).
#> Chain 3:
#> Chain 3: Gradient evaluation took 1.3e-05 seconds
#> Chain 3: 1000 transitions using 10 leapfrog steps per transition would take 0.13 seconds.
#> Chain 3: Adjust your expectations accordingly!
#> Chain 3:
#> Chain 3:
#> Chain 3: Iteration: 1 / 2000 [ 0%] (Warmup)
#> Chain 3: Iteration: 200 / 2000 [ 10%] (Warmup)
#> Chain 3: Iteration: 400 / 2000 [ 20%] (Warmup)
#> Chain 3: Iteration: 600 / 2000 [ 30%] (Warmup)
#> Chain 3: Iteration: 800 / 2000 [ 40%] (Warmup)
#> Chain 3: Iteration: 1000 / 2000 [ 50%] (Warmup)
#> Chain 3: Iteration: 1001 / 2000 [ 50%] (Sampling)
#> Chain 3: Iteration: 1200 / 2000 [ 60%] (Sampling)
#> Chain 3: Iteration: 1400 / 2000 [ 70%] (Sampling)
#> Chain 3: Iteration: 1600 / 2000 [ 80%] (Sampling)
#> Chain 3: Iteration: 1800 / 2000 [ 90%] (Sampling)
#> Chain 3: Iteration: 2000 / 2000 [100%] (Sampling)
#> Chain 3:
#> Chain 3: Elapsed Time: 0.056 seconds (Warm-up)
#> Chain 3: 0.052 seconds (Sampling)
#> Chain 3: 0.108 seconds (Total)
#> Chain 3:
#>
#> SAMPLING FOR MODEL 'continuous' NOW (CHAIN 4).
#> Chain 4:
#> Chain 4: Gradient evaluation took 1.3e-05 seconds
#> Chain 4: 1000 transitions using 10 leapfrog steps per transition would take 0.13 seconds.
#> Chain 4: Adjust your expectations accordingly!
#> Chain 4:
#> Chain 4:
#> Chain 4: Iteration: 1 / 2000 [ 0%] (Warmup)
#> Chain 4: Iteration: 200 / 2000 [ 10%] (Warmup)
#> Chain 4: Iteration: 400 / 2000 [ 20%] (Warmup)
#> Chain 4: Iteration: 600 / 2000 [ 30%] (Warmup)
#> Chain 4: Iteration: 800 / 2000 [ 40%] (Warmup)
#> Chain 4: Iteration: 1000 / 2000 [ 50%] (Warmup)
#> Chain 4: Iteration: 1001 / 2000 [ 50%] (Sampling)
#> Chain 4: Iteration: 1200 / 2000 [ 60%] (Sampling)
#> Chain 4: Iteration: 1400 / 2000 [ 70%] (Sampling)
#> Chain 4: Iteration: 1600 / 2000 [ 80%] (Sampling)
#> Chain 4: Iteration: 1800 / 2000 [ 90%] (Sampling)
#> Chain 4: Iteration: 2000 / 2000 [100%] (Sampling)
#> Chain 4:
#> Chain 4: Elapsed Time: 0.059 seconds (Warm-up)
#> Chain 4: 0.056 seconds (Sampling)
#> Chain 4: 0.115 seconds (Total)
#> Chain 4:
as_draws_matrix(fit) # matrix format combines all chains
#> # A draws_matrix: 4000 iterations, 1 chains, and 5 variables
#> variable
#> draw (Intercept) wt as.factor(cyl)6 as.factor(cyl)8 sigma
#> 1 36 -4.2 -3.8 -3.4 2.8
#> 2 36 -4.3 -2.8 -4.2 2.9
#> 3 32 -2.8 -4.0 -5.1 2.5
#> 4 39 -4.8 -3.5 -3.8 2.9
#> 5 35 -3.2 -4.8 -5.7 2.7
#> 6 33 -2.8 -3.9 -5.6 2.6
#> 7 34 -2.6 -5.3 -8.4 2.5
#> 8 33 -3.6 -2.3 -3.1 3.1
#> 9 36 -4.2 -1.3 -4.9 2.7
#> 10 35 -3.3 -5.0 -6.4 2.5
#> # ... with 3990 more draws
as_draws_df(fit, regex_pars = "cyl")
#> # A draws_df: 1000 iterations, 4 chains, and 2 variables
#> as.factor(cyl)6 as.factor(cyl)8
#> 1 -3.8 -3.4
#> 2 -2.8 -4.2
#> 3 -4.0 -5.1
#> 4 -3.5 -3.8
#> 5 -4.8 -5.7
#> 6 -3.9 -5.6
#> 7 -5.3 -8.4
#> 8 -2.3 -3.1
#> 9 -1.3 -4.9
#> 10 -5.0 -6.4
#> # ... with 3990 more draws
#> # ... hidden reserved variables {'.chain', '.iteration', '.draw'}
posterior::summarize_draws(as_draws_array(fit))
#> # A tibble: 5 × 10
#> variable mean median sd mad q5 q95 rhat ess_bulk ess_tail
#> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 (Intercept) 34.0 34.0 1.97 1.88 30.9 37.3 1.00 2995. 2699.
#> 2 wt -3.23 -3.22 0.797 0.798 -4.54 -1.93 1.00 2358. 2326.
#> 3 as.factor(cyl)6 -4.24 -4.24 1.45 1.44 -6.57 -1.86 1.00 2531. 2676.
#> 4 as.factor(cyl)8 -6.03 -6.04 1.75 1.73 -8.89 -3.24 1.00 2293. 2223.
#> 5 sigma 2.65 2.61 0.366 0.350 2.13 3.31 1.00 2683. 2436.