Transform a brmsfit object to a format supported by the
posterior package.
Usage
# S3 method for class 'brmsfit'
as_draws(x, variable = NULL, regex = FALSE, inc_warmup = FALSE, ...)
# S3 method for class 'brmsfit'
as_draws_matrix(x, variable = NULL, regex = FALSE, inc_warmup = FALSE, ...)
# S3 method for class 'brmsfit'
as_draws_array(x, variable = NULL, regex = FALSE, inc_warmup = FALSE, ...)
# S3 method for class 'brmsfit'
as_draws_df(x, variable = NULL, regex = FALSE, inc_warmup = FALSE, ...)
# S3 method for class 'brmsfit'
as_draws_list(x, variable = NULL, regex = FALSE, inc_warmup = FALSE, ...)
# S3 method for class 'brmsfit'
as_draws_rvars(x, variable = NULL, regex = FALSE, inc_warmup = FALSE, ...)Arguments
- x
A
brmsfitobject or another R object for which the methods are defined.- variable
A character vector providing the variables to extract. By default, all variables are extracted.
- regex
Logical; Should variable should be treated as a (vector of) regular expressions? Any variable in
xmatching at least one of the regular expressions will be selected. Defaults toFALSE.- inc_warmup
Should warmup draws be included? Defaults to
FALSE.- ...
Arguments passed to individual methods (if applicable).
Details
To subset iterations, chains, or draws, use the
subset_draws method after
transforming the brmsfit to a draws object.
Examples
# \dontrun{
fit <- brm(count ~ zAge + zBase * Trt + (1|patient),
data = epilepsy, family = poisson())
#> Compiling Stan program...
#> Start sampling
#>
#> SAMPLING FOR MODEL 'anon_model' NOW (CHAIN 1).
#> Chain 1:
#> Chain 1: Gradient evaluation took 2.8e-05 seconds
#> Chain 1: 1000 transitions using 10 leapfrog steps per transition would take 0.28 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: 1.922 seconds (Warm-up)
#> Chain 1: 1.392 seconds (Sampling)
#> Chain 1: 3.314 seconds (Total)
#> Chain 1:
#>
#> SAMPLING FOR MODEL 'anon_model' NOW (CHAIN 2).
#> Chain 2:
#> Chain 2: Gradient evaluation took 2.3e-05 seconds
#> Chain 2: 1000 transitions using 10 leapfrog steps per transition would take 0.23 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: 1.839 seconds (Warm-up)
#> Chain 2: 1.352 seconds (Sampling)
#> Chain 2: 3.191 seconds (Total)
#> Chain 2:
#>
#> SAMPLING FOR MODEL 'anon_model' NOW (CHAIN 3).
#> Chain 3:
#> Chain 3: Gradient evaluation took 2.3e-05 seconds
#> Chain 3: 1000 transitions using 10 leapfrog steps per transition would take 0.23 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: 2.081 seconds (Warm-up)
#> Chain 3: 1.368 seconds (Sampling)
#> Chain 3: 3.449 seconds (Total)
#> Chain 3:
#>
#> SAMPLING FOR MODEL 'anon_model' NOW (CHAIN 4).
#> Chain 4:
#> Chain 4: Gradient evaluation took 2.9e-05 seconds
#> Chain 4: 1000 transitions using 10 leapfrog steps per transition would take 0.29 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: 2.02 seconds (Warm-up)
#> Chain 4: 1.4 seconds (Sampling)
#> Chain 4: 3.42 seconds (Total)
#> Chain 4:
# extract posterior draws in an array format
(draws_fit <- as_draws_array(fit))
#> # A draws_array: 1000 iterations, 4 chains, and 68 variables
#> , , variable = b_Intercept
#>
#> chain
#> iteration 1 2 3 4
#> 1 1.7 1.8 1.9 2.0
#> 2 1.6 1.7 1.8 1.9
#> 3 1.6 1.7 1.8 2.0
#> 4 1.6 1.7 1.9 1.9
#> 5 1.7 1.6 1.8 1.7
#>
#> , , variable = b_zAge
#>
#> chain
#> iteration 1 2 3 4
#> 1 0.075 0.068 0.14 -0.0318
#> 2 0.120 0.079 0.21 -0.0426
#> 3 0.137 -0.020 0.15 -0.0056
#> 4 0.121 0.063 0.17 -0.0186
#> 5 0.125 0.049 0.23 0.1551
#>
#> , , variable = b_zBase
#>
#> chain
#> iteration 1 2 3 4
#> 1 0.81 0.74 0.65 0.69
#> 2 0.88 0.79 0.79 0.77
#> 3 0.87 0.72 0.78 0.72
#> 4 0.85 0.70 0.82 0.87
#> 5 0.75 0.51 0.85 0.74
#>
#> , , variable = b_Trt1
#>
#> chain
#> iteration 1 2 3 4
#> 1 -0.43 -0.31 -0.35 -0.41
#> 2 -0.23 -0.13 -0.26 -0.44
#> 3 -0.15 -0.20 -0.33 -0.54
#> 4 -0.32 -0.16 -0.24 -0.43
#> 5 -0.22 0.12 -0.25 -0.27
#>
#> # ... with 995 more iterations, and 64 more variables
posterior::summarize_draws(draws_fit)
#> # A tibble: 68 × 10
#> variable mean median sd mad q5 q95 rhat ess_bulk
#> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 b_Intercept 1.77 1.78 0.114 0.111 1.58 1.96 1.01 689.
#> 2 b_zAge 0.0954 0.0925 0.0860 0.0859 -0.0426 0.239 1.01 819.
#> 3 b_zBase 0.696 0.697 0.118 0.117 0.500 0.888 1.00 730.
#> 4 b_Trt1 -0.269 -0.268 0.162 0.163 -0.538 -0.0141 1.01 744.
#> 5 b_zBase:Trt1 0.0604 0.0625 0.159 0.160 -0.198 0.326 1.00 933.
#> 6 sd_patient__Int… 0.583 0.577 0.0704 0.0691 0.478 0.708 1.00 779.
#> 7 Intercept 1.63 1.63 0.0812 0.0816 1.50 1.76 1.00 615.
#> 8 r_patient[1,Int… -0.0516 -0.0485 0.270 0.275 -0.502 0.379 1.00 2504.
#> 9 r_patient[2,Int… -0.0340 -0.0293 0.267 0.271 -0.480 0.388 1.00 2583.
#> 10 r_patient[3,Int… -0.0713 -0.0732 0.300 0.301 -0.572 0.412 1.00 2793.
#> # ℹ 58 more rows
#> # ℹ 1 more variable: ess_tail <dbl>
# extract only certain variables
as_draws_array(fit, variable = "r_patient")
#> # A draws_array: 1000 iterations, 4 chains, and 59 variables
#> , , variable = r_patient[1,Intercept]
#>
#> chain
#> iteration 1 2 3 4
#> 1 0.419 0.077 -0.26 -0.27
#> 2 0.085 0.135 0.20 -0.15
#> 3 0.063 0.501 0.03 -0.22
#> 4 -0.095 -0.105 -0.46 0.11
#> 5 -0.098 0.024 -0.64 -0.16
#>
#> , , variable = r_patient[2,Intercept]
#>
#> chain
#> iteration 1 2 3 4
#> 1 0.18 0.087 0.045 -0.636
#> 2 0.35 -0.059 -0.120 0.354
#> 3 0.41 0.329 0.091 0.167
#> 4 0.27 -0.095 0.249 -0.308
#> 5 0.10 0.098 -0.201 0.032
#>
#> , , variable = r_patient[3,Intercept]
#>
#> chain
#> iteration 1 2 3 4
#> 1 0.29 -0.23 -0.512 -0.087
#> 2 0.15 0.26 -0.088 -0.147
#> 3 0.21 -0.28 0.141 -0.120
#> 4 0.68 -0.03 0.167 -0.058
#> 5 0.65 -0.14 0.126 0.112
#>
#> , , variable = r_patient[4,Intercept]
#>
#> chain
#> iteration 1 2 3 4
#> 1 -0.025 -0.085 -0.289 0.0640
#> 2 0.155 0.124 -0.054 -0.0196
#> 3 -0.159 0.354 -0.329 0.0728
#> 4 -0.119 0.121 -0.033 -0.6475
#> 5 0.221 0.031 -0.118 -0.0069
#>
#> # ... with 995 more iterations, and 55 more variables
as_draws_array(fit, variable = "^b_", regex = TRUE)
#> # A draws_array: 1000 iterations, 4 chains, and 5 variables
#> , , variable = b_Intercept
#>
#> chain
#> iteration 1 2 3 4
#> 1 1.7 1.8 1.9 2.0
#> 2 1.6 1.7 1.8 1.9
#> 3 1.6 1.7 1.8 2.0
#> 4 1.6 1.7 1.9 1.9
#> 5 1.7 1.6 1.8 1.7
#>
#> , , variable = b_zAge
#>
#> chain
#> iteration 1 2 3 4
#> 1 0.075 0.068 0.14 -0.0318
#> 2 0.120 0.079 0.21 -0.0426
#> 3 0.137 -0.020 0.15 -0.0056
#> 4 0.121 0.063 0.17 -0.0186
#> 5 0.125 0.049 0.23 0.1551
#>
#> , , variable = b_zBase
#>
#> chain
#> iteration 1 2 3 4
#> 1 0.81 0.74 0.65 0.69
#> 2 0.88 0.79 0.79 0.77
#> 3 0.87 0.72 0.78 0.72
#> 4 0.85 0.70 0.82 0.87
#> 5 0.75 0.51 0.85 0.74
#>
#> , , variable = b_Trt1
#>
#> chain
#> iteration 1 2 3 4
#> 1 -0.43 -0.31 -0.35 -0.41
#> 2 -0.23 -0.13 -0.26 -0.44
#> 3 -0.15 -0.20 -0.33 -0.54
#> 4 -0.32 -0.16 -0.24 -0.43
#> 5 -0.22 0.12 -0.25 -0.27
#>
#> # ... with 995 more iterations, and 1 more variables
# extract posterior draws in a random variables format
as_draws_rvars(fit)
#> # A draws_rvars: 1000 iterations, 4 chains, and 10 variables
#> $b_Intercept: rvar<1000,4>[1] mean ± sd:
#> [1] 1.8 ± 0.11
#>
#> $b_zAge: rvar<1000,4>[1] mean ± sd:
#> [1] 0.095 ± 0.086
#>
#> $b_zBase: rvar<1000,4>[1] mean ± sd:
#> [1] 0.7 ± 0.12
#>
#> $b_Trt1: rvar<1000,4>[1] mean ± sd:
#> [1] -0.27 ± 0.16
#>
#> $b_zBase:Trt1: rvar<1000,4>[1] mean ± sd:
#> [1] 0.06 ± 0.16
#>
#> $sd_patient__Intercept: rvar<1000,4>[1] mean ± sd:
#> [1] 0.58 ± 0.07
#>
#> $Intercept: rvar<1000,4>[1] mean ± sd:
#> [1] 1.6 ± 0.081
#>
#> $r_patient: rvar<1000,4>[59,1] mean ± sd:
#> Intercept
#> [1,] -0.0516 ± 0.27
#> [2,] -0.0340 ± 0.27
#> [3,] -0.0713 ± 0.30
#> [4,] -0.1086 ± 0.29
#> [5,] 0.0315 ± 0.24
#> [6,] 0.0063 ± 0.23
#> [7,] -0.2011 ± 0.28
#> [8,] 0.5961 ± 0.25
#> [9,] -0.0025 ± 0.24
#> [10,] 0.8063 ± 0.22
#> [11,] 0.3449 ± 0.21
#> [12,] 0.2190 ± 0.21
#> [13,] 0.0080 ± 0.27
#> [14,] 0.1571 ± 0.20
#> [15,] -0.4845 ± 0.29
#> [16,] -0.7345 ± 0.25
#> [17,] -0.7437 ± 0.32
#> [18,] -0.4594 ± 0.37
#> [19,] -0.1631 ± 0.26
#> [20,] -0.0058 ± 0.27
#> [21,] -0.0476 ± 0.27
#> [22,] 0.1162 ± 0.28
#> [23,] -0.2569 ± 0.27
#> [24,] 0.3284 ± 0.22
#> [25,] 1.1310 ± 0.17
#> [26,] -0.7133 ± 0.35
#> [27,] -0.1478 ± 0.31
#> [28,] 0.4598 ± 0.20
#> [29,] -0.2526 ± 0.25
#> [30,] 0.1567 ± 0.22
#> [31,] -0.3691 ± 0.33
#> [32,] 0.1736 ± 0.29
#> [33,] 0.4581 ± 0.28
#> [34,] -0.1982 ± 0.28
#> [35,] 1.3297 ± 0.16
#> [36,] 0.4055 ± 0.26
#> [37,] -0.0248 ± 0.31
#> [38,] -0.5493 ± 0.25
#> [39,] 0.2523 ± 0.22
#> [40,] -0.5377 ± 0.36
#> [41,] -0.5484 ± 0.33
#> [42,] -0.0830 ± 0.31
#> [43,] 0.7476 ± 0.19
#> [44,] 0.2891 ± 0.23
#> [45,] 0.4281 ± 0.22
#> [46,] -0.1836 ± 0.33
#> [47,] 0.4203 ± 0.20
#> [48,] -0.6977 ± 0.37
#> [49,] -0.4728 ± 0.49
#> [50,] -0.1247 ± 0.28
#> [51,] 0.1095 ± 0.22
#> [52,] -0.5858 ± 0.29
#> [53,] 0.7304 ± 0.19
#> [54,] -0.2793 ± 0.30
#> [55,] 0.1335 ± 0.26
#> [56,] 1.2501 ± 0.19
#> [57,] -0.6005 ± 0.32
#> [58,] -1.2529 ± 0.42
#> [59,] -0.1676 ± 0.31
#>
#> # ... with 2 more variables
# }