getLGCM function

Fit a Latent Growth Curve Model with Time-invariant Covariate (If Any)

Fit a Latent Growth Curve Model with Time-invariant Covariate (If Any)

This function fits a latent growth curve model with or without time-invariant covariates to the provided data. It manages model setup, optimization, and if requested, outputs parameter estimates and standard errors.

getLGCM( dat, t_var, y_var, curveFun, intrinsic = TRUE, records, growth_TIC = NULL, starts = NULL, res_scale = NULL, tries = NULL, OKStatus = 0, jitterD = "runif", loc = 1, scale = 0.25, paramOut = FALSE, names = NULL )

Arguments

  • dat: A wide-format data frame, with each row corresponding to a unique ID. It contains the observed variables with repeated measurements and occasions, and time-invariant covariates (TICs) if any.

  • t_var: A string specifying the prefix of the column names corresponding to the time variable at each study wave.

  • y_var: A string specifying the prefix of the column names corresponding to the outcome variable at each study wave.

  • curveFun: A string specifying the functional form of the growth curve. Supported options for latent growth curve models are: "linear" (or "LIN"), "quadratic" (or "QUAD"), "negative exponential"

    (or "EXP"), "Jenss-Bayley" (or "JB"), and "bilinear spline" (or "BLS").

  • intrinsic: A logical flag indicating whether to build an intrinsically nonlinear longitudinal model. Default is TRUE.

  • records: A numeric vector specifying indices of the study waves.

  • growth_TIC: A string or character vector specifying the column name(s) of time-invariant covariate(s) contributing to the variability of growth factors if any. Default is NULL, indicating no growth TICs are included in the model.

  • starts: A list containing initial values for the parameters. Default is NULL, indicating no user-specified initial values.

  • res_scale: A numeric value representing the scaling factor for the initial calculation of the residual variance. This value should be between 0 and 1, exclusive. By default, this is NULL, as it is unnecessary when the user specifies the initial values using the starts argument.

  • tries: An integer specifying the number of additional optimization attempts. Default is NULL.

  • OKStatus: An integer (vector) specifying acceptable status codes for convergence. Default is 0.

  • jitterD: A string specifying the distribution for jitter. Supported values are: "runif" (uniform distribution), "rnorm" (normal distribution), and "rcauchy" (Cauchy distribution). Default is "runif".

  • loc: A numeric value representing the location parameter of the jitter distribution. Default is 1.

  • scale: A numeric value representing the scale parameter of the jitter distribution. Default is 0.25.

  • paramOut: A logical flag indicating whether to output the parameter estimates and standard errors. Default is FALSE.

  • names: A character vector specifying parameter names. Default is NULL.

Returns

An object of class myMxOutput. Depending on the paramOut argument, the object may contain the following slots:

  • mxOutput: This slot contains the fitted latent growth curve model. A summary of this model can be obtained using the ModelSummary() function.
  • Estimates (optional): If paramOut = TRUE, a data frame with parameter estimates and standard errors. The content of this slot can be printed using the printTable() method for S4 objects.

Examples

mxOption(model = NULL, key = "Default optimizer", "CSOLNP", reset = FALSE) # Load ECLS-K (2011) data data("RMS_dat") RMS_dat0 <- RMS_dat # Re-baseline the data so that the estimated initial status is for the starting point of the study baseT <- RMS_dat0$T1 RMS_dat0$T1 <- RMS_dat0$T1 - baseT RMS_dat0$T2 <- RMS_dat0$T2 - baseT RMS_dat0$T3 <- RMS_dat0$T3 - baseT RMS_dat0$T4 <- RMS_dat0$T4 - baseT RMS_dat0$T5 <- RMS_dat0$T5 - baseT RMS_dat0$T6 <- RMS_dat0$T6 - baseT RMS_dat0$T7 <- RMS_dat0$T7 - baseT RMS_dat0$T8 <- RMS_dat0$T8 - baseT RMS_dat0$T9 <- RMS_dat0$T9 - baseT # Standardized time-invariant covariates RMS_dat0$ex1 <- scale(RMS_dat0$Approach_to_Learning) RMS_dat0$ex2 <- scale(RMS_dat0$Attention_focus) # Fit bilinear spline latent growth curve model (fixed knots) BLS_LGCM_r <- getLGCM( dat = RMS_dat0, t_var = "T", y_var = "M", curveFun = "bilinear spline", intrinsic = FALSE, records = 1:9, growth_TIC = NULL, res_scale = 0.1 ) # Fit bilinear spline latent growth curve model (random knots) with # time-invariant covariates for mathematics development ## Define parameter names paraBLS.TIC_LGCM.f <- c( "alpha0", "alpha1", "alpha2", "alphag", paste0("psi", c("00", "01", "02", "0g", "11", "12", "1g", "22", "2g", "gg")), "residuals", paste0("beta1", c(0:2, "g")), paste0("beta2", c(0:2, "g")), paste0("mux", 1:2), paste0("phi", c("11", "12", "22")), "mueta0", "mueta1", "mueta2", "mu_knot" ) ## Fit the model BLS_LGCM.TIC_f <- getLGCM( dat = RMS_dat0, t_var = "T", y_var = "M", curveFun = "bilinear spline", intrinsic = TRUE, records = 1:9, growth_TIC = c("ex1", "ex2"), res_scale = 0.1, paramOut = TRUE, names = paraBLS.TIC_LGCM.f ) ## Output point estimate and standard errors printTable(BLS_LGCM.TIC_f)

References

  • Liu, J., Perera, R. A., Kang, L., Kirkpatrick, R. M., & Sabo, R. T. (2021). "Obtaining Interpretable Parameters from Reparameterizing Longitudinal Models: Transformation Matrices between Growth Factors in Two Parameter Spaces". Journal of Educational and Behavioral Statistics. tools:::Rd_expr_doi("10.3102/10769986211052009")
  • Sterba, S. K. (2014). "Fitting Nonlinear Latent Growth Curve Models With Individually Varying Time Points". Structural Equation Modeling: A Multidisciplinary Journal, 21(4), 630-647. tools:::Rd_expr_doi("10.1080/10705511.2014.919828")
  • Maintainer: Jin Liu
  • License: GPL (>= 3.0)
  • Last published: 2023-09-12