Thanks, Ed. I appreciate the information. The block diagonal search is really cool!
I've pasted the model syntax below. I've simplified the model quite a bit so all growth factors are uncorrelated. Just a little context: it is glucose and insulin measurements during an oral glucose tolerance test (a two hour test with blood drawn every 30 minutes) at three different pregnancy periods in an RCT for women diagnosed with gestational diabetes. These measurements are measured with error, with the coefficient of variation for glucose being CV = 3% and insulin as high as cv = 15%. (Measurement error is heteroskedastic in the raw scale (but roughly homoskedastic on the log scale) and reported as percentage of the "true score" in this field). It is standing practice to ignore measurement error in the health sciences when conducting downstream analyses, and I'm trying to convince them that they shouldn't for all the reasons we don't in SEM.
I've successfully fit an equivalent multivariate multilevel model in "long format" to this data in brms. The below fits without convergence issues, chains mix well, and show adequate sampling efficiency:
#
# Define formulas with AR1 autocorrelation structure
# bf_glucose0_ar1 = brms::bf(
# log(glucose0) | mi() ~ treat*poly(t,4) + HOMA2B0*poly(t,4) + HOMA2S0*poly(t,4) + A1C0*poly(t,4) + IBI0*poly(t,4) + GBI0*poly(t,4) + (1 + poly(t,4)|a|gr(PTID, by = treat)), # + arma(time = time_numeric, gr = PTID, p = 1, q = 0),
# decomp = "QR"
# )
#
# bf_insulin0_ar1 = brms::bf(
# log(insulin0) | mi() ~ treat*poly(t,4) + HOMA2B0*poly(t,4) + HOMA2S0*poly(t,4) + A1C0*poly(t,4) + IBI0*poly(t,4) + GBI0*poly(t,4) + (1 + poly(t,4)|a|gr(PTID, by = treat)), # + arma(time = time_numeric, gr = PTID, p = 1, q = 0),
# decomp = "QR"
# )
#
# bf_glucose1_ar1 = brms::bf(
# log(glucose1) | mi() ~ treat*poly(t,4) + HOMA2B1*poly(t,4) + HOMA2S1*poly(t,4) + A1C0*poly(t,4) + IBI1*poly(t,4) + GBI1*poly(t,4) + (1 + poly(t,4)|a|gr(PTID, by = treat)), # + arma(time = time_numeric, gr = PTID, p = 1, q = 0),
# decomp = "QR"
# )
#
# bf_insulin1_ar1 = brms::bf(
# log(insulin1) | mi() ~ treat*poly(t,4) + HOMA2B1*poly(t,4) + HOMA2S1*poly(t,4) + A1C0*poly(t,4) + IBI1*poly(t,4) + GBI1*poly(t,4) + (1 + poly(t,4)|a|gr(PTID, by = treat)), # + arma(time = time_numeric, gr = PTID, p = 1, q = 0),
# decomp = "QR"
# )
#
# bf_glucose2_ar1 = brms::bf(
# log(glucose2) | mi() ~ treat*poly(t,4) + HOMA2B2*poly(t,4) + HOMA2S2*poly(t,4) + A1C2*poly(t,4) + IBI2*poly(t,4) + GBI2*poly(t,4) + (1 + poly(t,4)|a|gr(PTID, by = treat)), # + arma(time = time_numeric, gr = PTID, p = 1, q = 0),
# decomp = "QR"
# )
#
# bf_insulin2_ar1 = brms::bf(
# log(insulin2) | mi() ~ treat*poly(t,4) + HOMA2B2*poly(t,4) + HOMA2S2*poly(t,4) + A1C2*poly(t,4) + IBI2*poly(t,4) + GBI2*poly(t,4) + (1 + poly(t,4)|a|gr(PTID, by = treat)), # + arma(time = time_numeric, gr = PTID, p = 1, q = 0),
# decomp = "QR"
# )
#
#
# # Combine into multivariate formula
# mvform_ar1 = mvbrmsformula(
# bf_glucose0_ar1, bf_insulin0_ar1,
# bf_glucose1_ar1, bf_insulin1_ar1,
# bf_glucose2_ar1, bf_insulin2_ar1
# ) + set_rescor(T)
#
I would like to move over to the SEM "wide" format for its greater flexibility to jointly model time invariant measurements like free fatty acids or triglyceride levels, and to begin a study on formalizing the process for constructing "measurement models" of blood plasma samples, including evaluation using goodness of fit statistics like the BCFI. Below is a highly simplified growth curve model (no predictors and assumes the "growth factors" for the legendre basis are all independent). I'm running into issues with both the marginal likelihood and joint likelihood specifications:
- For the joint likelihood ("stanclassic") - A lot of convergence issues/divergent transitions, even if I set adapt_delta to .99
- For the marginal likelihood I get exceptions like the following thrown: Exception: mdivide_left_spd: A is not symmetric. A[1,3] = 273247, but A[3,1] = 273247
For the marginal likelihood, this exception gets thrown on about 1% of samples, seems to be contained to the disturbance variance. The only thing is that it leads to "NA" values for these parameters at those samples and so I can't monitor things like the Reff, etc. (I get a "no sample return") My best guess is that mdivide_left_spd is a matrix inversion for the model-implied variance covariance matrix used in the trace term and numeric overflow is occuring, but would love your thoughts.
My question about a non-centered parameterization was geared to the joint likelihood where the factor variances are pretty small for the higher order terms--hence the funneling issue.
Of course the natural question is whether this model is overparameterized--and yes it is. But there are apparently physiological reasons for a quartic polynomial due to model biphasic trajectories where there are more than one peak in insulin and/or glucose. (..and I do get it to fit in brms).
# Latent growth factors with Legendre polynomial basis
f_glu0_intercept =~ 1*GLU00_0 + 1*GLU0_0 + 1*GLU30_0 + 1*GLU60_0 + 1*GLU90_0 + 1*GLU120_0
f_glu0_linear =~ -1*GLU00_0 + -1*GLU0_0 + -0.5*GLU30_0 + 0*GLU60_0 + 0.5*GLU90_0 + 1*GLU120_0
f_glu0_quadratic =~ 1*GLU00_0 + 1*GLU0_0 + -0.125*GLU30_0 + -0.5*GLU60_0 + -0.125*GLU90_0 + 1*GLU120_0
f_glu0_cubic =~ -1*GLU00_0 + -1*GLU0_0 + 0.4375*GLU30_0 + 0*GLU60_0 + -0.4375*GLU90_0 + 1*GLU120_0
f_glu0_quartic =~ 1*GLU00_0 + 1*GLU0_0 + -0.289062*GLU30_0 + 0.375*GLU60_0 + -0.289062*GLU90_0 + 1*GLU120_0
# Factor means
f_glu0_intercept ~ 1
f_glu0_linear ~ 1
f_glu0_quadratic ~ 1
f_glu0_cubic ~ 1
f_glu0_quartic ~ 1
# Factor variances
f_glu0_intercept ~~ f_glu0_intercept
f_glu0_linear ~~ f_glu0_linear
f_glu0_quadratic ~~ f_glu0_quadratic
f_glu0_cubic ~~ f_glu0_cubic
f_glu0_quartic ~~ f_glu0_quartic
# Factor covariances (set to zero for independent factors)
f_glu0_intercept ~~ 0*f_glu0_linear
f_glu0_intercept ~~ 0*f_glu0_quadratic
f_glu0_intercept ~~ 0*f_glu0_cubic
f_glu0_intercept ~~ 0*f_glu0_quartic
f_glu0_linear ~~ 0*f_glu0_quadratic
f_glu0_linear ~~ 0*f_glu0_cubic
f_glu0_linear ~~ 0*f_glu0_quartic
f_glu0_quadratic ~~ 0*f_glu0_cubic
f_glu0_quadratic ~~ 0*f_glu0_quartic
f_glu0_cubic ~~ 0*f_glu0_quartic
# Disturbances
GLU00_0 ~~ theta_glu*GLU00_0
GLU0_0 ~~ theta_glu*GLU0_0
GLU30_0 ~~ theta_glu*GLU30_0
GLU60_0 ~~ theta_glu*GLU60_0
GLU90_0 ~~ theta_glu*GLU90_0
GLU120_0 ~~ theta_glu*GLU120_0
# Indicator means (fixed to 0)
GLU00_0 ~ 0*1
GLU0_0 ~ 0*1
GLU30_0 ~ 0*1
GLU60_0 ~ 0*1
GLU90_0 ~ 0*1
GLU120_0 ~ 0*1
# Latent growth factors with Legendre polynomial basis
f_ins0_intercept =~ 1*INS00_0 + 1*INS0_0 + 1*INS30_0 + 1*INS60_0 + 1*INS90_0 + 1*INS120_0
f_ins0_linear =~ -1*INS00_0 + -1*INS0_0 + -0.5*INS30_0 + 0*INS60_0 + 0.5*INS90_0 + 1*INS120_0
f_ins0_quadratic =~ 1*INS00_0 + 1*INS0_0 + -0.125*INS30_0 + -0.5*INS60_0 + -0.125*INS90_0 + 1*INS120_0
f_ins0_cubic =~ -1*INS00_0 + -1*INS0_0 + 0.4375*INS30_0 + 0*INS60_0 + -0.4375*INS90_0 + 1*INS120_0
f_ins0_quartic =~ 1*INS00_0 + 1*INS0_0 + -0.289062*INS30_0 + 0.375*INS60_0 + -0.289062*INS90_0 + 1*INS120_0
# Factor means
f_ins0_intercept ~ 1
f_ins0_linear ~ 1
f_ins0_quadratic ~ 1
f_ins0_cubic ~ 1
f_ins0_quartic ~ 1
# Factor variances
f_ins0_intercept ~~ f_ins0_intercept
f_ins0_linear ~~ f_ins0_linear
f_ins0_quadratic ~~ f_ins0_quadratic
f_ins0_cubic ~~ f_ins0_cubic
f_ins0_quartic ~~ f_ins0_quartic
# Factor covariances (set to zero for independent factors)
f_ins0_intercept ~~ 0*f_ins0_linear
f_ins0_intercept ~~ 0*f_ins0_quadratic
f_ins0_intercept ~~ 0*f_ins0_cubic
f_ins0_intercept ~~ 0*f_ins0_quartic
f_ins0_linear ~~ 0*f_ins0_quadratic
f_ins0_linear ~~ 0*f_ins0_cubic
f_ins0_linear ~~ 0*f_ins0_quartic
f_ins0_quadratic ~~ 0*f_ins0_cubic
f_ins0_quadratic ~~ 0*f_ins0_quartic
f_ins0_cubic ~~ 0*f_ins0_quartic
# Disturbances
INS00_0 ~~ theta_ins*INS00_0
INS0_0 ~~ theta_ins*INS0_0
INS30_0 ~~ theta_ins*INS30_0
INS60_0 ~~ theta_ins*INS60_0
INS90_0 ~~ theta_ins*INS90_0
INS120_0 ~~ theta_ins*INS120_0
# Indicator means (fixed to 0)
INS00_0 ~ 0*1
INS0_0 ~ 0*1
INS30_0 ~ 0*1
INS60_0 ~ 0*1
INS90_0 ~ 0*1
INS120_0 ~ 0*1
# Latent growth factors with Legendre polynomial basis
f_glu1_intercept =~ 1*GLU00_1 + 1*GLU0_1 + 1*GLU30_1 + 1*GLU60_1 + 1*GLU90_1 + 1*GLU120_1
f_glu1_linear =~ -1*GLU00_1 + -1*GLU0_1 + -0.5*GLU30_1 + 0*GLU60_1 + 0.5*GLU90_1 + 1*GLU120_1
f_glu1_quadratic =~ 1*GLU00_1 + 1*GLU0_1 + -0.125*GLU30_1 + -0.5*GLU60_1 + -0.125*GLU90_1 + 1*GLU120_1
f_glu1_cubic =~ -1*GLU00_1 + -1*GLU0_1 + 0.4375*GLU30_1 + 0*GLU60_1 + -0.4375*GLU90_1 + 1*GLU120_1
f_glu1_quartic =~ 1*GLU00_1 + 1*GLU0_1 + -0.289062*GLU30_1 + 0.375*GLU60_1 + -0.289062*GLU90_1 + 1*GLU120_1
# Factor means
f_glu1_intercept ~ 1
f_glu1_linear ~ 1
f_glu1_quadratic ~ 1
f_glu1_cubic ~ 1
f_glu1_quartic ~ 1
# Factor variances
f_glu1_intercept ~~ f_glu1_intercept
f_glu1_linear ~~ f_glu1_linear
f_glu1_quadratic ~~ f_glu1_quadratic
f_glu1_cubic ~~ f_glu1_cubic
f_glu1_quartic ~~ f_glu1_quartic
# Factor covariances (set to zero for independent factors)
f_glu1_intercept ~~ 0*f_glu1_linear
f_glu1_intercept ~~ 0*f_glu1_quadratic
f_glu1_intercept ~~ 0*f_glu1_cubic
f_glu1_intercept ~~ 0*f_glu1_quartic
f_glu1_linear ~~ 0*f_glu1_quadratic
f_glu1_linear ~~ 0*f_glu1_cubic
f_glu1_linear ~~ 0*f_glu1_quartic
f_glu1_quadratic ~~ 0*f_glu1_cubic
f_glu1_quadratic ~~ 0*f_glu1_quartic
f_glu1_cubic ~~ 0*f_glu1_quartic
# Disturbances
GLU00_1 ~~ theta_glu*GLU00_1
GLU0_1 ~~ theta_glu*GLU0_1
GLU30_1 ~~ theta_glu*GLU30_1
GLU60_1 ~~ theta_glu*GLU60_1
GLU90_1 ~~ theta_glu*GLU90_1
GLU120_1 ~~ theta_glu*GLU120_1
# Indicator means (fixed to 0)
GLU00_1 ~ 0*1
GLU0_1 ~ 0*1
GLU30_1 ~ 0*1
GLU60_1 ~ 0*1
GLU90_1 ~ 0*1
GLU120_1 ~ 0*1
# Latent growth factors with Legendre polynomial basis
f_ins1_intercept =~ 1*INS00_1 + 1*INS0_1 + 1*INS30_1 + 1*INS60_1 + 1*INS90_1 + 1*INS120_1
f_ins1_linear =~ -1*INS00_1 + -1*INS0_1 + -0.5*INS30_1 + 0*INS60_1 + 0.5*INS90_1 + 1*INS120_1
f_ins1_quadratic =~ 1*INS00_1 + 1*INS0_1 + -0.125*INS30_1 + -0.5*INS60_1 + -0.125*INS90_1 + 1*INS120_1
f_ins1_cubic =~ -1*INS00_1 + -1*INS0_1 + 0.4375*INS30_1 + 0*INS60_1 + -0.4375*INS90_1 + 1*INS120_1
f_ins1_quartic =~ 1*INS00_1 + 1*INS0_1 + -0.289062*INS30_1 + 0.375*INS60_1 + -0.289062*INS90_1 + 1*INS120_1
# Factor means
f_ins1_intercept ~ 1
f_ins1_linear ~ 1
f_ins1_quadratic ~ 1
f_ins1_cubic ~ 1
f_ins1_quartic ~ 1
# Factor variances
f_ins1_intercept ~~ f_ins1_intercept
f_ins1_linear ~~ f_ins1_linear
f_ins1_quadratic ~~ f_ins1_quadratic
f_ins1_cubic ~~ f_ins1_cubic
f_ins1_quartic ~~ f_ins1_quartic
# Factor covariances (set to zero for independent factors)
f_ins1_intercept ~~ 0*f_ins1_linear
f_ins1_intercept ~~ 0*f_ins1_quadratic
f_ins1_intercept ~~ 0*f_ins1_cubic
f_ins1_intercept ~~ 0*f_ins1_quartic
f_ins1_linear ~~ 0*f_ins1_quadratic
f_ins1_linear ~~ 0*f_ins1_cubic
f_ins1_linear ~~ 0*f_ins1_quartic
f_ins1_quadratic ~~ 0*f_ins1_cubic
f_ins1_quadratic ~~ 0*f_ins1_quartic
f_ins1_cubic ~~ 0*f_ins1_quartic
# Disturbances
INS00_1 ~~ theta_ins*INS00_1
INS0_1 ~~ theta_ins*INS0_1
INS30_1 ~~ theta_ins*INS30_1
INS60_1 ~~ theta_ins*INS60_1
INS90_1 ~~ theta_ins*INS90_1
INS120_1 ~~ theta_ins*INS120_1
# Indicator means (fixed to 0)
INS00_1 ~ 0*1
INS0_1 ~ 0*1
INS30_1 ~ 0*1
INS60_1 ~ 0*1
INS90_1 ~ 0*1
INS120_1 ~ 0*1
# Latent growth factors with Legendre polynomial basis
f_glu2_intercept =~ 1*GLU00_2 + 1*GLU0_2 + 1*GLU30_2 + 1*GLU60_2 + 1*GLU90_2 + 1*GLU120_2
f_glu2_linear =~ -1*GLU00_2 + -1*GLU0_2 + -0.5*GLU30_2 + 0*GLU60_2 + 0.5*GLU90_2 + 1*GLU120_2
f_glu2_quadratic =~ 1*GLU00_2 + 1*GLU0_2 + -0.125*GLU30_2 + -0.5*GLU60_2 + -0.125*GLU90_2 + 1*GLU120_2
f_glu2_cubic =~ -1*GLU00_2 + -1*GLU0_2 + 0.4375*GLU30_2 + 0*GLU60_2 + -0.4375*GLU90_2 + 1*GLU120_2
f_glu2_quartic =~ 1*GLU00_2 + 1*GLU0_2 + -0.289062*GLU30_2 + 0.375*GLU60_2 + -0.289062*GLU90_2 + 1*GLU120_2
# Factor means
f_glu2_intercept ~ 1
f_glu2_linear ~ 1
f_glu2_quadratic ~ 1
f_glu2_cubic ~ 1
f_glu2_quartic ~ 1
# Factor variances
f_glu2_intercept ~~ f_glu2_intercept
f_glu2_linear ~~ f_glu2_linear
f_glu2_quadratic ~~ f_glu2_quadratic
f_glu2_cubic ~~ f_glu2_cubic
f_glu2_quartic ~~ f_glu2_quartic
# Factor covariances (set to zero for independent factors)
f_glu2_intercept ~~ 0*f_glu2_linear
f_glu2_intercept ~~ 0*f_glu2_quadratic
f_glu2_intercept ~~ 0*f_glu2_cubic
f_glu2_intercept ~~ 0*f_glu2_quartic
f_glu2_linear ~~ 0*f_glu2_quadratic
f_glu2_linear ~~ 0*f_glu2_cubic
f_glu2_linear ~~ 0*f_glu2_quartic
f_glu2_quadratic ~~ 0*f_glu2_cubic
f_glu2_quadratic ~~ 0*f_glu2_quartic
f_glu2_cubic ~~ 0*f_glu2_quartic
# Disturbances
GLU00_2 ~~ theta_glu*GLU00_2
GLU0_2 ~~ theta_glu*GLU0_2
GLU30_2 ~~ theta_glu*GLU30_2
GLU60_2 ~~ theta_glu*GLU60_2
GLU90_2 ~~ theta_glu*GLU90_2
GLU120_2 ~~ theta_glu*GLU120_2
# Indicator means (fixed to 0)
GLU00_2 ~ 0*1
GLU0_2 ~ 0*1
GLU30_2 ~ 0*1
GLU60_2 ~ 0*1
GLU90_2 ~ 0*1
GLU120_2 ~ 0*1
# Latent growth factors with Legendre polynomial basis
f_ins2_intercept =~ 1*INS00_2 + 1*INS0_2 + 1*INS30_2 + 1*INS60_2 + 1*INS90_2 + 1*INS120_2
f_ins2_linear =~ -1*INS00_2 + -1*INS0_2 + -0.5*INS30_2 + 0*INS60_2 + 0.5*INS90_2 + 1*INS120_2
f_ins2_quadratic =~ 1*INS00_2 + 1*INS0_2 + -0.125*INS30_2 + -0.5*INS60_2 + -0.125*INS90_2 + 1*INS120_2
f_ins2_cubic =~ -1*INS00_2 + -1*INS0_2 + 0.4375*INS30_2 + 0*INS60_2 + -0.4375*INS90_2 + 1*INS120_2
f_ins2_quartic =~ 1*INS00_2 + 1*INS0_2 + -0.289062*INS30_2 + 0.375*INS60_2 + -0.289062*INS90_2 + 1*INS120_2
# Factor means
f_ins2_intercept ~ 1
f_ins2_linear ~ 1
f_ins2_quadratic ~ 1
f_ins2_cubic ~ 1
f_ins2_quartic ~ 1
# Factor variances
f_ins2_intercept ~~ f_ins2_intercept
f_ins2_linear ~~ f_ins2_linear
f_ins2_quadratic ~~ f_ins2_quadratic
f_ins2_cubic ~~ f_ins2_cubic
f_ins2_quartic ~~ f_ins2_quartic
# Factor covariances (set to zero for independent factors)
f_ins2_intercept ~~ 0*f_ins2_linear
f_ins2_intercept ~~ 0*f_ins2_quadratic
f_ins2_intercept ~~ 0*f_ins2_cubic
f_ins2_intercept ~~ 0*f_ins2_quartic
f_ins2_linear ~~ 0*f_ins2_quadratic
f_ins2_linear ~~ 0*f_ins2_cubic
f_ins2_linear ~~ 0*f_ins2_quartic
f_ins2_quadratic ~~ 0*f_ins2_cubic
f_ins2_quadratic ~~ 0*f_ins2_quartic
f_ins2_cubic ~~ 0*f_ins2_quartic
# Disturbances
INS00_2 ~~ theta_ins*INS00_2
INS0_2 ~~ theta_ins*INS0_2
INS30_2 ~~ theta_ins*INS30_2
INS60_2 ~~ theta_ins*INS60_2
INS90_2 ~~ theta_ins*INS90_2
INS120_2 ~~ theta_ins*INS120_2
# Indicator means (fixed to 0)
INS00_2 ~ 0*1
INS0_2 ~ 0*1
INS30_2 ~ 0*1
INS60_2 ~ 0*1
INS90_2 ~ 0*1
INS120_2 ~ 0*1
# === Factor Covariances: Glucose with Insulin (Independence (all set to zero)) ===
# All cross-variable factor covariances constrained to zero
f_glu0_intercept ~~ 0*f_ins0_intercept
f_glu0_intercept ~~ 0*f_ins0_linear
f_glu0_intercept ~~ 0*f_ins0_quadratic
f_glu0_intercept ~~ 0*f_ins0_cubic
f_glu0_intercept ~~ 0*f_ins0_quartic
f_glu0_intercept ~~ 0*f_ins1_intercept
f_glu0_intercept ~~ 0*f_ins1_linear
f_glu0_intercept ~~ 0*f_ins1_quadratic
f_glu0_intercept ~~ 0*f_ins1_cubic
f_glu0_intercept ~~ 0*f_ins1_quartic
f_glu0_intercept ~~ 0*f_ins2_intercept
f_glu0_intercept ~~ 0*f_ins2_linear
f_glu0_intercept ~~ 0*f_ins2_quadratic
f_glu0_intercept ~~ 0*f_ins2_cubic
f_glu0_intercept ~~ 0*f_ins2_quartic
f_glu0_linear ~~ 0*f_ins0_intercept
f_glu0_linear ~~ 0*f_ins0_linear
f_glu0_linear ~~ 0*f_ins0_quadratic
f_glu0_linear ~~ 0*f_ins0_cubic
f_glu0_linear ~~ 0*f_ins0_quartic
f_glu0_linear ~~ 0*f_ins1_intercept
f_glu0_linear ~~ 0*f_ins1_linear
f_glu0_linear ~~ 0*f_ins1_quadratic
f_glu0_linear ~~ 0*f_ins1_cubic
f_glu0_linear ~~ 0*f_ins1_quartic
f_glu0_linear ~~ 0*f_ins2_intercept
f_glu0_linear ~~ 0*f_ins2_linear
f_glu0_linear ~~ 0*f_ins2_quadratic
f_glu0_linear ~~ 0*f_ins2_cubic
f_glu0_linear ~~ 0*f_ins2_quartic
f_glu0_quadratic ~~ 0*f_ins0_intercept
f_glu0_quadratic ~~ 0*f_ins0_linear
f_glu0_quadratic ~~ 0*f_ins0_quadratic
f_glu0_quadratic ~~ 0*f_ins0_cubic
f_glu0_quadratic ~~ 0*f_ins0_quartic
f_glu0_quadratic ~~ 0*f_ins1_intercept
f_glu0_quadratic ~~ 0*f_ins1_linear
f_glu0_quadratic ~~ 0*f_ins1_quadratic
f_glu0_quadratic ~~ 0*f_ins1_cubic
f_glu0_quadratic ~~ 0*f_ins1_quartic
f_glu0_quadratic ~~ 0*f_ins2_intercept
f_glu0_quadratic ~~ 0*f_ins2_linear
f_glu0_quadratic ~~ 0*f_ins2_quadratic
f_glu0_quadratic ~~ 0*f_ins2_cubic
f_glu0_quadratic ~~ 0*f_ins2_quartic
f_glu0_cubic ~~ 0*f_ins0_intercept
f_glu0_cubic ~~ 0*f_ins0_linear
f_glu0_cubic ~~ 0*f_ins0_quadratic
f_glu0_cubic ~~ 0*f_ins0_cubic
f_glu0_cubic ~~ 0*f_ins0_quartic
f_glu0_cubic ~~ 0*f_ins1_intercept
f_glu0_cubic ~~ 0*f_ins1_linear
f_glu0_cubic ~~ 0*f_ins1_quadratic
f_glu0_cubic ~~ 0*f_ins1_cubic
f_glu0_cubic ~~ 0*f_ins1_quartic
f_glu0_cubic ~~ 0*f_ins2_intercept
f_glu0_cubic ~~ 0*f_ins2_linear
f_glu0_cubic ~~ 0*f_ins2_quadratic
f_glu0_cubic ~~ 0*f_ins2_cubic
f_glu0_cubic ~~ 0*f_ins2_quartic
f_glu0_quartic ~~ 0*f_ins0_intercept
f_glu0_quartic ~~ 0*f_ins0_linear
f_glu0_quartic ~~ 0*f_ins0_quadratic
f_glu0_quartic ~~ 0*f_ins0_cubic
f_glu0_quartic ~~ 0*f_ins0_quartic
f_glu0_quartic ~~ 0*f_ins1_intercept
f_glu0_quartic ~~ 0*f_ins1_linear
f_glu0_quartic ~~ 0*f_ins1_quadratic
f_glu0_quartic ~~ 0*f_ins1_cubic
f_glu0_quartic ~~ 0*f_ins1_quartic
f_glu0_quartic ~~ 0*f_ins2_intercept
f_glu0_quartic ~~ 0*f_ins2_linear
f_glu0_quartic ~~ 0*f_ins2_quadratic
f_glu0_quartic ~~ 0*f_ins2_cubic
f_glu0_quartic ~~ 0*f_ins2_quartic
f_glu1_intercept ~~ 0*f_ins0_intercept
f_glu1_intercept ~~ 0*f_ins0_linear
f_glu1_intercept ~~ 0*f_ins0_quadratic
f_glu1_intercept ~~ 0*f_ins0_cubic
f_glu1_intercept ~~ 0*f_ins0_quartic
f_glu1_intercept ~~ 0*f_ins1_intercept
f_glu1_intercept ~~ 0*f_ins1_linear
f_glu1_intercept ~~ 0*f_ins1_quadratic
f_glu1_intercept ~~ 0*f_ins1_cubic
f_glu1_intercept ~~ 0*f_ins1_quartic
f_glu1_intercept ~~ 0*f_ins2_intercept
f_glu1_intercept ~~ 0*f_ins2_linear
f_glu1_intercept ~~ 0*f_ins2_quadratic
f_glu1_intercept ~~ 0*f_ins2_cubic
f_glu1_intercept ~~ 0*f_ins2_quartic
f_glu1_linear ~~ 0*f_ins0_intercept
f_glu1_linear ~~ 0*f_ins0_linear
f_glu1_linear ~~ 0*f_ins0_quadratic
f_glu1_linear ~~ 0*f_ins0_cubic
f_glu1_linear ~~ 0*f_ins0_quartic
f_glu1_linear ~~ 0*f_ins1_intercept
f_glu1_linear ~~ 0*f_ins1_linear
f_glu1_linear ~~ 0*f_ins1_quadratic
f_glu1_linear ~~ 0*f_ins1_cubic
f_glu1_linear ~~ 0*f_ins1_quartic
f_glu1_linear ~~ 0*f_ins2_intercept
f_glu1_linear ~~ 0*f_ins2_linear
f_glu1_linear ~~ 0*f_ins2_quadratic
f_glu1_linear ~~ 0*f_ins2_cubic
f_glu1_linear ~~ 0*f_ins2_quartic
f_glu1_quadratic ~~ 0*f_ins0_intercept
f_glu1_quadratic ~~ 0*f_ins0_linear
f_glu1_quadratic ~~ 0*f_ins0_quadratic
f_glu1_quadratic ~~ 0*f_ins0_cubic
f_glu1_quadratic ~~ 0*f_ins0_quartic
f_glu1_quadratic ~~ 0*f_ins1_intercept
f_glu1_quadratic ~~ 0*f_ins1_linear
f_glu1_quadratic ~~ 0*f_ins1_quadratic
f_glu1_quadratic ~~ 0*f_ins1_cubic
f_glu1_quadratic ~~ 0*f_ins1_quartic
f_glu1_quadratic ~~ 0*f_ins2_intercept
f_glu1_quadratic ~~ 0*f_ins2_linear
f_glu1_quadratic ~~ 0*f_ins2_quadratic
f_glu1_quadratic ~~ 0*f_ins2_cubic
f_glu1_quadratic ~~ 0*f_ins2_quartic
f_glu1_cubic ~~ 0*f_ins0_intercept
f_glu1_cubic ~~ 0*f_ins0_linear
f_glu1_cubic ~~ 0*f_ins0_quadratic
f_glu1_cubic ~~ 0*f_ins0_cubic
f_glu1_cubic ~~ 0*f_ins0_quartic
f_glu1_cubic ~~ 0*f_ins1_intercept
f_glu1_cubic ~~ 0*f_ins1_linear
f_glu1_cubic ~~ 0*f_ins1_quadratic
f_glu1_cubic ~~ 0*f_ins1_cubic
f_glu1_cubic ~~ 0*f_ins1_quartic
f_glu1_cubic ~~ 0*f_ins2_intercept
f_glu1_cubic ~~ 0*f_ins2_linear
f_glu1_cubic ~~ 0*f_ins2_quadratic
f_glu1_cubic ~~ 0*f_ins2_cubic
f_glu1_cubic ~~ 0*f_ins2_quartic
f_glu1_quartic ~~ 0*f_ins0_intercept
f_glu1_quartic ~~ 0*f_ins0_linear
f_glu1_quartic ~~ 0*f_ins0_quadratic
f_glu1_quartic ~~ 0*f_ins0_cubic
f_glu1_quartic ~~ 0*f_ins0_quartic
f_glu1_quartic ~~ 0*f_ins1_intercept
f_glu1_quartic ~~ 0*f_ins1_linear
f_glu1_quartic ~~ 0*f_ins1_quadratic
f_glu1_quartic ~~ 0*f_ins1_cubic
f_glu1_quartic ~~ 0*f_ins1_quartic
f_glu1_quartic ~~ 0*f_ins2_intercept
f_glu1_quartic ~~ 0*f_ins2_linear
f_glu1_quartic ~~ 0*f_ins2_quadratic
f_glu1_quartic ~~ 0*f_ins2_cubic
f_glu1_quartic ~~ 0*f_ins2_quartic
f_glu2_intercept ~~ 0*f_ins0_intercept
f_glu2_intercept ~~ 0*f_ins0_linear
f_glu2_intercept ~~ 0*f_ins0_quadratic
f_glu2_intercept ~~ 0*f_ins0_cubic
f_glu2_intercept ~~ 0*f_ins0_quartic
f_glu2_intercept ~~ 0*f_ins1_intercept
f_glu2_intercept ~~ 0*f_ins1_linear
f_glu2_intercept ~~ 0*f_ins1_quadratic
f_glu2_intercept ~~ 0*f_ins1_cubic
f_glu2_intercept ~~ 0*f_ins1_quartic
f_glu2_intercept ~~ 0*f_ins2_intercept
f_glu2_intercept ~~ 0*f_ins2_linear
f_glu2_intercept ~~ 0*f_ins2_quadratic
f_glu2_intercept ~~ 0*f_ins2_cubic
f_glu2_intercept ~~ 0*f_ins2_quartic
f_glu2_linear ~~ 0*f_ins0_intercept
f_glu2_linear ~~ 0*f_ins0_linear
f_glu2_linear ~~ 0*f_ins0_quadratic
f_glu2_linear ~~ 0*f_ins0_cubic
f_glu2_linear ~~ 0*f_ins0_quartic
f_glu2_linear ~~ 0*f_ins1_intercept
f_glu2_linear ~~ 0*f_ins1_linear
f_glu2_linear ~~ 0*f_ins1_quadratic
f_glu2_linear ~~ 0*f_ins1_cubic
f_glu2_linear ~~ 0*f_ins1_quartic
f_glu2_linear ~~ 0*f_ins2_intercept
f_glu2_linear ~~ 0*f_ins2_linear
f_glu2_linear ~~ 0*f_ins2_quadratic
f_glu2_linear ~~ 0*f_ins2_cubic
f_glu2_linear ~~ 0*f_ins2_quartic
f_glu2_quadratic ~~ 0*f_ins0_intercept
f_glu2_quadratic ~~ 0*f_ins0_linear
f_glu2_quadratic ~~ 0*f_ins0_quadratic
f_glu2_quadratic ~~ 0*f_ins0_cubic
f_glu2_quadratic ~~ 0*f_ins0_quartic
f_glu2_quadratic ~~ 0*f_ins1_intercept
f_glu2_quadratic ~~ 0*f_ins1_linear
f_glu2_quadratic ~~ 0*f_ins1_quadratic
f_glu2_quadratic ~~ 0*f_ins1_cubic
f_glu2_quadratic ~~ 0*f_ins1_quartic
f_glu2_quadratic ~~ 0*f_ins2_intercept
f_glu2_quadratic ~~ 0*f_ins2_linear
f_glu2_quadratic ~~ 0*f_ins2_quadratic
f_glu2_quadratic ~~ 0*f_ins2_cubic
f_glu2_quadratic ~~ 0*f_ins2_quartic
f_glu2_cubic ~~ 0*f_ins0_intercept
f_glu2_cubic ~~ 0*f_ins0_linear
f_glu2_cubic ~~ 0*f_ins0_quadratic
f_glu2_cubic ~~ 0*f_ins0_cubic
f_glu2_cubic ~~ 0*f_ins0_quartic
f_glu2_cubic ~~ 0*f_ins1_intercept
f_glu2_cubic ~~ 0*f_ins1_linear
f_glu2_cubic ~~ 0*f_ins1_quadratic
f_glu2_cubic ~~ 0*f_ins1_cubic
f_glu2_cubic ~~ 0*f_ins1_quartic
f_glu2_cubic ~~ 0*f_ins2_intercept
f_glu2_cubic ~~ 0*f_ins2_linear
f_glu2_cubic ~~ 0*f_ins2_quadratic
f_glu2_cubic ~~ 0*f_ins2_cubic
f_glu2_cubic ~~ 0*f_ins2_quartic
f_glu2_quartic ~~ 0*f_ins0_intercept
f_glu2_quartic ~~ 0*f_ins0_linear
f_glu2_quartic ~~ 0*f_ins0_quadratic
f_glu2_quartic ~~ 0*f_ins0_cubic
f_glu2_quartic ~~ 0*f_ins0_quartic
f_glu2_quartic ~~ 0*f_ins1_intercept
f_glu2_quartic ~~ 0*f_ins1_linear
f_glu2_quartic ~~ 0*f_ins1_quadratic
f_glu2_quartic ~~ 0*f_ins1_cubic
f_glu2_quartic ~~ 0*f_ins1_quartic
f_glu2_quartic ~~ 0*f_ins2_intercept
f_glu2_quartic ~~ 0*f_ins2_linear
f_glu2_quartic ~~ 0*f_ins2_quadratic
f_glu2_quartic ~~ 0*f_ins2_cubic
f_glu2_quartic ~~ 0*f_ins2_quartic
# === Indicator Covariances: Residual correlations at same time points ===
# Baseline (31wk)
GLU00_0 ~~ INS00_0
GLU0_0 ~~ INS0_0
GLU30_0 ~~ INS30_0
GLU60_0 ~~ INS60_0
GLU90_0 ~~ INS90_0
GLU120_0 ~~ INS120_0
# Post-intervention (36wk)
GLU00_1 ~~ INS00_1
GLU0_1 ~~ INS0_1
GLU30_1 ~~ INS30_1
GLU60_1 ~~ INS60_1
GLU90_1 ~~ INS90_1
GLU120_1 ~~ INS120_1
# Postpartum (2mo)
GLU00_2 ~~ INS00_2
GLU0_2 ~~ INS0_2
GLU30_2 ~~ INS30_2
GLU60_2 ~~ INS60_2
GLU90_2 ~~ INS90_2
GLU120_2 ~~ INS120_2