Fit the Continuous-Time Vector Autoregressive Model Using the OpenMx Package
Ivan Jacob Agaloos Pesigan
2025-02-21
Source:vignettes/fit-ct-var-mx.Rmd
fit-ct-var-mx.Rmd
Data Generation Using the SimSSMOUFixed
Function from
the simStateSpace
Package
n
#> [1] 100
time
#> [1] 1000
delta_t
#> [1] 0.1
mu0
#> [1] 0 0 0
sigma0
#> [,1] [,2] [,3]
#> [1,] 1.0 0.2 0.2
#> [2,] 0.2 1.0 0.2
#> [3,] 0.2 0.2 1.0
sigma0_l # sigma0_l <- t(chol(sigma0))
#> [,1] [,2] [,3]
#> [1,] 1.0 0.0000000 0.0000000
#> [2,] 0.2 0.9797959 0.0000000
#> [3,] 0.2 0.1632993 0.9660918
mu
#> [1] 0 0 0
phi
#> [,1] [,2] [,3]
#> [1,] -0.357 0.000 0.000
#> [2,] 0.771 -0.511 0.000
#> [3,] -0.450 0.729 -0.693
sigma
#> [,1] [,2] [,3]
#> [1,] 0.24455556 0.02201587 -0.05004762
#> [2,] 0.02201587 0.07067800 0.01539456
#> [3,] -0.05004762 0.01539456 0.07553061
sigma_l # sigma_l <- t(chol(sigma))
#> [,1] [,2] [,3]
#> [1,] 0.49452559 0.0000000 0.000000
#> [2,] 0.04451917 0.2620993 0.000000
#> [3,] -0.10120330 0.0759256 0.243975
nu
#> [1] 0 0 0
lambda
#> [,1] [,2] [,3]
#> [1,] 1 0 0
#> [2,] 0 1 0
#> [3,] 0 0 1
theta
#> [,1] [,2] [,3]
#> [1,] 0.2 0.0 0.0
#> [2,] 0.0 0.2 0.0
#> [3,] 0.0 0.0 0.2
theta_l # theta_l <- t(chol(theta))
#> [,1] [,2] [,3]
#> [1,] 0.4472136 0.0000000 0.0000000
#> [2,] 0.0000000 0.4472136 0.0000000
#> [3,] 0.0000000 0.0000000 0.4472136
library(simStateSpace)
sim <- SimSSMOUFixed(
n = n,
time = time,
delta_t = delta_t,
mu0 = mu0,
sigma0_l = sigma0_l,
mu = mu,
phi = phi,
sigma_l = sigma_l,
nu = nu,
lambda = lambda,
theta_l = theta_l,
type = 0
)
data <- as.data.frame(sim)
colnames(data) <- c("id", "time", "x", "m", "y")
head(data)
#> id time x m y
#> 1 1 0.0 -0.3504435 0.41877429 2.611996
#> 2 1 0.1 -0.5920330 1.07433208 1.669272
#> 3 1 0.2 -0.7619855 1.21483834 2.369837
#> 4 1 0.3 -1.6964652 0.21209722 2.128531
#> 5 1 0.4 -1.2282686 0.09950326 1.891140
#> 6 1 0.5 0.1433985 0.66784226 2.036033
Model Fitting
We use the OpenMx
package to fit the continuous-time
vector autoregressive model.
Prepare the Initial Condition
mu0 <- mxMatrix(
type = "Full",
nrow = 3,
ncol = 1,
free = TRUE,
values = matrix(
data = c(
0, 0, 0
),
nrow = 3,
ncol = 1
),
labels = matrix(
data = c(
"mu0_1_1", "mu0_2_1", "mu0_3_1"
),
nrow = 3,
ncol = 1
),
lbound = NA,
ubound = NA,
byrow = FALSE,
dimnames = list(
c("eta_x", "eta_m", "eta_y"),
"mu0"
),
name = "mu0"
)
sigma0 <- mxMatrix(
type = "Symm",
nrow = 3,
ncol = 3,
free = TRUE,
values = matrix(
data = c(
1.0, 0.2, 0.2,
0.2, 1.0, 0.2,
0.2, 0.2, 1.0
),
nrow = 3,
ncol = 3
),
labels = matrix(
data = c(
"sigma0_1_1", "sigma0_2_1", "sigma0_3_1",
"sigma0_2_1", "sigma0_2_2", "sigma0_3_2",
"sigma0_3_1", "sigma0_3_2", "sigma0_3_3"
),
nrow = 3,
ncol = 3
),
lbound = matrix(
data = c(
0, NA, NA,
NA, 0, NA,
NA, NA, 0
),
nrow = 3,
ncol = 3
),
ubound = NA,
byrow = FALSE,
dimnames = list(
c("eta_x", "eta_m", "eta_y"),
c("eta_x", "eta_m", "eta_y")
),
name = "sigma0"
)
Prepare the Dynamic Model
phi <- mxMatrix(
type = "Full",
nrow = 3,
ncol = 3,
free = TRUE,
values = matrix(
data = c(
-0.2, 0.0, 0.0,
0.0, -0.2, 0.0,
0.0, 0.0, -0.2
),
nrow = 3,
ncol = 3
),
labels = matrix(
data = c(
"phi_1_1", "phi_2_1", "phi_3_1",
"phi_1_2", "phi_2_2", "phi_3_2",
"phi_1_3", "phi_2_3", "phi_3_3"
),
nrow = 3,
ncol = 3
),
lbound = -1.5,
ubound = 1.5,
byrow = FALSE,
dimnames = list(
c("eta_x", "eta_m", "eta_y"),
c("eta_x", "eta_m", "eta_y")
),
name = "phi"
)
Prepare the Noise Matrices
sigma <- mxMatrix(
type = "Symm",
nrow = 3,
ncol = 3,
free = TRUE,
values = 0.2 * diag(3),
labels = matrix(
data = c(
"sigma_1_1", "sigma_2_1", "sigma_3_1",
"sigma_2_1", "sigma_2_2", "sigma_3_2",
"sigma_3_1", "sigma_3_2", "sigma_3_3"
),
nrow = 3,
ncol = 3
),
lbound = matrix(
data = c(
0, NA, NA,
NA, 0, NA,
NA, NA, 0
),
nrow = 3,
ncol = 3
),
ubound = NA,
byrow = FALSE,
dimnames = list(
c("eta_x", "eta_m", "eta_y"),
c("eta_x", "eta_m", "eta_y")
),
name = "sigma"
)
theta <- mxMatrix(
type = "Diag",
nrow = 3,
ncol = 3,
free = TRUE,
values = 0.2 * diag(3),
labels = matrix(
data = c(
"theta_1_1", "fixed", "fixed",
"fixed", "theta_2_2", "fixed",
"fixed", "fixed", "theta_3_3"
),
nrow = 3,
ncol = 3
),
lbound = matrix(
data = c(
0, NA, NA,
NA, 0, NA,
NA, NA, 0
),
nrow = 3,
ncol = 3
),
ubound = NA,
byrow = FALSE,
dimnames = list(
c("x", "m", "y"),
c("x", "m", "y")
),
name = "theta"
)
Prepare Miscellaneous Matrices
time <- mxMatrix(
type = "Full",
nrow = 1,
ncol = 1,
free = FALSE,
labels = "data.time",
name = "time"
)
gamma <- mxMatrix(
type = "Zero",
nrow = 3,
ncol = 1,
name = "gamma"
)
kappa <- mxMatrix(
type = "Zero",
nrow = 3,
ncol = 1,
name = "kappa"
)
covariate <- mxMatrix(
type = "Zero",
nrow = 1,
ncol = 1,
name = "covariate"
)
Prepare the Model
In this parameterization, we fit the same model to all individuals
(id
) using a multi-group framework, assuming that the
parameters remain fixed across individuals.
model <- mxModel(
model = "CTVAR",
phi,
gamma,
lambda,
kappa,
sigma,
theta,
mu0,
sigma0,
covariate,
time,
mxExpectationStateSpaceContinuousTime(
A = "phi",
B = "gamma",
C = "lambda",
D = "kappa",
Q = "sigma",
R = "theta",
x0 = "mu0",
P0 = "sigma0",
u = "covariate",
t = "time",
dimnames = c("x", "m", "y")
),
mxFitFunctionML(),
mxData(
observed = data,
type = "raw"
)
)
ids <- sort(
unique(data[, "id"])
)
model_id <- lapply(
X = ids,
FUN = function(i,
data,
model) {
return(
mxModel(
name = paste0("CTVAR", "_", i),
model = model,
mxData(
observed = data[
which(
data[, "id"] == i
), ,
drop = FALSE
],
type = "raw"
)
)
)
},
data = data,
model = model
)
Fit the Model
fit <- mxTryHardctsem(
model = mxModel(
name = "CTVAR",
model_id,
mxFitFunctionMultigroup(
paste0(
"CTVAR",
"_",
ids
)
)
),
extraTries = 1000
)
#> Running CTVAR with 27 parameters
#>
#> Beginning initial fit attempt
#> Running CTVAR with 27 parameters
#>
#> Lowest minimum so far: 429365.485590992
#>
#> Solution found
#>
#> Solution found! Final fit=429365.49 (started at 446038.15) (1 attempt(s): 1 valid, 0 errors)
#> Start values from best fit:
#> -0.351820464763875,0.744058683533928,-0.458865707342277,0.017325308253516,-0.488580204063643,0.726989618727047,-0.0238038217835114,-0.00993023618573935,-0.688415993715275,0.237552568393084,0.0317029121921784,0.0717951048555,-0.0536133193819518,0.0123389994837017,0.0757516886845035,0.198871334943815,0.19953251820168,0.20118257380203,0.00635310990814497,-0.0424272940619834,0.13014093535223,1.15043708831725,0.413776487240123,1.22186237880417,0.226071176823326,0.235391196610704,0.962740892656347
summary(fit)
#> Summary of CTVAR
#>
#> free parameters:
#> name matrix row col Estimate Std.Error A lbound
#> 1 phi_1_1 CTVAR_1.phi eta_x eta_x -0.351820465 0.035365853 -1.5
#> 2 phi_2_1 CTVAR_1.phi eta_m eta_x 0.744058684 0.021729162 -1.5
#> 3 phi_3_1 CTVAR_1.phi eta_y eta_x -0.458865707 0.022776563 -1.5
#> 4 phi_1_2 CTVAR_1.phi eta_x eta_m 0.017325308 0.030932608 -1.5
#> 5 phi_2_2 CTVAR_1.phi eta_m eta_m -0.488580204 0.019196684 -1.5
#> 6 phi_3_2 CTVAR_1.phi eta_y eta_m 0.726989619 0.020150017 -1.5
#> 7 phi_1_3 CTVAR_1.phi eta_x eta_y -0.023803822 0.023645784 -1.5
#> 8 phi_2_3 CTVAR_1.phi eta_m eta_y -0.009930236 0.014653861 -1.5
#> 9 phi_3_3 CTVAR_1.phi eta_y eta_y -0.688415994 0.015496268 -1.5
#> 10 sigma_1_1 CTVAR_1.sigma eta_x eta_x 0.237552568 0.006734867 0
#> 11 sigma_2_1 CTVAR_1.sigma eta_x eta_m 0.031702912 0.002523014
#> 12 sigma_2_2 CTVAR_1.sigma eta_m eta_m 0.071795105 0.001922894 0
#> 13 sigma_3_1 CTVAR_1.sigma eta_x eta_y -0.053613319 0.002639782
#> 14 sigma_3_2 CTVAR_1.sigma eta_m eta_y 0.012338999 0.001396882
#> 15 sigma_3_3 CTVAR_1.sigma eta_y eta_y 0.075751689 0.002137281 0
#> 16 theta_1_1 CTVAR_1.theta x x 0.198871335 0.001164051 0
#> 17 theta_2_2 CTVAR_1.theta m m 0.199532518 0.001000034 0
#> 18 theta_3_3 CTVAR_1.theta y y 0.201182574 0.001015365 0
#> 19 mu0_1_1 CTVAR_1.mu0 eta_x mu0 0.006353110 0.110461277
#> 20 mu0_2_1 CTVAR_1.mu0 eta_m mu0 -0.042427294 0.112953114 !
#> 21 mu0_3_1 CTVAR_1.mu0 eta_y mu0 0.130140935 0.100765083 !
#> 22 sigma0_1_1 CTVAR_1.sigma0 eta_x eta_x 1.150437088 0.174037692 ! 0
#> 23 sigma0_2_1 CTVAR_1.sigma0 eta_x eta_m 0.413776487 0.132408205
#> 24 sigma0_2_2 CTVAR_1.sigma0 eta_m eta_m 1.221862379 0.182155047 0
#> 25 sigma0_3_1 CTVAR_1.sigma0 eta_x eta_y 0.226071177 0.114268076
#> 26 sigma0_3_2 CTVAR_1.sigma0 eta_m eta_y 0.235391197 0.116052099 !
#> 27 sigma0_3_3 CTVAR_1.sigma0 eta_y eta_y 0.962740893 0.145762898 0
#> ubound
#> 1 1.5
#> 2 1.5
#> 3 1.5
#> 4 1.5
#> 5 1.5
#> 6 1.5
#> 7 1.5
#> 8 1.5
#> 9 1.5
#> 10
#> 11
#> 12
#> 13
#> 14
#> 15
#> 16
#> 17
#> 18
#> 19
#> 20
#> 21
#> 22
#> 23
#> 24
#> 25
#> 26
#> 27
#>
#> Model Statistics:
#> | Parameters | Degrees of Freedom | Fit (-2lnL units)
#> Model: 27 299973 429365.5
#> Saturated: NA NA NA
#> Independence: NA NA NA
#> Number of observations/statistics: 1e+05/3e+05
#>
#> Information Criteria:
#> | df Penalty | Parameters Penalty | Sample-Size Adjusted
#> AIC: -170580.5 429419.5 429419.5
#> BIC: -3024201.3 429676.3 429590.5
#> CFI: NA
#> TLI: 1 (also known as NNFI)
#> RMSEA: 0 [95% CI (NA, NA)]
#> Prob(RMSEA <= 0.05): NA
#> To get additional fit indices, see help(mxRefModels)
#> timestamp: 2025-02-21 21:50:01
#> Wall clock time: 4520.231 secs
#> optimizer: SLSQP
#> OpenMx version number: 2.21.13
#> Need help? See help(mxSummary)
coefs <- coef(fit)
vcovs <- vcov(fit)
Extract Matrices from the Fitted Model to use in cTMed
phi_names <- c(
"phi_1_1", "phi_2_1", "phi_3_1",
"phi_1_2", "phi_2_2", "phi_3_2",
"phi_1_3", "phi_2_3", "phi_3_3"
)
sigma_names <- c(
"sigma_1_1", "sigma_2_1", "sigma_3_1",
"sigma_2_1", "sigma_2_2", "sigma_3_2",
"sigma_3_1", "sigma_3_2", "sigma_3_3"
)
sigma_vech_names <- c(
"sigma_1_1", "sigma_2_1", "sigma_3_1",
"sigma_2_2", "sigma_3_2",
"sigma_3_3"
)
theta_names <- c(
"phi_1_1", "phi_2_1", "phi_3_1",
"phi_1_2", "phi_2_2", "phi_3_2",
"phi_1_3", "phi_2_3", "phi_3_3",
"sigma_1_1", "sigma_2_1", "sigma_3_1",
"sigma_2_2", "sigma_3_2",
"sigma_3_3"
)
phi <- matrix(
data = coefs[phi_names],
nrow = 3,
ncol = 3
)
sigma <- matrix(
data = coefs[sigma_names],
nrow = 3,
ncol = 3
)
theta <- coefs[theta_names]
vcov_phi_vec <- vcovs[phi_names, phi_names]
vcov_sigma_vech <- vcovs[sigma_vech_names, sigma_vech_names]
vcov_theta <- vcovs[theta_names, theta_names]
Estimated Drift Matrix with Corresponding Sampling Covariance Matrix
phi
#> [,1] [,2] [,3]
#> [1,] -0.3518205 0.01732531 -0.023803822
#> [2,] 0.7440587 -0.48858020 -0.009930236
#> [3,] -0.4588657 0.72698962 -0.688415994
vcov_phi_vec
#> phi_1_1 phi_2_1 phi_3_1 phi_1_2 phi_2_2
#> phi_1_1 1.250744e-03 6.297416e-05 -1.804528e-04 -1.047442e-03 -6.136296e-05
#> phi_2_1 6.297416e-05 4.721565e-04 9.743580e-06 -4.089531e-05 -3.994900e-04
#> phi_3_1 -1.804528e-04 9.743580e-06 5.187718e-04 1.454408e-04 -1.893896e-06
#> phi_1_2 -1.047442e-03 -4.089531e-05 1.454408e-04 9.568262e-04 4.734713e-05
#> phi_2_2 -6.136296e-05 -3.994900e-04 -1.893896e-06 4.734713e-05 3.685127e-04
#> phi_3_2 1.584531e-04 -1.580515e-05 -4.394980e-04 -1.426464e-04 8.140278e-06
#> phi_1_3 7.043405e-04 2.282371e-05 -8.836133e-05 -6.670037e-04 -2.805236e-05
#> phi_2_3 4.948679e-05 2.683845e-04 -4.697821e-06 -4.178625e-05 -2.572289e-04
#> phi_3_3 -1.139976e-04 1.609887e-05 2.964911e-04 1.071336e-04 -1.142289e-05
#> phi_3_2 phi_1_3 phi_2_3 phi_3_3
#> phi_1_1 1.584531e-04 7.043405e-04 4.948679e-05 -1.139976e-04
#> phi_2_1 -1.580515e-05 2.282371e-05 2.683845e-04 1.609887e-05
#> phi_3_1 -4.394980e-04 -8.836133e-05 -4.697821e-06 2.964911e-04
#> phi_1_2 -1.426464e-04 -6.670037e-04 -4.178625e-05 1.071336e-04
#> phi_2_2 8.140278e-06 -2.805236e-05 -2.572289e-04 -1.142289e-05
#> phi_3_2 4.060232e-04 9.194376e-05 1.186528e-06 -2.850569e-04
#> phi_1_3 9.194376e-05 5.591231e-04 3.201535e-05 -8.732722e-05
#> phi_2_3 1.186528e-06 3.201535e-05 2.147357e-04 3.656864e-06
#> phi_3_3 -2.850569e-04 -8.732722e-05 3.656864e-06 2.401343e-04
Process Noise Covariance Matrix with Corresponding Sampling Covariance Matrix
sigma
#> [,1] [,2] [,3]
#> [1,] 0.23755257 0.03170291 -0.05361332
#> [2,] 0.03170291 0.07179510 0.01233900
#> [3,] -0.05361332 0.01233900 0.07575169
vcov_sigma_vech
#> sigma_1_1 sigma_2_1 sigma_3_1 sigma_2_2 sigma_3_2
#> sigma_1_1 4.535843e-05 -7.417713e-07 -4.787009e-06 -5.278858e-07 5.560671e-07
#> sigma_2_1 -7.417713e-07 6.365597e-06 -1.472659e-08 -3.630127e-08 -1.071930e-06
#> sigma_3_1 -4.787009e-06 -1.472659e-08 6.968447e-06 1.500006e-08 -3.828778e-08
#> sigma_2_2 -5.278858e-07 -3.630127e-08 1.500006e-08 3.697523e-06 -4.735690e-08
#> sigma_3_2 5.560671e-07 -1.071930e-06 -3.828778e-08 -4.735690e-08 1.951280e-06
#> sigma_3_3 -2.114638e-08 1.881791e-07 -1.974364e-06 -4.606835e-08 -9.739319e-08
#> sigma_3_3
#> sigma_1_1 -2.114638e-08
#> sigma_2_1 1.881791e-07
#> sigma_3_1 -1.974364e-06
#> sigma_2_2 -4.606835e-08
#> sigma_3_2 -9.739319e-08
#> sigma_3_3 4.567970e-06
Estimated Drift Matrix and Process Noise Covariance Matrix with Corresponding Sampling Covariance Matrix
theta
#> phi_1_1 phi_2_1 phi_3_1 phi_1_2 phi_2_2 phi_3_2
#> -0.351820465 0.744058684 -0.458865707 0.017325308 -0.488580204 0.726989619
#> phi_1_3 phi_2_3 phi_3_3 sigma_1_1 sigma_2_1 sigma_3_1
#> -0.023803822 -0.009930236 -0.688415994 0.237552568 0.031702912 -0.053613319
#> sigma_2_2 sigma_3_2 sigma_3_3
#> 0.071795105 0.012338999 0.075751689
vcov_theta
#> phi_1_1 phi_2_1 phi_3_1 phi_1_2 phi_2_2
#> phi_1_1 1.250744e-03 6.297416e-05 -1.804528e-04 -1.047442e-03 -6.136296e-05
#> phi_2_1 6.297416e-05 4.721565e-04 9.743580e-06 -4.089531e-05 -3.994900e-04
#> phi_3_1 -1.804528e-04 9.743580e-06 5.187718e-04 1.454408e-04 -1.893896e-06
#> phi_1_2 -1.047442e-03 -4.089531e-05 1.454408e-04 9.568262e-04 4.734713e-05
#> phi_2_2 -6.136296e-05 -3.994900e-04 -1.893896e-06 4.734713e-05 3.685127e-04
#> phi_3_2 1.584531e-04 -1.580515e-05 -4.394980e-04 -1.426464e-04 8.140278e-06
#> phi_1_3 7.043405e-04 2.282371e-05 -8.836133e-05 -6.670037e-04 -2.805236e-05
#> phi_2_3 4.948679e-05 2.683845e-04 -4.697821e-06 -4.178625e-05 -2.572289e-04
#> phi_3_3 -1.139976e-04 1.609887e-05 2.964911e-04 1.071336e-04 -1.142289e-05
#> sigma_1_1 -1.923377e-04 -1.661061e-05 3.047430e-05 1.506850e-04 1.401744e-05
#> sigma_2_1 1.910878e-05 -3.244160e-05 -6.909682e-06 -2.059645e-05 2.414255e-05
#> sigma_3_1 1.062283e-05 1.953491e-06 -3.672230e-05 -4.271919e-06 -1.399363e-06
#> sigma_2_2 3.811271e-06 1.342698e-05 8.016733e-07 -3.471335e-06 -1.420175e-05
#> sigma_3_2 -5.807454e-06 1.834214e-06 7.759935e-06 5.801067e-06 2.300411e-07
#> sigma_3_3 3.824717e-06 -1.084135e-06 2.342855e-06 -4.536123e-06 7.612111e-07
#> phi_3_2 phi_1_3 phi_2_3 phi_3_3 sigma_1_1
#> phi_1_1 1.584531e-04 7.043405e-04 4.948679e-05 -1.139976e-04 -1.923377e-04
#> phi_2_1 -1.580515e-05 2.282371e-05 2.683845e-04 1.609887e-05 -1.661061e-05
#> phi_3_1 -4.394980e-04 -8.836133e-05 -4.697821e-06 2.964911e-04 3.047430e-05
#> phi_1_2 -1.426464e-04 -6.670037e-04 -4.178625e-05 1.071336e-04 1.506850e-04
#> phi_2_2 8.140278e-06 -2.805236e-05 -2.572289e-04 -1.142289e-05 1.401744e-05
#> phi_3_2 4.060232e-04 9.194376e-05 1.186528e-06 -2.850569e-04 -2.493786e-05
#> phi_1_3 9.194376e-05 5.591231e-04 3.201535e-05 -8.732722e-05 -9.335566e-05
#> phi_2_3 1.186528e-06 3.201535e-05 2.147357e-04 3.656864e-06 -9.660510e-06
#> phi_3_3 -2.850569e-04 -8.732722e-05 3.656864e-06 2.401343e-04 1.646841e-05
#> sigma_1_1 -2.493786e-05 -9.335566e-05 -9.660510e-06 1.646841e-05 4.535843e-05
#> sigma_2_1 6.893752e-06 1.427220e-05 -1.403917e-05 -4.925175e-06 -7.417713e-07
#> sigma_3_1 2.747500e-05 -4.196034e-06 3.901574e-07 -1.514292e-05 -4.787009e-06
#> sigma_2_2 -1.128788e-06 2.336122e-06 9.349194e-06 8.868612e-07 -5.278858e-07
#> sigma_3_2 -8.051693e-06 -4.229723e-06 -2.602481e-06 5.190250e-06 5.560671e-07
#> sigma_3_3 1.752145e-06 5.216751e-06 -1.008974e-07 -6.780662e-06 -2.114638e-08
#> sigma_2_1 sigma_3_1 sigma_2_2 sigma_3_2 sigma_3_3
#> phi_1_1 1.910878e-05 1.062283e-05 3.811271e-06 -5.807454e-06 3.824717e-06
#> phi_2_1 -3.244160e-05 1.953491e-06 1.342698e-05 1.834214e-06 -1.084135e-06
#> phi_3_1 -6.909682e-06 -3.672230e-05 8.016733e-07 7.759935e-06 2.342855e-06
#> phi_1_2 -2.059645e-05 -4.271919e-06 -3.471335e-06 5.801067e-06 -4.536123e-06
#> phi_2_2 2.414255e-05 -1.399363e-06 -1.420175e-05 2.300411e-07 7.612111e-07
#> phi_3_2 6.893752e-06 2.747500e-05 -1.128788e-06 -8.051693e-06 1.752145e-06
#> phi_1_3 1.427220e-05 -4.196034e-06 2.336122e-06 -4.229723e-06 5.216751e-06
#> phi_2_3 -1.403917e-05 3.901574e-07 9.349194e-06 -2.602481e-06 -1.008974e-07
#> phi_3_3 -4.925175e-06 -1.514292e-05 8.868612e-07 5.190250e-06 -6.780662e-06
#> sigma_1_1 -7.417713e-07 -4.787009e-06 -5.278858e-07 5.560671e-07 -2.114638e-08
#> sigma_2_1 6.365597e-06 -1.472659e-08 -3.630127e-08 -1.071930e-06 1.881791e-07
#> sigma_3_1 -1.472659e-08 6.968447e-06 1.500006e-08 -3.828778e-08 -1.974364e-06
#> sigma_2_2 -3.630127e-08 1.500006e-08 3.697523e-06 -4.735690e-08 -4.606835e-08
#> sigma_3_2 -1.071930e-06 -3.828778e-08 -4.735690e-08 1.951280e-06 -9.739319e-08
#> sigma_3_3 1.881791e-07 -1.974364e-06 -4.606835e-08 -9.739319e-08 4.567970e-06
References
Hunter, M. D. (2017). State space modeling in an open source, modular,
structural equation modeling environment. Structural Equation
Modeling: A Multidisciplinary Journal, 25(2), 307–324. https://doi.org/10.1080/10705511.2017.1369354
Neale, M. C., Hunter, M. D., Pritikin, J. N., Zahery, M., Brick, T. R.,
Kirkpatrick, R. M., Estabrook, R., Bates, T. C., Maes, H. H., &
Boker, S. M. (2015). OpenMx 2.0: Extended structural
equation and statistical modeling. Psychometrika,
81(2), 535–549. https://doi.org/10.1007/s11336-014-9435-8
R Core Team. (2024). R: A language and environment for
statistical computing. R Foundation for Statistical Computing. https://www.R-project.org/