Find which chains to invert by checking the sum of the squared deviations between the first chain and each other chain.
find_inverted_chains(model, trend = 1, plot = FALSE)
A Stan model, rstanfit
object
Which trend to check
Logical: should a plot of the trend for each chain be made?
Defaults to FALSE
invert_chains
set.seed(2)
s <- sim_dfa(num_trends = 2)
set.seed(1)
m <- fit_dfa(y = s$y_sim, num_trends = 1, iter = 30, chains = 2)
#>
#> SAMPLING FOR MODEL 'dfa' NOW (CHAIN 1).
#> Chain 1:
#> Chain 1: Gradient evaluation took 3.6e-05 seconds
#> Chain 1: 1000 transitions using 10 leapfrog steps per transition would take 0.36 seconds.
#> Chain 1: Adjust your expectations accordingly!
#> Chain 1:
#> Chain 1:
#> Chain 1: WARNING: No variance estimation is
#> Chain 1: performed for num_warmup < 20
#> Chain 1:
#> Chain 1: Iteration: 1 / 30 [ 3%] (Warmup)
#> Chain 1: Iteration: 3 / 30 [ 10%] (Warmup)
#> Chain 1: Iteration: 6 / 30 [ 20%] (Warmup)
#> Chain 1: Iteration: 9 / 30 [ 30%] (Warmup)
#> Chain 1: Iteration: 12 / 30 [ 40%] (Warmup)
#> Chain 1: Iteration: 15 / 30 [ 50%] (Warmup)
#> Chain 1: Iteration: 16 / 30 [ 53%] (Sampling)
#> Chain 1: Iteration: 18 / 30 [ 60%] (Sampling)
#> Chain 1: Iteration: 21 / 30 [ 70%] (Sampling)
#> Chain 1: Iteration: 24 / 30 [ 80%] (Sampling)
#> Chain 1: Iteration: 27 / 30 [ 90%] (Sampling)
#> Chain 1: Iteration: 30 / 30 [100%] (Sampling)
#> Chain 1:
#> Chain 1: Elapsed Time: 0.008 seconds (Warm-up)
#> Chain 1: 0.007 seconds (Sampling)
#> Chain 1: 0.015 seconds (Total)
#> Chain 1:
#>
#> SAMPLING FOR MODEL 'dfa' NOW (CHAIN 2).
#> Chain 2:
#> Chain 2: Gradient evaluation took 3.1e-05 seconds
#> Chain 2: 1000 transitions using 10 leapfrog steps per transition would take 0.31 seconds.
#> Chain 2: Adjust your expectations accordingly!
#> Chain 2:
#> Chain 2:
#> Chain 2: WARNING: No variance estimation is
#> Chain 2: performed for num_warmup < 20
#> Chain 2:
#> Chain 2: Iteration: 1 / 30 [ 3%] (Warmup)
#> Chain 2: Iteration: 3 / 30 [ 10%] (Warmup)
#> Chain 2: Iteration: 6 / 30 [ 20%] (Warmup)
#> Chain 2: Iteration: 9 / 30 [ 30%] (Warmup)
#> Chain 2: Iteration: 12 / 30 [ 40%] (Warmup)
#> Chain 2: Iteration: 15 / 30 [ 50%] (Warmup)
#> Chain 2: Iteration: 16 / 30 [ 53%] (Sampling)
#> Chain 2: Iteration: 18 / 30 [ 60%] (Sampling)
#> Chain 2: Iteration: 21 / 30 [ 70%] (Sampling)
#> Chain 2: Iteration: 24 / 30 [ 80%] (Sampling)
#> Chain 2: Iteration: 27 / 30 [ 90%] (Sampling)
#> Chain 2: Iteration: 30 / 30 [100%] (Sampling)
#> Chain 2:
#> Chain 2: Elapsed Time: 0.007 seconds (Warm-up)
#> Chain 2: 0.003 seconds (Sampling)
#> Chain 2: 0.01 seconds (Total)
#> Chain 2:
#> Warning: There were 2 chains where the estimated Bayesian Fraction of Missing Information was low. See
#> https://mc-stan.org/misc/warnings.html#bfmi-low
#> Warning: Examine the pairs() plot to diagnose sampling problems
#> Warning: The largest R-hat is 3.12, indicating chains have not mixed.
#> Running the chains for more iterations may help. See
#> https://mc-stan.org/misc/warnings.html#r-hat
#> Warning: Bulk Effective Samples Size (ESS) is too low, indicating posterior means and medians may be unreliable.
#> Running the chains for more iterations may help. See
#> https://mc-stan.org/misc/warnings.html#bulk-ess
#> Warning: Tail Effective Samples Size (ESS) is too low, indicating posterior variances and tail quantiles may be unreliable.
#> Running the chains for more iterations may help. See
#> https://mc-stan.org/misc/warnings.html#tail-ess
#> Inverting chains 0 for trend 1
# chains were already inverted, but we can redo that, as an example, with:
find_inverted_chains(m$model, plot = TRUE)
#> [1] 0