The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.

Random-Effects

Setup

library(bvarnet)
library(qgraph)

Data

data(studentlife)

There is some missing data in the dataset. The models default options handle this by themselves. For a further elaboration on this, you can read vignette("Missing-Data").

Random-Effects Arguments

For the following tutorial we will extend the network containing the the variables anxious, calm, conventional, critical, and dependable from the Vignette(bvarnet). To introduce a multilevel structure to our model, we can use the two arguments: re_cols and re_temporal.

The re_cols argument accepts all variables that we specify in x_cols and "Intercept", to introduce random effects on the baseline model. The re_temporal argument is a binary TRUE/FALSE indicator to introduce random effects on the temporal structure.

Model Estimation

To estimate a model with random effects, we can use the following code, where we specify the re_cols = c("Intercept") to introduce random effects on the baseline model, and re_temporal = TRUE to introduce random effects on the temporal structure:

fit <- bvar(
  id_col = "id",
  time_col = "day",
  y_cols = c("anxious", "calm", "conventional", "critical", "dependable"),
  x_cols = NULL,
  re_cols = c("Intercept"),
  re_temporal = TRUE,
  K = 1,
  data = studentlife,
  family = c("ordinal"),
  iter = 4000,
  warmup = 1000,
  chains = 4,
  cores = 4,
  seed = 1337
)

Model Output

print(fit)
#> BVAR Network fit
#> ======================================== 
#> Family:      ordinal
#> Outcomes (p): 5 
#> Lags (K):     1 
#> Fixed eff.:   0 
#> Random eff.:  6 
#> Observations: 147 
#> Rhat max:    1.002
#> Divergences: 0
#> Priors:       beta ~ Normal(0, 1), phi ~ Normal(0, 0.5), sd_u ~ Half-Normal(0, 1), kappa ~ Normal(0, 2) (all defaults)
#> Total time:  42.9 sec
#> ========================================
summary(fit)
#> BVAR Network Summary
#> ================================================== 
#> Family: ordinal | p=5 | K=1 | n=147
#> Rhat max: 1.002 | Divergences: 0
#> 
#> --- Autoregressive ---
#>  predictor         outcome      mean   median q5     q95   rhat  ess_bulk  ess_tail 
#>  lag1_anxious      anxious      -0.150 -0.147 -0.553 0.242 1.000 12127.960 11495.325
#>  lag1_calm         calm         -0.164 -0.165 -0.518 0.187 1.001  9331.043 10426.126
#>  lag1_conventional conventional  0.097  0.096 -0.326 0.518 1.000  9984.664 10959.196
#>  lag1_critical     critical      0.020  0.043 -0.475 0.453 1.001  6178.876  9401.899
#>  lag1_dependable   dependable    0.434  0.434  0.075 0.793 1.000 11031.359 11762.321
#> 
#> 
#> --- Cross-lagged ---
#>  predictor         outcome      mean   median q5     q95   rhat  ess_bulk  ess_tail 
#>  lag1_calm         anxious      -0.060 -0.058 -0.421 0.300 1.000  9860.096 10454.267
#>  lag1_conventional anxious      -0.147 -0.143 -0.580 0.265 1.000 10649.275 11114.092
#>  lag1_critical     anxious       0.429  0.432 -0.003 0.842 1.000  7860.406  9727.691
#>  lag1_dependable   anxious      -0.029 -0.028 -0.380 0.316 1.000  8579.806 10701.049
#>  lag1_anxious      calm          0.009  0.007 -0.358 0.385 1.000 10943.302 10812.556
#>  lag1_conventional calm          0.114  0.113 -0.269 0.504 1.000  9787.858  9782.278
#>  lag1_critical     calm         -0.123 -0.125 -0.461 0.215 1.001 11641.220 11337.815
#>  lag1_dependable   calm          0.171  0.170 -0.147 0.497 1.000 10875.083 11537.899
#>  lag1_anxious      conventional -0.176 -0.178 -0.590 0.243 1.000 11803.823 11360.979
#>  lag1_calm         conventional  0.004  0.004 -0.377 0.380 1.001  8710.923  9393.587
#> 
#> ... 10 more rows. Use extract_temporal(fit, effect = "cl") for full output.
#> 
#> --- Random Effect SD ---
#>  predictor    outcome      mean  median q5    q95   rhat  ess_bulk ess_tail
#>  anxious      Intercept    1.465 1.444  0.978 2.028 1.002 5265.490 7743.781
#>  calm         Intercept    1.178 1.155  0.780 1.658 1.001 5785.705 8819.844
#>  conventional Intercept    1.127 1.106  0.737 1.590 1.001 6009.031 7327.977
#>  critical     Intercept    1.363 1.336  0.858 1.974 1.001 4875.025 8113.773
#>  dependable   Intercept    0.966 0.944  0.583 1.422 1.000 5336.862 8154.476
#>  anxious      lag1_anxious 0.202 0.169  0.016 0.503 1.001 5809.229 6993.924
#>  calm         lag1_anxious 0.161 0.129  0.012 0.419 1.001 6742.384 6608.842
#>  conventional lag1_anxious 0.254 0.212  0.019 0.633 1.000 5586.614 6996.407
#>  critical     lag1_anxious 0.299 0.256  0.023 0.726 1.000 4817.791 6684.910
#>  dependable   lag1_anxious 0.299 0.240  0.023 0.768 1.002 4628.541 7090.355
#> 
#> ... 20 more rows. Use extract_random_effects(fit) for full output.
#> 
#> --- Threshold ---
#>  predictor               outcome mean   median q5     q95    rhat  ess_bulk  ess_tail 
#>  kappa(anxious, c1)      —       -2.099 -2.074 -2.909 -1.371 1.000  5356.457  8025.435
#>  kappa(calm, c1)         —       -2.226 -2.189 -3.144 -1.437 1.001  7422.138 10360.114
#>  kappa(conventional, c1) —       -2.035 -2.006 -2.892 -1.284 1.000  6615.821  9820.399
#>  kappa(critical, c1)     —       -0.265 -0.259 -0.890  0.333 1.000  5610.687  7665.892
#>  kappa(dependable, c1)   —       -2.505 -2.469 -3.507 -1.609 1.000  8289.672  9571.903
#>  kappa(anxious, c2)      —        0.446  0.444 -0.186  1.079 1.001  6012.700  9350.799
#>  kappa(calm, c2)         —       -1.506 -1.497 -2.166 -0.891 1.000  8043.093  9262.475
#>  kappa(conventional, c2) —       -1.258 -1.252 -1.867 -0.678 1.000  8082.262 10988.755
#>  kappa(critical, c2)     —        1.169  1.157  0.561  1.821 1.000  6447.810  9636.228
#>  kappa(dependable, c2)   —       -1.241 -1.230 -1.852 -0.665 1.000 11358.657 12787.251
#> 
#> ... 10 more rows. Use extract_param(fit, type = "Threshold") for full output.
#> 
#> ==================================================
#> Use extract_param() or extract_param(fit, type = "...") for the full parameter table.
#> Use extract_network_matrix() for the temporal network matrix.

Extracting Random Effects

Additionally to the extract_* functions that we already described in Vignette(bvarnet), we can use the extract_random_effects() function to only extract the random effects:

re <- extract_random_effects(fit)
re
#>                type    predictor           outcome      mean    median          q5       q95      rhat ess_bulk ess_tail
#> 1  Random Effect SD      anxious         Intercept 1.4652817 1.4439362 0.977649331 2.0282597 1.0015907 5265.490 7743.781
#> 2  Random Effect SD         calm         Intercept 1.1783653 1.1549465 0.779576993 1.6583403 1.0009675 5785.705 8819.844
#> 3  Random Effect SD conventional         Intercept 1.1268582 1.1063721 0.736724058 1.5901623 1.0006901 6009.031 7327.977
#> 4  Random Effect SD     critical         Intercept 1.3634879 1.3362195 0.857573136 1.9744304 1.0006644 4875.025 8113.773
#> 5  Random Effect SD   dependable         Intercept 0.9660984 0.9443749 0.582831873 1.4222424 1.0004303 5336.862 8154.476
#> 6  Random Effect SD      anxious      lag1_anxious 0.2020052 0.1685053 0.016233745 0.5032068 1.0006659 5809.229 6993.924
#> 7  Random Effect SD         calm      lag1_anxious 0.1609254 0.1289984 0.012195480 0.4193622 1.0011414 6742.384 6608.842
#> 8  Random Effect SD conventional      lag1_anxious 0.2538834 0.2116468 0.019302953 0.6331248 1.0003903 5586.614 6996.407
#> 9  Random Effect SD     critical      lag1_anxious 0.2986767 0.2556347 0.022967897 0.7264043 1.0003753 4817.791 6684.910
#> 10 Random Effect SD   dependable      lag1_anxious 0.2987636 0.2399345 0.023133795 0.7682914 1.0021471 4628.541 7090.355
#> 11 Random Effect SD      anxious         lag1_calm 0.1394255 0.1112678 0.010881843 0.3615685 1.0002288 6431.470 6540.138
#> 12 Random Effect SD         calm         lag1_calm 0.1711120 0.1428554 0.013783058 0.4292299 1.0004208 4667.061 6146.463
#> 13 Random Effect SD conventional         lag1_calm 0.1648274 0.1344180 0.013319257 0.4176716 1.0006599 5273.898 7165.568
#> 14 Random Effect SD     critical         lag1_calm 0.1421269 0.1124673 0.010267661 0.3735351 1.0001253 7205.369 7004.134
#> 15 Random Effect SD   dependable         lag1_calm 0.1983639 0.1632243 0.015700375 0.5037090 1.0003510 4551.673 5418.571
#> 16 Random Effect SD      anxious lag1_conventional 0.1951214 0.1662170 0.016230538 0.4777358 1.0002119 5611.433 7220.911
#> 17 Random Effect SD         calm lag1_conventional 0.1382549 0.1102174 0.010239865 0.3621581 1.0015230 6263.953 6290.534
#> 18 Random Effect SD conventional lag1_conventional 0.1890291 0.1529822 0.014335658 0.4863923 1.0003510 5346.015 6306.486
#> 19 Random Effect SD     critical lag1_conventional 0.2409120 0.2021247 0.019716436 0.5921124 1.0004442 4726.675 5829.030
#> 20 Random Effect SD   dependable lag1_conventional 0.2495825 0.2088717 0.020474920 0.6229940 1.0006090 4476.032 7940.819
#> 21 Random Effect SD      anxious     lag1_critical 0.3066851 0.2681832 0.027216169 0.7317527 1.0005179 4969.800 6305.771
#> 22 Random Effect SD         calm     lag1_critical 0.1681908 0.1354386 0.012202660 0.4435305 1.0004330 7164.754 7388.659
#> 23 Random Effect SD conventional     lag1_critical 0.2692275 0.2309014 0.020660210 0.6603602 1.0001849 5570.973 5814.862
#> 24 Random Effect SD     critical     lag1_critical 0.4391420 0.4077634 0.053331996 0.9286383 1.0005797 3702.812 3961.537
#> 25 Random Effect SD   dependable     lag1_critical 0.2822168 0.2289254 0.021953689 0.7283563 0.9999966 5497.042 7410.768
#> 26 Random Effect SD      anxious   lag1_dependable 0.1979930 0.1712029 0.017472326 0.4800424 1.0009843 4905.884 7042.269
#> 27 Random Effect SD         calm   lag1_dependable 0.1325212 0.1072447 0.009313681 0.3400509 1.0007978 5465.635 5488.219
#> 28 Random Effect SD conventional   lag1_dependable 0.1451051 0.1148876 0.010273553 0.3802055 1.0003109 6261.696 6855.308
#> 29 Random Effect SD     critical   lag1_dependable 0.1577871 0.1263587 0.011028128 0.4126913 1.0001326 6949.019 6812.282
#> 30 Random Effect SD   dependable   lag1_dependable 0.2270672 0.1850662 0.017049599 0.5886999 1.0005338 4024.393 6203.294

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.