Fit the Discrete-Time Vector Autoregressive Model By ID (Adaptive Recovery | 1000 Measurement Occasions)
Ivan Jacob Agaloos Pesigan
2025-10-22
Source:vignettes/adaptive-recovery-1000.Rmd
      adaptive-recovery-1000.RmdDynamics Description
The Adaptive Recovery process reflects an asymmetric regulatory dynamic between two latent constructsβsuch as stress and copingβwhere activation in one system initiates a corrective response in the other. Specifically, stress tends to increase coping responses, while coping reduces subsequent stress, producing a negative feedback loop that promotes stability and recovery.
Individuals differ in the strength and balance of these cross-regulatory influences, leading to variability in how quickly they return to equilibrium after disturbances. The process noise covariance is moderate and negatively correlated, representing compensatory fluctuations where increases in stress are often accompanied by decreases in coping, while measurement error variance is small and symmetric across variables.
This configuration captures a psychologically meaningful stress-response mechanism, characterized by self-correcting dynamics that stabilize the system over time through coordinated but asymmetric influences.
Model
The measurement model is given by where , , and are random variables and , , and are model parameters. represents a vector of observed random variables, a vector of latent random variables, and a vector of random measurement errors, at time and individual . denotes a matrix of factor loadings, and the covariance matrix of that is invariant across individuals. In this model, is an identity matrix and is a symmetric matrix.
The dynamic structure is given by where , , and are random variables, and , and are model parameters. Here, is a vector of latent variables at time and individual , represents a vector of latent variables at time and individual , and represents a vector of dynamic noise at time and individual . is a matrix of autoregression and cross regression coefficients for individual , and the covariance matrix of that is invariant across all individuals. In this model, is a symmetric matrix.
Data Generation
Notation
Let be the number of time points and be the number of individuals. We simulate a total of time points per individual, discarding the first as burn-in. The analysis uses the final measurement occasions.
Let the measurement model intercept vector be normally distributed with the following means
and covariance matrix
Let the factor loadings matrix be given by
Let the measurement error covariance matrix be given by
Let the initial condition be given by
and are functions of and .
Let the transition matrix be normally distributed with the following means
and covariance matrix
Let the intercept vector be fixed to a zero vector.
The SimNuN and SimBetaN functions from the
simStateSpace package generate random intercept vectors and
transition matrices from the multivariate normal distribution. Note that
the SimBetaN function generates transition matrices that
are weakly stationary with an option to set lower and upper bounds.
Let the dynamic process noise be given by
R Function Arguments
n
#> [1] 100
time
#> [1] 11000
burnin
#> [1] 10000
# first mu0 in the list of length n
mu0[[1]]
#> [1] 0 0
# first sigma0 in the list of length n
sigma0[[1]]
#>            [,1]       [,2]
#> [1,]  0.3399277 -0.0557114
#> [2,] -0.0557114  1.1620385
# first sigma0_l in the list of length n
sigma0_l[[1]] # sigma0_l <- t(chol(sigma0))
#>             [,1]     [,2]
#> [1,]  0.58303323 0.000000
#> [2,] -0.09555442 1.073735
alpha
#> [[1]]
#> [1] 0 0
# first beta in the list of length n
beta[[1]]
#>           [,1]       [,2]
#> [1,] 0.5159622 0.01359474
#> [2,] 0.3202660 0.89904484
# first psi in the list of length n
psi[[1]]
#>       [,1]  [,2]
#> [1,]  0.25 -0.10
#> [2,] -0.10  0.22
psi_l[[1]] # psi_l <- t(chol(psi))
#>      [,1]      [,2]
#> [1,]  0.5 0.0000000
#> [2,] -0.2 0.4242641
# first nu in the list of length n
nu[[1]]
#> [1] 1.094299 0.100988
lambda
#> [[1]]
#>      [,1] [,2]
#> [1,]    1    0
#> [2,]    0    1
# first theta in the list of length n
theta[[1]]
#>      [,1] [,2]
#> [1,]  0.5  0.0
#> [2,]  0.0  0.5
theta_l[[1]] # theta_l <- t(chol(theta))
#>           [,1]      [,2]
#> [1,] 0.7071068 0.0000000
#> [2,] 0.0000000 0.7071068Visualizing the Dynamics Without Process Noise and Measurement Error (n = 5 with Different Initial Condition)


Using the SimSSMIVary Function from the
simStateSpace Package to Simulate Data
library(simStateSpace)
sim <- SimSSMIVary(
  n = n,
  time = time,
  mu0 = mu0,
  sigma0_l = sigma0_l,
  alpha = alpha,
  beta = beta,
  psi_l = psi_l,
  nu = nu,
  lambda = lambda,
  theta_l = theta_l
)
data <- as.data.frame(sim, burnin = burnin)
head(data)
#>   id time        y1         y2
#> 1  1    0 1.5903935 -1.0269628
#> 2  1    1 0.9288686  0.4296857
#> 3  1    2 2.0010930 -1.2365114
#> 4  1    3 2.2961315 -1.7734153
#> 5  1    4 1.9932917 -1.0469535
#> 6  1    5 1.4911727 -1.1539057
plot(sim, burnin = burnin)

Model Fitting
The FitDTVARMxID function fits a DT-VAR model on each
individual
.
To set up the estimation, we first provide starting
values for each parameter matrix.
Autoregressive Parameters (beta)
We initialize the autoregressive coefficient matrix with the true values used in simulation.
beta_values <- betaLDLβ-parameterized covariance matrices
Covariances such as psi and theta are
estimated using the LDLβ decomposition of a positive definite covariance
matrix. The decomposition expresses a covariance matrix
as
where:
- 
is a strictly lower-triangular matrix of free parameters
(l_mat_strict),
 
- 
is the identity matrix,
 
- 
is an unconstrained vector,
 
- ensures strictly positive diagonal entries.
The LDL() function extracts this decomposition from a
positive definite covariance matrix. It returns:
- 
d_uc: unconstrained diagonal parameters, equal toInvSoftplus(d_vec),
 
- 
d_vec: diagonal entries, equal toSoftplus(d_uc),
 
- 
l_mat_strict: the strictly lower-triangular factor.
sigma <- matrix(
  data = c(1.0, 0.5, 0.5, 1.0),
  nrow = 2,
  ncol = 2
)
ldl_sigma <- LDL(sigma)
d_uc <- ldl_sigma$d_uc
l_mat_strict <- ldl_sigma$l_mat_strict
I <- diag(2)
sigma_reconstructed <- (l_mat_strict + I) %*% diag(log1p(exp(d_uc)), 2) %*% t(l_mat_strict + I)
sigma_reconstructed
#>      [,1] [,2]
#> [1,]  1.0  0.5
#> [2,]  0.5  1.0Process Noise Covariance Matrix (psi)
Starting values for the process noise covariance matrix are given below, with corresponding LDLβ parameters.
psi_values <- psi[[1]]
ldl_psi_values <- LDL(psi_values)
psi_d_values <- ldl_psi_values$d_uc
psi_l_values <- ldl_psi_values$l_mat_strict
psi_d_values
#> [1] -1.258692 -1.623449
psi_l_values
#>      [,1] [,2]
#> [1,]  0.0    0
#> [2,] -0.4    0Measurement Error Covariance Matrix (theta)
Starting values for the measurement error covariance matrix are given below, with corresponding LDLβ parameters.
theta_values <- theta[[1]]
ldl_theta_values <- LDL(theta_values)
theta_d_values <- ldl_theta_values$d_uc
theta_l_values <- ldl_theta_values$l_mat_strict
theta_d_values
#> [1] -0.4327521 -0.4327521
theta_l_values
#>      [,1] [,2]
#> [1,]    0    0
#> [2,]    0    0Initial mean vector (mu_0) and covariance matrix
(sigma_0)
The initial mean vector
and covariance matrix
are fixed using mu0 and sigma0.
mu0_values <- mu0
FitDTVARMxID
fit <- FitDTVARMxID(
  data = data,
  observed = c("y1", "y2"),
  id = "id",
  beta_values = beta_values,
  psi_d_values = psi_d_values,
  psi_l_values = psi_l_values,
  nu_values = nu_values,
  theta_d_values = theta_d_values,
  mu0_values = mu0_values,
  sigma0_d_values = sigma0_d_values,
  sigma0_l_values = sigma0_l_values,
  ncores = parallel::detectCores()
)Parameter estimates
summary(fit, converged = FALSE)
#> Call:
#> FitDTVARMxID(data = data, observed = c("y1", "y2"), id = "id", 
#>     beta_values = beta_values, psi_d_values = psi_d_values, psi_l_values = psi_l_values, 
#>     nu_values = nu_values, theta_d_values = theta_d_values, mu0_values = mu0_values, 
#>     sigma0_d_values = sigma0_d_values, sigma0_l_values = sigma0_l_values, 
#>     ncores = parallel::detectCores())
#> 
#> Estimated paramaters per individual.
#>                              beta_1_1 beta_2_1 beta_1_2 beta_2_2  nu_1_1
#> FitDTVARMxID_DTVAR_ID1.Rds     0.4835   0.2724  -0.0092   0.9035  1.0596
#> FitDTVARMxID_DTVAR_ID2.Rds     0.5517   0.1510  -0.2299   0.9383  1.4774
#> FitDTVARMxID_DTVAR_ID3.Rds     0.6099   0.4508  -0.3274   0.7590  0.7229
#> FitDTVARMxID_DTVAR_ID4.Rds     0.5829   0.3336  -0.4513   0.9851  0.2571
#> FitDTVARMxID_DTVAR_ID5.Rds     0.6467   0.1105  -0.2029   0.6532  1.4128
#> FitDTVARMxID_DTVAR_ID6.Rds     0.5801   0.4172  -0.1657   0.8152  1.3294
#> FitDTVARMxID_DTVAR_ID7.Rds     0.5795   0.4216  -0.1316   0.7647  0.4208
#> FitDTVARMxID_DTVAR_ID8.Rds     0.1365   0.0127  -0.3558   0.8014  0.7184
#> FitDTVARMxID_DTVAR_ID9.Rds     0.7393   0.3765  -0.2137   0.7689  0.3632
#> FitDTVARMxID_DTVAR_ID10.Rds    0.0893  -0.0188  -0.5698   0.8472  0.7099
#> FitDTVARMxID_DTVAR_ID11.Rds    0.6348   0.1953  -0.4315   0.6570  1.0072
#> FitDTVARMxID_DTVAR_ID12.Rds    0.8119   0.4634  -0.1841   0.6549  0.8243
#> FitDTVARMxID_DTVAR_ID13.Rds    0.6352   0.3123  -0.1815   0.7702  0.0686
#> FitDTVARMxID_DTVAR_ID14.Rds    0.1330   0.1563  -0.6858   0.8156  1.1480
#> FitDTVARMxID_DTVAR_ID15.Rds    0.6405   0.3031  -0.1096   0.5090  0.4339
#> FitDTVARMxID_DTVAR_ID16.Rds    0.3736   0.3441  -0.1026   0.8716  0.1558
#> FitDTVARMxID_DTVAR_ID17.Rds    0.6129   0.3074  -0.3758   0.7265  0.8110
#> FitDTVARMxID_DTVAR_ID18.Rds    0.6496   0.3192  -0.5482   0.5907  1.1478
#> FitDTVARMxID_DTVAR_ID19.Rds    0.8818   0.4299  -0.2090   0.5241  0.1343
#> FitDTVARMxID_DTVAR_ID20.Rds    0.5221   0.1196  -0.1114   0.9095  1.1441
#> FitDTVARMxID_DTVAR_ID21.Rds    0.6317   0.2721  -0.2015   0.8117  0.6042
#> FitDTVARMxID_DTVAR_ID22.Rds    0.7539   0.4587  -0.6406   0.3893  0.6324
#> FitDTVARMxID_DTVAR_ID23.Rds    0.8481   0.5904  -0.0610   0.7144  0.7679
#> FitDTVARMxID_DTVAR_ID24.Rds    0.4321   0.2799  -0.2498   0.7338  0.9556
#> FitDTVARMxID_DTVAR_ID25.Rds    0.6483   0.3220  -0.1634   0.8565  0.7233
#> FitDTVARMxID_DTVAR_ID26.Rds    0.7967   0.4259  -0.3104   0.9054  0.5107
#> FitDTVARMxID_DTVAR_ID27.Rds    0.6519   0.3801  -0.2688   0.5880  0.5450
#> FitDTVARMxID_DTVAR_ID28.Rds    0.8298   0.1707  -0.0535   0.6979  0.6323
#> FitDTVARMxID_DTVAR_ID29.Rds    0.7296   0.4254  -0.3191   0.6394  0.6512
#> FitDTVARMxID_DTVAR_ID30.Rds    0.7310   0.3900  -0.2214   0.5933  0.9330
#> FitDTVARMxID_DTVAR_ID31.Rds    0.6911   0.0882  -0.3585   0.3500  1.3058
#> FitDTVARMxID_DTVAR_ID32.Rds    0.6013   0.2702  -0.0957   0.8385  0.8284
#> FitDTVARMxID_DTVAR_ID34.Rds    0.8296   0.3312  -0.2113   0.7851  1.2500
#> FitDTVARMxID_DTVAR_ID35.Rds    0.6181   0.0761  -0.1246   0.9130  1.4128
#> FitDTVARMxID_DTVAR_ID36.Rds    0.4934   0.2350  -0.3605   0.8805  1.1954
#> FitDTVARMxID_DTVAR_ID37.Rds    0.6055   0.1357  -0.2343   0.9062  0.7836
#> FitDTVARMxID_DTVAR_ID38.Rds    0.7149   0.2739  -0.1439   0.7491  0.4157
#> FitDTVARMxID_DTVAR_ID39.Rds    0.4013   0.2365  -0.3711   0.8854 -0.2082
#> FitDTVARMxID_DTVAR_ID40.Rds    0.5544   0.2058  -0.3085   0.9151  0.6711
#> FitDTVARMxID_DTVAR_ID41.Rds    0.7821   0.0997  -0.2382   0.8569  0.3421
#> FitDTVARMxID_DTVAR_ID42.Rds    0.6529   0.0518  -0.1129   0.6270  0.9538
#> FitDTVARMxID_DTVAR_ID43.Rds    0.6334   0.3214  -0.2340   0.3333  0.6318
#> FitDTVARMxID_DTVAR_ID44.Rds    0.5322   0.1859  -0.1232   0.3801  0.2650
#> FitDTVARMxID_DTVAR_ID45.Rds    0.5144   0.3249   0.0819   0.7529  0.9859
#> FitDTVARMxID_DTVAR_ID46.Rds    0.4974   0.1960  -0.4058   0.8728  1.0896
#> FitDTVARMxID_DTVAR_ID47.Rds    0.4736   0.1319  -0.6864   0.7530  0.9880
#> FitDTVARMxID_DTVAR_ID48.Rds    0.5971   0.1565  -0.2998   0.6967  1.2098
#> FitDTVARMxID_DTVAR_ID49.Rds    0.6321   0.1846  -0.2770   0.8078  0.3524
#> FitDTVARMxID_DTVAR_ID50.Rds    0.4502   0.2443  -0.5333   0.5529  0.9483
#> FitDTVARMxID_DTVAR_ID51.Rds    0.7095   0.2551  -0.4775   0.4479  0.2459
#> FitDTVARMxID_DTVAR_ID52.Rds    0.4321   0.1227  -0.4053   0.8718  0.6461
#> FitDTVARMxID_DTVAR_ID53.Rds    0.5379   0.0648  -0.2936   0.6400  0.4461
#> FitDTVARMxID_DTVAR_ID54.Rds    0.5998   0.3014  -0.2454   0.8932  0.9591
#> FitDTVARMxID_DTVAR_ID55.Rds    0.3822   0.1672  -0.3443   0.6700  0.4352
#> FitDTVARMxID_DTVAR_ID56.Rds    0.9277   0.4505  -0.4973   0.1810  0.3480
#> FitDTVARMxID_DTVAR_ID57.Rds    0.3433   0.1954  -0.4180   0.5693  1.0873
#> FitDTVARMxID_DTVAR_ID58.Rds    0.2056   0.0965  -0.5636   0.6632  0.8307
#> FitDTVARMxID_DTVAR_ID59.Rds    0.2836   0.2662  -0.6885   0.5876  0.8251
#> FitDTVARMxID_DTVAR_ID60.Rds    0.5681   0.2986  -0.2221   0.9217  0.6872
#> FitDTVARMxID_DTVAR_ID61.Rds    0.5045   0.2890  -0.1815   0.8829  0.9389
#> FitDTVARMxID_DTVAR_ID62.Rds    0.5717   0.1193   0.0454   0.7324  0.8812
#> FitDTVARMxID_DTVAR_ID63.Rds    0.6739  -0.0933  -0.1574   0.3983  0.5822
#> FitDTVARMxID_DTVAR_ID64.Rds    0.6295   0.1425  -0.1494   0.7935  1.0701
#> FitDTVARMxID_DTVAR_ID65.Rds    0.6930   0.2274  -0.4730   0.8178  1.1446
#> FitDTVARMxID_DTVAR_ID66.Rds    0.8964   0.3528  -0.3032   0.7630  0.4609
#> FitDTVARMxID_DTVAR_ID67.Rds    0.8713   0.5050  -0.3010   0.8272  0.5432
#> FitDTVARMxID_DTVAR_ID68.Rds    0.3287  -0.0063  -0.6364   0.5771  0.7026
#> FitDTVARMxID_DTVAR_ID69.Rds    0.6854   0.1960  -0.3342   0.7108  0.5643
#> FitDTVARMxID_DTVAR_ID70.Rds    1.0185   0.2684  -0.4811   0.4428  1.4306
#> FitDTVARMxID_DTVAR_ID71.Rds    0.6877   0.4338  -0.1509   0.7765  1.3552
#> FitDTVARMxID_DTVAR_ID72.Rds    0.7824   0.1287   0.0107   0.7846  1.3290
#> FitDTVARMxID_DTVAR_ID73.Rds    0.5780   0.1955  -0.5004   0.8006  1.0657
#> FitDTVARMxID_DTVAR_ID74.Rds    0.9243   0.2409  -0.4718   0.6144  0.7953
#> FitDTVARMxID_DTVAR_ID75.Rds    0.4198   0.2171  -0.5501   0.8059  0.3873
#> FitDTVARMxID_DTVAR_ID76.Rds    0.5509   0.2915  -0.3869   0.7774  1.2632
#> FitDTVARMxID_DTVAR_ID77.Rds    0.5598   0.1707  -0.4755   0.7876  0.8587
#> FitDTVARMxID_DTVAR_ID78.Rds    0.6848   0.1647  -0.5549   0.4562  0.5239
#> FitDTVARMxID_DTVAR_ID79.Rds    0.5998   0.2050  -0.3243   0.4594  0.7804
#> FitDTVARMxID_DTVAR_ID80.Rds    0.5592   0.2469  -0.1842   0.7965  0.2174
#> FitDTVARMxID_DTVAR_ID81.Rds    0.5581   0.3895  -0.4739   0.5904 -0.1591
#> FitDTVARMxID_DTVAR_ID82.Rds    0.4571   0.2552  -0.2892   0.6035  0.7205
#> FitDTVARMxID_DTVAR_ID83.Rds    0.2906   0.0196  -0.6117   0.7598  1.1884
#> FitDTVARMxID_DTVAR_ID84.Rds    0.5463   0.0777  -0.3106   0.4012  0.4700
#> FitDTVARMxID_DTVAR_ID85.Rds    0.4296   0.2933  -0.4361   1.0826  0.2078
#> FitDTVARMxID_DTVAR_ID86.Rds    0.1882  -0.1248  -0.3997   0.8620  0.6304
#> FitDTVARMxID_DTVAR_ID87.Rds    0.6340   0.3870  -0.4052   0.5848  0.9475
#> FitDTVARMxID_DTVAR_ID88.Rds    0.7742   0.2942  -0.2854   0.7164  1.0801
#> FitDTVARMxID_DTVAR_ID89.Rds    0.7261   0.2810  -0.1429   0.6464  0.8761
#> FitDTVARMxID_DTVAR_ID90.Rds    0.5840   0.0803  -0.1355   0.6925  1.4128
#> FitDTVARMxID_DTVAR_ID91.Rds    0.5485   0.2369  -0.3150   0.9661  1.0152
#> FitDTVARMxID_DTVAR_ID92.Rds    0.5686   0.1441  -0.2698   0.7188  1.0017
#> FitDTVARMxID_DTVAR_ID93.Rds    0.5240   0.3193  -0.5812   0.5513  0.8219
#> FitDTVARMxID_DTVAR_ID94.Rds    0.5989   0.0614  -0.4919   0.7503  1.0870
#> FitDTVARMxID_DTVAR_ID95.Rds    0.5656   0.4119  -0.0875   1.0100  0.7510
#> FitDTVARMxID_DTVAR_ID96.Rds    0.5035   0.1195  -0.3352   0.8245 -0.0661
#> FitDTVARMxID_DTVAR_ID97.Rds    0.7505   0.4111  -0.2096   0.5396  1.0806
#> FitDTVARMxID_DTVAR_ID98.Rds    0.5341   0.2385  -0.1749   0.5867  1.0116
#> FitDTVARMxID_DTVAR_ID99.Rds    0.5196   0.0914  -0.2976   0.9487  0.4048
#> FitDTVARMxID_DTVAR_ID100.Rds   0.7183   0.1769  -0.4899   0.4046  0.8205
#>                               nu_2_1 psi_l_2_1 psi_d_1_1 psi_d_2_1 theta_d_1_1
#> FitDTVARMxID_DTVAR_ID1.Rds   -0.2773   -0.2692   -1.3106   -1.7412     -0.5047
#> FitDTVARMxID_DTVAR_ID2.Rds    0.2897   -0.2040   -1.0632   -1.6073     -0.5208
#> FitDTVARMxID_DTVAR_ID3.Rds    0.2105   -0.3801   -1.5804   -2.2028     -0.3266
#> FitDTVARMxID_DTVAR_ID4.Rds   -0.0941   -0.3950   -1.1637   -1.4362     -0.4834
#> FitDTVARMxID_DTVAR_ID5.Rds    0.1877   -0.6635   -2.0843   -1.1776     -0.1106
#> FitDTVARMxID_DTVAR_ID6.Rds    0.4860   -0.4672   -1.2145   -1.3312     -0.5057
#> FitDTVARMxID_DTVAR_ID7.Rds    0.3245   -0.6183   -1.7421   -1.5025     -0.3687
#> FitDTVARMxID_DTVAR_ID8.Rds    0.5334   -0.1389    0.1935   -1.4573     -6.4874
#> FitDTVARMxID_DTVAR_ID9.Rds    0.2726   -0.4279   -1.1546   -1.9710     -0.4342
#> FitDTVARMxID_DTVAR_ID10.Rds   0.9368   -0.0575    0.1155   -1.4300    -15.2294
#> FitDTVARMxID_DTVAR_ID11.Rds   0.7892   -0.4401   -0.9756   -1.7629     -0.5378
#> FitDTVARMxID_DTVAR_ID12.Rds   0.3730   -0.4619   -1.0437   -1.7132     -0.3649
#> FitDTVARMxID_DTVAR_ID13.Rds   0.5496   -0.4763   -2.0127   -2.3383     -0.1224
#> FitDTVARMxID_DTVAR_ID14.Rds   0.4497   -0.3315   -0.5651   -1.8170     -1.0611
#> FitDTVARMxID_DTVAR_ID15.Rds   0.1239   -0.4638   -1.2239   -1.3570     -0.3622
#> FitDTVARMxID_DTVAR_ID16.Rds   0.2321   -0.4264   -1.5183   -1.9002     -0.3529
#> FitDTVARMxID_DTVAR_ID17.Rds   0.8275   -0.5847   -1.6343   -2.3415     -0.3753
#> FitDTVARMxID_DTVAR_ID18.Rds   1.1527   -0.3971   -1.5131   -1.3956     -0.2873
#> FitDTVARMxID_DTVAR_ID19.Rds   0.2174   -0.4974   -1.4829   -1.6614     -0.2162
#> FitDTVARMxID_DTVAR_ID20.Rds   1.0502   -0.5550   -1.4565   -1.8191     -0.3294
#> FitDTVARMxID_DTVAR_ID21.Rds   0.3637   -0.6049   -1.5003   -1.3124     -0.3098
#> FitDTVARMxID_DTVAR_ID22.Rds   0.4404   -0.6510   -2.0763   -1.7803     -0.2831
#> FitDTVARMxID_DTVAR_ID23.Rds   0.5114   -0.5387   -1.4609   -1.8348     -0.4536
#> FitDTVARMxID_DTVAR_ID24.Rds   0.6229   -0.3882   -1.3376   -1.3964     -0.5181
#> FitDTVARMxID_DTVAR_ID25.Rds   0.6326   -0.3620   -1.2081   -1.8187     -0.5053
#> FitDTVARMxID_DTVAR_ID26.Rds   0.5661   -0.5558   -1.1466   -1.8997     -0.3872
#> FitDTVARMxID_DTVAR_ID27.Rds   0.4294   -0.4390   -1.0715   -1.4357     -0.5609
#> FitDTVARMxID_DTVAR_ID28.Rds   0.6611   -0.6486   -1.8500   -1.7151     -0.2228
#> FitDTVARMxID_DTVAR_ID29.Rds   0.6859   -0.4836   -1.2292   -1.4877     -0.4376
#> FitDTVARMxID_DTVAR_ID30.Rds   0.2093   -0.4995   -1.2736   -1.8937     -0.4507
#> FitDTVARMxID_DTVAR_ID31.Rds   0.7301   -0.6019   -1.7505   -1.6940     -0.3613
#> FitDTVARMxID_DTVAR_ID32.Rds   0.7310   -0.5283   -1.4602   -2.3660     -0.3970
#> FitDTVARMxID_DTVAR_ID34.Rds   0.6375   -0.3067   -1.4114   -1.2955     -0.5260
#> FitDTVARMxID_DTVAR_ID35.Rds   0.6771   -0.5554   -1.4748   -1.8118     -0.3576
#> FitDTVARMxID_DTVAR_ID36.Rds   0.9104   -0.4814   -1.4425   -2.2166     -0.3601
#> FitDTVARMxID_DTVAR_ID37.Rds   0.8985   -0.2766   -1.4939   -1.7593     -0.4358
#> FitDTVARMxID_DTVAR_ID38.Rds   0.1108   -0.2868   -0.8578   -1.4566     -0.6626
#> FitDTVARMxID_DTVAR_ID39.Rds  -0.1200   -0.2090   -1.4680   -2.2773     -0.3069
#> FitDTVARMxID_DTVAR_ID40.Rds   0.1750   -0.3189   -1.1982   -2.0906     -0.6011
#> FitDTVARMxID_DTVAR_ID41.Rds   0.3479   -0.5862   -1.4234   -1.7514     -0.4344
#> FitDTVARMxID_DTVAR_ID42.Rds   0.2827   -0.6998   -1.3908   -1.3178     -0.3529
#> FitDTVARMxID_DTVAR_ID43.Rds   0.2824   -0.8407   -1.6649   -0.7116     -0.3212
#> FitDTVARMxID_DTVAR_ID44.Rds   0.2600   -0.4833   -1.3030   -0.7454     -0.2807
#> FitDTVARMxID_DTVAR_ID45.Rds   0.9086   -0.4456   -1.4325   -1.6096     -0.3854
#> FitDTVARMxID_DTVAR_ID46.Rds   0.5289   -0.2853   -0.9419   -2.2949     -0.5566
#> FitDTVARMxID_DTVAR_ID47.Rds   0.0359   -0.3179   -1.4101   -2.2710     -0.3721
#> FitDTVARMxID_DTVAR_ID48.Rds   1.1939   -0.2077   -0.8054   -1.2184     -0.5503
#> FitDTVARMxID_DTVAR_ID49.Rds   1.0019   -0.5702   -1.8195   -2.1388     -0.3145
#> FitDTVARMxID_DTVAR_ID50.Rds   0.7272   -0.2536   -1.2743   -1.7262     -0.5185
#> FitDTVARMxID_DTVAR_ID51.Rds  -0.1946   -0.3975   -1.2615   -1.3343     -0.4559
#> FitDTVARMxID_DTVAR_ID52.Rds   0.2006   -0.3549   -1.0119   -2.3159     -0.6828
#> FitDTVARMxID_DTVAR_ID53.Rds   0.5004   -0.3546   -1.4310   -1.5336     -0.4451
#> FitDTVARMxID_DTVAR_ID54.Rds   0.5592   -0.3628   -1.3473   -1.7935     -0.3467
#> FitDTVARMxID_DTVAR_ID55.Rds   0.4898   -1.4471   -2.5760   -2.9272     -0.1429
#> FitDTVARMxID_DTVAR_ID56.Rds   0.2815   -0.9780   -1.8867   -2.2838     -0.1981
#> FitDTVARMxID_DTVAR_ID57.Rds   0.6172   -0.2902   -0.4824   -1.6837     -1.0957
#> FitDTVARMxID_DTVAR_ID58.Rds   0.1994   -0.3086   -1.1534   -1.8260     -0.4739
#> FitDTVARMxID_DTVAR_ID59.Rds   0.1636   -0.2186   -1.2377   -2.1204     -0.5740
#> FitDTVARMxID_DTVAR_ID60.Rds   0.3845   -0.6040   -1.6022   -2.2137     -0.2869
#> FitDTVARMxID_DTVAR_ID61.Rds   0.0319   -0.3462   -1.0110   -1.8372     -0.5493
#> FitDTVARMxID_DTVAR_ID62.Rds   0.6197   -0.4370   -1.3886   -1.2854     -0.3736
#> FitDTVARMxID_DTVAR_ID63.Rds   1.1356   -0.3236   -1.1217   -0.5973     -0.3875
#> FitDTVARMxID_DTVAR_ID64.Rds   0.4740   -0.3807   -1.2453   -2.1013     -0.4392
#> FitDTVARMxID_DTVAR_ID65.Rds   0.5736   -0.4496   -1.0627   -1.4980     -0.4400
#> FitDTVARMxID_DTVAR_ID66.Rds   0.7323   -0.4266   -1.3291   -1.8576     -0.3993
#> FitDTVARMxID_DTVAR_ID67.Rds   0.0885   -0.5056   -1.4052   -1.8682     -0.4693
#> FitDTVARMxID_DTVAR_ID68.Rds   0.3573   -0.2196   -0.6674   -1.3603     -0.9973
#> FitDTVARMxID_DTVAR_ID69.Rds   0.5563   -0.3660   -1.3665   -2.0571     -0.3224
#> FitDTVARMxID_DTVAR_ID70.Rds   0.8073   -0.3293   -1.3050   -1.8900     -0.4535
#> FitDTVARMxID_DTVAR_ID71.Rds   0.8381   -0.5044   -1.4634   -1.8363     -0.2934
#> FitDTVARMxID_DTVAR_ID72.Rds   0.7291   -0.4529   -1.5155   -1.4420     -0.3993
#> FitDTVARMxID_DTVAR_ID73.Rds   0.2000   -0.4538   -1.4532   -2.1294     -0.3479
#> FitDTVARMxID_DTVAR_ID74.Rds   0.2853   -0.7934   -1.9591   -2.3785     -0.3143
#> FitDTVARMxID_DTVAR_ID75.Rds   0.5264   -0.4081   -1.7526   -1.9305     -0.2722
#> FitDTVARMxID_DTVAR_ID76.Rds   0.3544   -0.6489   -1.5202   -1.8899     -0.2680
#> FitDTVARMxID_DTVAR_ID77.Rds   0.8008   -0.3021   -0.9895   -2.2170     -0.4579
#> FitDTVARMxID_DTVAR_ID78.Rds   1.1350   -0.7550   -2.2070   -2.7705     -0.1410
#> FitDTVARMxID_DTVAR_ID79.Rds   0.3420   -0.5399   -1.3479   -1.9447     -0.4696
#> FitDTVARMxID_DTVAR_ID80.Rds   0.2165   -0.6378   -1.7191   -1.5831     -0.2469
#> FitDTVARMxID_DTVAR_ID81.Rds   0.5689   -0.4036   -1.3719   -1.6786     -0.3465
#> FitDTVARMxID_DTVAR_ID82.Rds   0.5158   -0.2648   -0.9059   -1.6325     -0.5861
#> FitDTVARMxID_DTVAR_ID83.Rds   1.1870   -0.1539   -0.5096   -1.6124     -1.0808
#> FitDTVARMxID_DTVAR_ID84.Rds   0.4338   -0.3813   -0.8377   -0.7815     -0.6779
#> FitDTVARMxID_DTVAR_ID85.Rds   0.9201   -0.4172   -1.6203   -2.5896     -0.3048
#> FitDTVARMxID_DTVAR_ID86.Rds  -0.2428   -0.1649   -0.2050   -1.3116     -1.5248
#> FitDTVARMxID_DTVAR_ID87.Rds   0.2810   -0.7302   -1.8100   -1.7468     -0.2501
#> FitDTVARMxID_DTVAR_ID88.Rds   0.4779   -0.4528   -1.5648   -1.8909     -0.3153
#> FitDTVARMxID_DTVAR_ID89.Rds   0.8050   -0.4812   -1.6601   -1.1386     -0.3725
#> FitDTVARMxID_DTVAR_ID90.Rds   0.9606   -0.4745   -1.3469   -1.5986     -0.4023
#> FitDTVARMxID_DTVAR_ID91.Rds   0.9946   -0.3340   -1.5202   -1.9547     -0.4626
#> FitDTVARMxID_DTVAR_ID92.Rds   0.8341   -0.2485   -1.0346   -1.5410     -0.4833
#> FitDTVARMxID_DTVAR_ID93.Rds  -0.0232   -0.3530   -1.5564   -1.8999     -0.3215
#> FitDTVARMxID_DTVAR_ID94.Rds   0.4914   -0.3481   -1.2234   -2.0355     -0.4131
#> FitDTVARMxID_DTVAR_ID95.Rds   0.5618   -0.9021   -2.3240   -2.1501     -0.1013
#> FitDTVARMxID_DTVAR_ID96.Rds   0.0385   -0.4044   -1.0646   -2.1912     -0.6528
#> FitDTVARMxID_DTVAR_ID97.Rds   0.9261   -0.5186   -0.9949   -1.4856     -0.4523
#> FitDTVARMxID_DTVAR_ID98.Rds   0.6824   -0.4450   -1.0760   -1.7592     -0.6078
#> FitDTVARMxID_DTVAR_ID99.Rds   0.2149   -0.2485   -0.7600   -1.7899     -0.7705
#> FitDTVARMxID_DTVAR_ID100.Rds  0.4054   -0.5351   -1.4734   -1.9327     -0.4045
#>                              theta_d_2_1
#> FitDTVARMxID_DTVAR_ID1.Rds       -0.3644
#> FitDTVARMxID_DTVAR_ID2.Rds       -0.4359
#> FitDTVARMxID_DTVAR_ID3.Rds       -0.1549
#> FitDTVARMxID_DTVAR_ID4.Rds       -0.4625
#> FitDTVARMxID_DTVAR_ID5.Rds       -0.8150
#> FitDTVARMxID_DTVAR_ID6.Rds       -0.5375
#> FitDTVARMxID_DTVAR_ID7.Rds       -0.4833
#> FitDTVARMxID_DTVAR_ID8.Rds       -0.4956
#> FitDTVARMxID_DTVAR_ID9.Rds       -0.4389
#> FitDTVARMxID_DTVAR_ID10.Rds      -0.3593
#> FitDTVARMxID_DTVAR_ID11.Rds      -0.4504
#> FitDTVARMxID_DTVAR_ID12.Rds      -0.3932
#> FitDTVARMxID_DTVAR_ID13.Rds      -0.1689
#> FitDTVARMxID_DTVAR_ID14.Rds      -0.4664
#> FitDTVARMxID_DTVAR_ID15.Rds      -0.6850
#> FitDTVARMxID_DTVAR_ID16.Rds      -0.3146
#> FitDTVARMxID_DTVAR_ID17.Rds      -0.3896
#> FitDTVARMxID_DTVAR_ID18.Rds      -0.5115
#> FitDTVARMxID_DTVAR_ID19.Rds      -0.3183
#> FitDTVARMxID_DTVAR_ID20.Rds      -0.4821
#> FitDTVARMxID_DTVAR_ID21.Rds      -0.6006
#> FitDTVARMxID_DTVAR_ID22.Rds      -0.3686
#> FitDTVARMxID_DTVAR_ID23.Rds      -0.4025
#> FitDTVARMxID_DTVAR_ID24.Rds      -0.5064
#> FitDTVARMxID_DTVAR_ID25.Rds      -0.3666
#> FitDTVARMxID_DTVAR_ID26.Rds      -0.4188
#> FitDTVARMxID_DTVAR_ID27.Rds      -0.4317
#> FitDTVARMxID_DTVAR_ID28.Rds      -0.4039
#> FitDTVARMxID_DTVAR_ID29.Rds      -0.5414
#> FitDTVARMxID_DTVAR_ID30.Rds      -0.2835
#> FitDTVARMxID_DTVAR_ID31.Rds      -0.3811
#> FitDTVARMxID_DTVAR_ID32.Rds      -0.2143
#> FitDTVARMxID_DTVAR_ID34.Rds      -0.4329
#> FitDTVARMxID_DTVAR_ID35.Rds      -0.5015
#> FitDTVARMxID_DTVAR_ID36.Rds      -0.3437
#> FitDTVARMxID_DTVAR_ID37.Rds      -0.4172
#> FitDTVARMxID_DTVAR_ID38.Rds      -0.4410
#> FitDTVARMxID_DTVAR_ID39.Rds      -0.2378
#> FitDTVARMxID_DTVAR_ID40.Rds      -0.2436
#> FitDTVARMxID_DTVAR_ID41.Rds      -0.5128
#> FitDTVARMxID_DTVAR_ID42.Rds      -0.9059
#> FitDTVARMxID_DTVAR_ID43.Rds      -1.3278
#> FitDTVARMxID_DTVAR_ID44.Rds      -0.9939
#> FitDTVARMxID_DTVAR_ID45.Rds      -0.5182
#> FitDTVARMxID_DTVAR_ID46.Rds      -0.3582
#> FitDTVARMxID_DTVAR_ID47.Rds      -0.3415
#> FitDTVARMxID_DTVAR_ID48.Rds      -0.5327
#> FitDTVARMxID_DTVAR_ID49.Rds      -0.3130
#> FitDTVARMxID_DTVAR_ID50.Rds      -0.4545
#> FitDTVARMxID_DTVAR_ID51.Rds      -0.7107
#> FitDTVARMxID_DTVAR_ID52.Rds      -0.3548
#> FitDTVARMxID_DTVAR_ID53.Rds      -0.4211
#> FitDTVARMxID_DTVAR_ID54.Rds      -0.4546
#> FitDTVARMxID_DTVAR_ID55.Rds      -0.4934
#> FitDTVARMxID_DTVAR_ID56.Rds      -0.5147
#> FitDTVARMxID_DTVAR_ID57.Rds      -0.3959
#> FitDTVARMxID_DTVAR_ID58.Rds      -0.1773
#> FitDTVARMxID_DTVAR_ID59.Rds      -0.3512
#> FitDTVARMxID_DTVAR_ID60.Rds      -0.3109
#> FitDTVARMxID_DTVAR_ID61.Rds      -0.4260
#> FitDTVARMxID_DTVAR_ID62.Rds      -0.4824
#> FitDTVARMxID_DTVAR_ID63.Rds      -0.9772
#> FitDTVARMxID_DTVAR_ID64.Rds      -0.1831
#> FitDTVARMxID_DTVAR_ID65.Rds      -0.6351
#> FitDTVARMxID_DTVAR_ID66.Rds      -0.3848
#> FitDTVARMxID_DTVAR_ID67.Rds      -0.4331
#> FitDTVARMxID_DTVAR_ID68.Rds      -0.3622
#> FitDTVARMxID_DTVAR_ID69.Rds      -0.3691
#> FitDTVARMxID_DTVAR_ID70.Rds      -0.2578
#> FitDTVARMxID_DTVAR_ID71.Rds      -0.4644
#> FitDTVARMxID_DTVAR_ID72.Rds      -0.5599
#> FitDTVARMxID_DTVAR_ID73.Rds      -0.3136
#> FitDTVARMxID_DTVAR_ID74.Rds      -0.2390
#> FitDTVARMxID_DTVAR_ID75.Rds      -0.4687
#> FitDTVARMxID_DTVAR_ID76.Rds      -0.5463
#> FitDTVARMxID_DTVAR_ID77.Rds      -0.3951
#> FitDTVARMxID_DTVAR_ID78.Rds      -0.2659
#> FitDTVARMxID_DTVAR_ID79.Rds      -0.4366
#> FitDTVARMxID_DTVAR_ID80.Rds      -0.5851
#> FitDTVARMxID_DTVAR_ID81.Rds      -0.5204
#> FitDTVARMxID_DTVAR_ID82.Rds      -0.4271
#> FitDTVARMxID_DTVAR_ID83.Rds      -0.3901
#> FitDTVARMxID_DTVAR_ID84.Rds      -0.8818
#> FitDTVARMxID_DTVAR_ID85.Rds      -0.2721
#> FitDTVARMxID_DTVAR_ID86.Rds      -0.3601
#> FitDTVARMxID_DTVAR_ID87.Rds      -0.3890
#> FitDTVARMxID_DTVAR_ID88.Rds      -0.2917
#> FitDTVARMxID_DTVAR_ID89.Rds      -0.5950
#> FitDTVARMxID_DTVAR_ID90.Rds      -0.3337
#> FitDTVARMxID_DTVAR_ID91.Rds      -0.2973
#> FitDTVARMxID_DTVAR_ID92.Rds      -0.4246
#> FitDTVARMxID_DTVAR_ID93.Rds      -0.3765
#> FitDTVARMxID_DTVAR_ID94.Rds      -0.2536
#> FitDTVARMxID_DTVAR_ID95.Rds      -0.4390
#> FitDTVARMxID_DTVAR_ID96.Rds      -0.1346
#> FitDTVARMxID_DTVAR_ID97.Rds      -0.6251
#> FitDTVARMxID_DTVAR_ID98.Rds      -0.5522
#> FitDTVARMxID_DTVAR_ID99.Rds      -0.3589
#> FitDTVARMxID_DTVAR_ID100.Rds     -0.5090Proportion of converged cases
converged(
  fit,
  theta_tol = 0.01,
  prop = TRUE
)
#> [1] 0.97Fixed-Effect Meta-Analysis of Measurement Error
When fitting DT-VAR models per person, separating process noise () from measurement error () can be unstable for some individuals. To stabilize inference, we first pool the person-level estimates from only the converged fits using a fixed-effect meta-analysis. This yields a high-precision estimate of the common measurement-error covariance that we will then hold fixed in a second pass of model fitting.
What the code does: - Selects individuals that converged and whose
diagonals exceed a small threshold (theta_tol), filtering
out near-zero or ill-conditioned solutions. - Extracts each personβs
LDLβ diagonal parameters for
and their sampling covariance matrices. - Computes the
inverse-variance-weighted pooled estimate (fixed effect), returning it
on the same LDLβ parameterization used by
FitDTVARMxID().
library(metaVAR)
fixed_theta <- MetaVARMx(
  fit,
  random = FALSE, # TRUE by default
  effects = FALSE, # TRUE by default
  cov_meas = TRUE, # FALSE by default
  theta_tol = 0.01
)You can read summary(fixed_theta) as providing the
pooled (fixed) measurement-error scale that is common across persons. If
individual instruments truly share the same reliability structure,
fixing
to this pooled value improves stability and often reduces bias in the
dynamic parameters.
Note: Fixed-effect pooling assumes a common across individuals.
coef(fixed_theta)
#>  alpha_1_1  alpha_2_1 
#> -0.3744510 -0.3975046
summary(fixed_theta)
#> Call:
#> MetaVARMx(object = fit, random = FALSE, effects = FALSE, cov_meas = TRUE, 
#>     theta_tol = 0.01)
#>                est     se        z p    2.5%   97.5%
#> alpha[1,1] -0.3745 0.0132 -28.4490 0 -0.4002 -0.3487
#> alpha[2,1] -0.3975 0.0128 -30.9467 0 -0.4227 -0.3723
theta_d_values <- coef(fixed_theta)Refit the model with fixed measurement error covariance matrix
We refit the individual models using the pooled as a fixed measurement-error covariance matrix.
fit <- FitDTVARMxID(
  data = data,
  observed = c("y1", "y2"),
  id = "id",
  beta_values = beta_values,
  psi_d_values = psi_d_values,
  psi_l_values = psi_l_values,
  nu_values = nu_values,
  theta_fixed = TRUE,
  theta_d_values = theta_d_values,
  mu0_values = mu0_values,
  sigma0_d_values = sigma0_d_values,
  sigma0_l_values = sigma0_l_values,
  ncores = parallel::detectCores()
)With fixed, the re-estimation focuses on the dynamic structure (, ) and intercepts (). In practice, this often increases the proportion of converged fits and yields more stable cross-lag estimates.
Proportion of converged cases
converged(
  fit,
  prop = TRUE
)
#> Error in i$output: $ operator is invalid for atomic vectorsRandom-Effects Meta-Analysis of Person-Specific Dynamics and Means
Having stabilized , we synthesize the person-specific estimates to recover population-level effects and their between-person variability. We use a random-effects model so the pooled mean reflects both within-person estimation uncertainty and between-person heterogeneity.
random <- MetaVARMx(
  fit,
  effects = TRUE,
  int_meas = TRUE
)
#> Error in i$output: $ operator is invalid for atomic vectors
summary(random)
#> Error: object 'random' not found- The fixed part of the random-effects model gives pooled means .
- The random part yields between-person covariances () quantifying heterogeneity in dynamics () and means () across individuals.
means <- extract(random, what = "alpha")
#> Error: object 'random' not found
means
#> Error: object 'means' not found
covariances <- extract(random, what = "tau_sqr")
#> Error: object 'random' not found
covariances
#> Error: object 'covariances' not foundFinally, we compare the meta-analytic population estimates to the known generating values.
beta_pop_mean
#> [1]  0.5975226  0.2495715 -0.3054649  0.6893696
beta_pop_cov
#>               [,1]         [,2]         [,3]          [,4]
#> [1,]  2.386517e-02 0.0092591880 8.078956e-05 -0.0002817067
#> [2,]  9.259188e-03 0.0193540268 1.323752e-04  0.0001410741
#> [3,]  8.078956e-05 0.0001323752 1.883487e-02  0.0084724601
#> [4,] -2.817067e-04 0.0001410741 8.472460e-03  0.0222254212
nu_mu
#> [1] 0.8 0.5
nu_sigma
#>      [,1] [,2]
#> [1,] 0.15 0.05
#> [2,] 0.05 0.10Summary
This vignette demonstrates a two-stage hierarchical estimation
approach for dynamic systems: 1. individual-level DT-VAR estimation with
stabilized measurement error, and
2. population-level meta-analysis of person-specific dynamics and
means.