Nothing
#' @title Extract Point Estimates And Standard Errors of Longitudinal Mixture Models
#'
#' @description This function computes and returns a data frame containing point estimates and standard errors for the parameters of
#' a mixture model.
#'
#' @param model An object representing a fitted mixture model.
#' @param nClass An integer specifying the number of latent classes for the mixture model. It takes the value passed from \code{getMIX()}.
#' @param sub_Model A string that specifies the sub-model for latent classes. Supported sub-models include \code{"LGCM"} (for latent
#' growth curve models), \code{"LCSM"} (for latent change score models), \code{"TVC"} (for latent growth curve models or latent change
#' score models with a time-varying covariate), \code{"MGM"} (for multivariate latent growth curve models or latent change score models),
#' and \code{"MED"} (for longitudinal mediation models). It takes the value passed from \code{getMIX()}.
#' @param cluster_TIC A string or character vector representing the column name(s) for time-invariant covariate(s) indicating cluster
#' formations. It takes the value passed from \code{getMIX()}.
#' @param y_var A string defining the prefix of the column names corresponding to the outcome variable for each study wave. This is applicable
#' when \code{sub_Model} is not \code{"MGM"}. For \code{sub_Model} being \code{"MGM"}, \code{y_var} should be a string vector where each element
#' corresponds to the prefix of the column names for each outcome variable across the study waves. It takes the value passed from \code{getMIX()}.
#' @param curveFun A string specifying the functional form of the growth curve. Supported options for \code{y_model = "LGCM"} include:
#' \code{"linear"} (or \code{"LIN"}), \code{"quadratic"} (or \code{"QUAD"}), \code{"negative exponential"}
#' (or \code{"EXP"}), \code{"Jenss-Bayley"} (or \code{"JB"}), and \code{"bilinear spline"} (or \code{"BLS"}). Supported options for
#' \code{y_model = "LCSM"} include: \code{"quadratic"} (or \code{"QUAD"}), \code{"negative exponential"} (or \code{"EXP"}),
#' \code{"Jenss-Bayley"} (or \code{"JB"}), and \code{"nonparametric"} (or \code{"NonP"}). It takes the value passed from \code{getMIX()}.
#' @param x_type A string indicating the type of predictor variable used in the model. Supported values are \code{"baseline"}
#' and \code{"longitudinal"}. It takes the value passed from \code{getMIX()}.
#' @param records A numeric vector denoting the indices of the observed study waves. This applies when \code{sub_Model} is \code{"LGCM"},
#' \code{"LCSM"} or \code{"TVC"}. For \code{sub_Model} being \code{"MGM"} or \code{"MED"}, \code{records} should be a list of numeric vectors,
#' where each vector provides the indices of the observed study waves for each longitudinal process. It takes the value passed from \code{getMIX()}.
#' @param growth_TIC A string or character vector of column names of time-invariant covariate(s) accounting for the variability
#' of growth factors if any. It takes the value passed from \code{getMIX()}.
#' @param y_model A string that specifies how to fit longitudinal outcomes. Supported values are \code{"LGCM"} and \code{"LCSM"}.
#' It takes the value passed from \code{getMIX()}.
#' @param decompose An integer specifying the decomposition option for temporal states. Supported values include \code{0} (no
#' decomposition), \code{1} (decomposition with interval-specific slopes as temporal states), \code{2} (decomposition with interval-
#' specific changes as temporal states), and \code{3} (decomposition with change-from-baseline as temporal states). It takes the value passed
#' from \code{getMIX()}.
#' @param names A character vector specifying parameter names. It takes the value passed from \code{getMIX()}.
#'
#' @return A dataframe containing point estimates and standard errors for the parameters of interest for a mixture model.
#'
#' @keywords internal
#'
#' @importFrom OpenMx mxEval mxEvalByName mxSE diag2vec
#'
getMIX.output <- function(model, nClass, sub_Model, cluster_TIC, y_var, curveFun, x_type, records, growth_TIC,
y_model, decompose, names){
model.est <- model.se <- est <- list()
for (k in 1:nClass){
if (sub_Model == "LGCM"){
if (!is.null(growth_TIC)){
model.est[[k]] <- round(c(mxEvalByName(paste0("c", k, "Y_alpha0"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "Y_psi_r"), model = model@submodels[[k]])[
row(mxEvalByName(paste0("c", k, "Y_psi_r"), model = model@submodels[[k]])) >=
col(mxEvalByName(paste0("c", k, "Y_psi_r"), model = model@submodels[[k]]))],
model@output$estimate[grep(paste0("c", k, "Y_residuals"), names(model@output$estimate))],
mxEvalByName(paste0("c", k, "beta"), model = model@submodels[[k]]),
model@output$estimate[grep(paste0("c", k, "mux"), names(model@output$estimate))],
model@output$estimate[grep(paste0("c", k, "phi"), names(model@output$estimate))],
mxEvalByName(paste0("c", k, "Y_mean0"), model = model@submodels[[k]])), 4)
model.se[[k]] <- round(c(mxSE(paste0("Class", k, ".c", k, "Y_alpha0"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "Y_psi_r"), model, forceName = T)[
row(mxSE(paste0("Class", k, ".c", k, "Y_psi_r"), model, forceName = T)) >=
col(mxSE(paste0("Class", k, ".c", k, "Y_psi_r"), model, forceName = T))],
model@output$standardErrors[, 1][grep(paste0("c", k, "Y_residuals"), names(model@output$standardErrors[, 1]))],
mxSE(paste0("Class", k, ".c", k, "beta"), model, forceName = T),
model@output$standardErrors[, 1][grep(paste0("c", k, "mux"), names(model@output$standardErrors[, 1]))],
model@output$standardErrors[, 1][grep(paste0("c", k, "phi"), names(model@output$standardErrors[, 1]))],
mxSE(paste0("Class", k, ".c", k, "Y_mean0"), model, forceName = T)), 4)
}
else if (is.null(growth_TIC)){
model.est[[k]] <- round(c(mxEvalByName(paste0("c", k, "Y_mean0"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "Y_psi0"), model = model@submodels[[k]])[
row(mxEvalByName(paste0("c", k, "Y_psi0"), model = model@submodels[[k]])) >=
col(mxEvalByName(paste0("c", k, "Y_psi0"), model = model@submodels[[k]]))],
model@output$estimate[grep(paste0("c", k, "Y_residuals"), names(model@output$estimate))]), 4)
model.se[[k]] <- round(c(mxSE(paste0("Class", k, ".c", k, "Y_mean0"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "Y_psi0"), model, forceName = T)[
row(mxSE(paste0("Class", k, ".c", k, "Y_psi0"), model, forceName = T)) >=
col(mxSE(paste0("Class", k, ".c", k, "Y_psi0"), model, forceName = T))],
model@output$standardErrors[, 1][grep(paste0("c", k, "Y_residuals"), names(model@output$standardErrors[, 1]))]), 4)
}
}
else if (sub_Model == "LCSM"){
if (curveFun %in% c("nonparametric", "NonP")){
if (!is.null(growth_TIC)){
model.est[[k]] <- round(c(mxEvalByName(paste0("c", k, "Y_alpha0"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "Y_psi_r"), model = model@submodels[[k]])[
row(mxEvalByName(paste0("c", k, "Y_psi_r"), model = model@submodels[[k]])) >=
col(mxEvalByName(paste0("c", k, "Y_psi_r"), model = model@submodels[[k]]))],
model@output$estimate[grep(paste0("c", k, "Y_rel_rate"), names(model@output$estimate))],
model@output$estimate[grep(paste0("c", k, "Y_residuals"), names(model@output$estimate))],
mxEvalByName(paste0("c", k, "beta"), model = model@submodels[[k]]),
model@output$estimate[grep(paste0("c", k, "mux"), names(model@output$estimate))],
model@output$estimate[grep(paste0("c", k, "phi"), names(model@output$estimate))],
mxEvalByName(paste0("c", k, "Y_mean0"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "Yslp_m"), model = model@submodels[[k]]),
diag(mxEvalByName(paste0("c", k, "Yslp_v"), model = model@submodels[[k]])),
mxEvalByName(paste0("c", k, "Ychg_inv_m"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "Ychg_inv_v"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "Ychg_bl_m"), model = model@submodels[[k]]),
diag(mxEvalByName(paste0("c", k, "Ychg_bl_v"), model = model@submodels[[k]]))), 4)
model.se[[k]] <- round(c(mxSE(paste0("Class", k, ".c", k, "Y_alpha0"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "Y_psi_r"), model, forceName = T)[
row(mxSE(paste0("Class", k, ".c", k, "Y_psi_r"), model, forceName = T)) >=
col(mxSE(paste0("Class", k, ".c", k, "Y_psi_r"), model, forceName = T))],
model@output$standardErrors[, 1][grep(paste0("c", k, "Y_rel_rate"), names(model@output$standardErrors[, 1]))],
model@output$standardErrors[, 1][grep(paste0("c", k, "Y_residuals"), names(model@output$standardErrors[, 1]))],
mxSE(paste0("Class", k, ".c", k, "beta"), model, forceName = T),
model@output$standardErrors[, 1][grep(paste0("c", k, "mux"), names(model@output$standardErrors[, 1]))],
model@output$standardErrors[, 1][grep(paste0("c", k, "phi"), names(model@output$standardErrors[, 1]))],
mxSE(paste0("Class", k, ".c", k, "Y_mean0"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "Yslp_m"), model, forceName = T),
diag(mxSE(paste0("Class", k, ".c", k, "Yslp_v"), model, forceName = T)),
mxSE(paste0("Class", k, ".c", k, "Ychg_inv_m"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "Ychg_inv_v"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "Ychg_bl_m"), model, forceName = T),
diag(mxSE(paste0("Class", k, ".c", k, "Ychg_bl_v"), model, forceName = T))), 4)
}
else if (is.null(growth_TIC)){
model.est[[k]] <- round(c(mxEvalByName(paste0("c", k, "Y_mean0"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "Y_psi0"), model = model@submodels[[k]])[
row(mxEvalByName(paste0("c", k, "Y_psi0"), model = model@submodels[[k]])) >=
col(mxEvalByName(paste0("c", k, "Y_psi0"), model = model@submodels[[k]]))],
model@output$estimate[grep(paste0("c", k, "Y_rel_rate"), names(model@output$estimate))],
model@output$estimate[grep(paste0("c", k, "Y_residuals"), names(model@output$estimate))],
mxEvalByName(paste0("c", k, "Yslp_m"), model = model@submodels[[k]]),
diag(mxEvalByName(paste0("c", k, "Yslp_v"), model = model@submodels[[k]])),
mxEvalByName(paste0("c", k, "Ychg_inv_m"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "Ychg_inv_v"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "Ychg_bl_m"), model = model@submodels[[k]]),
diag(mxEvalByName(paste0("c", k, "Ychg_bl_v"), model = model@submodels[[k]]))), 4)
model.se[[k]] <- round(c(mxSE(paste0("Class", k, ".c", k, "Y_mean0"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "Y_psi0"), model, forceName = T)[
row(mxSE(paste0("Class", k, ".c", k, "Y_psi0"), model, forceName = T)) >=
col(mxSE(paste0("Class", k, ".c", k, "Y_psi0"), model, forceName = T))],
model@output$standardErrors[, 1][grep(paste0("c", k, "Y_rel_rate"), names(model@output$standardErrors[, 1]))],
model@output$standardErrors[, 1][grep(paste0("c", k, "Y_residuals"), names(model@output$standardErrors[, 1]))],
mxSE(paste0("Class", k, ".c", k, "Yslp_m"), model, forceName = T),
diag(mxSE(paste0("Class", k, ".c", k, "Yslp_v"), model, forceName = T)),
mxSE(paste0("Class", k, ".c", k, "Ychg_inv_m"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "Ychg_inv_v"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "Ychg_bl_m"), model, forceName = T),
diag(mxSE(paste0("Class", k, ".c", k, "Ychg_bl_v"), model, forceName = T))), 4)
}
}
else {
if (!is.null(growth_TIC)){
model.est[[k]] <- round(c(mxEvalByName(paste0("c", k, "Y_alpha0"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "Y_psi_r"), model = model@submodels[[k]])[
row(mxEvalByName(paste0("c", k, "Y_psi_r"), model = model@submodels[[k]])) >=
col(mxEvalByName(paste0("c", k, "Y_psi_r"), model = model@submodels[[k]]))],
model@output$estimate[grep(paste0("c", k, "Y_residuals"), names(model@output$estimate))],
mxEvalByName(paste0("c", k, "beta"), model = model@submodels[[k]]),
model@output$estimate[grep(paste0("c", k, "mux"), names(model@output$estimate))],
model@output$estimate[grep(paste0("c", k, "phi"), names(model@output$estimate))],
mxEvalByName(paste0("c", k, "Y_mean0"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "Yslp_m"), model = model@submodels[[k]]),
diag(mxEvalByName(paste0("c", k, "Yslp_v"), model = model@submodels[[k]])),
mxEvalByName(paste0("c", k, "Ychg_inv_m"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "Ychg_inv_v"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "Ychg_bl_m"), model = model@submodels[[k]]),
diag(mxEvalByName(paste0("c", k, "Ychg_bl_v"), model = model@submodels[[k]]))), 4)
model.se[[k]] <- round(c(mxSE(paste0("Class", k, ".c", k, "Y_alpha0"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "Y_psi_r"), model, forceName = T)[
row(mxSE(paste0("Class", k, ".c", k, "Y_psi_r"), model, forceName = T)) >=
col(mxSE(paste0("Class", k, ".c", k, "Y_psi_r"), model, forceName = T))],
model@output$standardErrors[, 1][grep(paste0("c", k, "Y_residuals"), names(model@output$standardErrors[, 1]))],
mxSE(paste0("Class", k, ".c", k, "beta"), model, forceName = T),
model@output$standardErrors[, 1][grep(paste0("c", k, "mux"), names(model@output$standardErrors[, 1]))],
model@output$standardErrors[, 1][grep(paste0("c", k, "phi"), names(model@output$standardErrors[, 1]))],
mxSE(paste0("Class", k, ".c", k, "Y_mean0"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "Yslp_m"), model, forceName = T),
diag(mxSE(paste0("Class", k, ".c", k, "Yslp_v"), model, forceName = T)),
mxSE(paste0("Class", k, ".c", k, "Ychg_inv_m"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "Ychg_inv_v"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "Ychg_bl_m"), model, forceName = T),
diag(mxSE(paste0("Class", k, ".c", k, "Ychg_bl_v"), model, forceName = T))), 4)
}
else if (is.null(growth_TIC)){
model.est[[k]] <- round(c(mxEvalByName(paste0("c", k, "Y_mean0"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "Y_psi0"), model = model@submodels[[k]])[
row(mxEvalByName(paste0("c", k, "Y_psi0"), model = model@submodels[[k]])) >=
col(mxEvalByName(paste0("c", k, "Y_psi0"), model = model@submodels[[k]]))],
model@output$estimate[grep(paste0("c", k, "Y_residuals"), names(model@output$estimate))],
mxEvalByName(paste0("c", k, "Yslp_m"), model = model@submodels[[k]]),
diag(mxEvalByName(paste0("c", k, "Yslp_v"), model = model@submodels[[k]])),
mxEvalByName(paste0("c", k, "Ychg_inv_m"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "Ychg_inv_v"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "Ychg_bl_m"), model = model@submodels[[k]]),
diag(mxEvalByName(paste0("c", k, "Ychg_bl_v"), model = model@submodels[[k]]))), 4)
model.se[[k]] <- round(c(mxSE(paste0("Class", k, ".c", k, "Y_mean0"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "Y_psi0"), model, forceName = T)[
row(mxSE(paste0("Class", k, ".c", k, "Y_psi0"), model, forceName = T)) >=
col(mxSE(paste0("Class", k, ".c", k, "Y_psi0"), model, forceName = T))],
model@output$standardErrors[, 1][grep(paste0("c", k, "Y_residuals"), names(model@output$standardErrors[, 1]))],
mxSE(paste0("Class", k, ".c", k, "Yslp_m"), model, forceName = T),
diag(mxSE(paste0("Class", k, ".c", k, "Yslp_v"), model, forceName = T)),
mxSE(paste0("Class", k, ".c", k, "Ychg_inv_m"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "Ychg_inv_v"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "Ychg_bl_m"), model, forceName = T),
diag(mxSE(paste0("Class", k, ".c", k, "Ychg_bl_v"), model, forceName = T))), 4)
}
}
}
else if (sub_Model == "TVC"){
if (decompose == 0){
if (y_model == "LGCM"){
if (!is.null(growth_TIC)){
model.est[[k]] <- round(c(mxEvalByName(paste0("c", k, "Y_alpha0"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "Y_psi_r"), model = model@submodels[[k]])[
row(mxEvalByName(paste0("c", k, "Y_psi_r"), model = model@submodels[[k]])) >=
col(mxEvalByName(paste0("c", k, "Y_psi_r"), model = model@submodels[[k]]))],
model@output$estimate[grep(paste0("c", k, "Y_residuals"), names(model@output$estimate))],
model@output$estimate[grep(paste0("c", k, "TVC_m"), names(model@output$estimate))],
model@output$estimate[grep(paste0("c", k, "TVC_v"), names(model@output$estimate))],
mxEvalByName(paste0("c", k, "beta"), model = model@submodels[[k]]),
model@output$estimate[grep(paste0("c", k, "mux"), names(model@output$estimate))],
model@output$estimate[grep(paste0("c", k, "phi"), names(model@output$estimate))],
mxEvalByName(paste0("c", k, "Y_mean0"), model = model@submodels[[k]]),
model@output$estimate[grep(paste0("c", k, "kappa"), names(model@output$estimate))]), 4)
model.se[[k]] <- round(c(mxSE(paste0("Class", k, ".c", k, "Y_alpha0"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "Y_psi_r"), model, forceName = T)[
row(mxSE(paste0("Class", k, ".c", k, "Y_psi_r"), model, forceName = T)) >=
col(mxSE(paste0("Class", k, ".c", k, "Y_psi_r"), model, forceName = T))],
model@output$standardErrors[, 1][grep(paste0("c", k, "Y_residuals"), names(model@output$standardErrors[, 1]))],
model@output$standardErrors[, 1][grep(paste0("c", k, "TVC_m"), names(model@output$standardErrors[, 1]))],
model@output$standardErrors[, 1][grep(paste0("c", k, "TVC_v"), names(model@output$standardErrors[, 1]))],
mxSE(paste0("Class", k, ".c", k, "beta"), model, forceName = T),
model@output$standardErrors[, 1][grep(paste0("c", k, "mux"), names(model@output$standardErrors[, 1]))],
model@output$standardErrors[, 1][grep(paste0("c", k, "phi"), names(model@output$standardErrors[, 1]))],
mxSE(paste0("Class", k, ".c", k, "Y_mean0"), model, forceName = T),
model@output$standardErrors[, 1][grep(paste0("c", k, "covBL"), names(model@output$standardErrors[, 1]))],
model@output$standardErrors[, 1][grep(paste0("c", k, "kappa"), names(model@output$standardErrors[, 1]))],
model@output$standardErrors[, 1][grep(paste0("c", k, "Cov_XYres"), names(model@output$standardErrors[, 1]))]), 4)
}
else if (is.null(growth_TIC)){
model.est[[k]] <- round(c(mxEvalByName(paste0("c", k, "Y_mean0"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "Y_psi0"), model = model@submodels[[k]])[
row(mxEvalByName(paste0("c", k, "Y_psi0"), model = model@submodels[[k]])) >=
col(mxEvalByName(paste0("c", k, "Y_psi0"), model = model@submodels[[k]]))],
model@output$estimate[grep(paste0("c", k, "Y_residuals"), names(model@output$estimate))],
model@output$estimate[grep(paste0("c", k, "TVC_m"), names(model@output$estimate))],
model@output$estimate[grep(paste0("c", k, "TVC_v"), names(model@output$estimate))],
model@output$estimate[grep(paste0("c", k, "kappa"), names(model@output$estimate))]), 4)
model.se[[k]] <- round(c(mxSE(paste0("Class", k, ".c", k, "Y_mean0"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "Y_psi0"), model, forceName = T)[
row(mxSE(paste0("Class", k, ".c", k, "Y_psi0"), model, forceName = T)) >=
col(mxSE(paste0("Class", k, ".c", k, "Y_psi0"), model, forceName = T))],
model@output$standardErrors[, 1][grep(paste0("c", k, "Y_residuals"), names(model@output$standardErrors[, 1]))],
model@output$standardErrors[, 1][grep(paste0("c", k, "TVC_m"), names(model@output$standardErrors[, 1]))],
model@output$standardErrors[, 1][grep(paste0("c", k, "TVC_v"), names(model@output$standardErrors[, 1]))],
model@output$standardErrors[, 1][grep(paste0("c", k, "kappa"), names(model@output$standardErrors[, 1]))]), 4)
}
est[[k]] <- data.frame(Name = paste0("c", k, names), Estimate = model.est[[k]], SE = model.se[[k]])
}
else if (y_model == "LCSM"){
if (curveFun %in% c("nonparametric", "NonP")){
if (!is.null(growth_TIC)){
model.est[[k]] <- round(c(mxEvalByName(paste0("c", k, "Y_alpha0"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "Y_psi_r"), model = model@submodels[[k]])[
row(mxEvalByName(paste0("c", k, "Y_psi_r"), model = model@submodels[[k]])) >=
col(mxEvalByName(paste0("c", k, "Y_psi_r"), model = model@submodels[[k]]))],
model@output$estimate[grep(paste0("c", k, "Y_rel_rate"), names(model@output$estimate))],
model@output$estimate[grep(paste0("c", k, "Y_residuals"), names(model@output$estimate))],
model@output$estimate[grep(paste0("c", k, "TVC_m"), names(model@output$estimate))],
model@output$estimate[grep(paste0("c", k, "TVC_v"), names(model@output$estimate))],
mxEvalByName(paste0("c", k, "beta"), model = model@submodels[[k]]),
model@output$estimate[grep(paste0("c", k, "mux"), names(model@output$estimate))],
model@output$estimate[grep(paste0("c", k, "phi"), names(model@output$estimate))],
mxEvalByName(paste0("c", k, "Y_mean0"), model = model@submodels[[k]]),
model@output$estimate[grep(paste0("c", k, "kappa"), names(model@output$estimate))],
mxEvalByName(paste0("c", k, "Yslp_m"), model = model@submodels[[k]]),
diag(mxEvalByName(paste0("c", k, "Yslp_v"), model = model@submodels[[k]])),
mxEvalByName(paste0("c", k, "Ychg_inv_m"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "Ychg_inv_v"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "Ychg_bl_m"), model = model@submodels[[k]]),
diag(mxEvalByName(paste0("c", k, "Ychg_bl_v"), model = model@submodels[[k]]))), 4)
model.se[[k]] <- round(c(mxSE(paste0("Class", k, ".c", k, "Y_alpha0"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "Y_psi_r"), model, forceName = T)[
row(mxSE(paste0("Class", k, ".c", k, "Y_psi_r"), model, forceName = T)) >=
col(mxSE(paste0("Class", k, ".c", k, "Y_psi_r"), model, forceName = T))],
model@output$standardErrors[, 1][grep(paste0("c", k, "Y_rel_rate"), names(model@output$standardErrors[, 1]))],
model@output$standardErrors[, 1][grep(paste0("c", k, "Y_residuals"), names(model@output$standardErrors[, 1]))],
model@output$standardErrors[, 1][grep(paste0("c", k, "TVC_m"), names(model@output$standardErrors[, 1]))],
model@output$standardErrors[, 1][grep(paste0("c", k, "TVC_v"), names(model@output$standardErrors[, 1]))],
mxSE(paste0("Class", k, ".c", k, "beta"), model, forceName = T),
model@output$standardErrors[, 1][grep(paste0("c", k, "mux"), names(model@output$standardErrors[, 1]))],
model@output$standardErrors[, 1][grep(paste0("c", k, "phi"), names(model@output$standardErrors[, 1]))],
mxSE(paste0("Class", k, ".c", k, "Y_mean0"), model, forceName = T),
model@output$standardErrors[, 1][grep(paste0("c", k, "kappa"), names(model@output$standardErrors[, 1]))],
mxSE(paste0("Class", k, ".c", k, "Yslp_m"), model, forceName = T),
diag(mxSE(paste0("Class", k, ".c", k, "Yslp_v"), model, forceName = T)),
mxSE(paste0("Class", k, ".c", k, "Ychg_inv_m"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "Ychg_inv_v"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "Ychg_bl_m"), model, forceName = T),
diag(mxSE(paste0("Class", k, ".c", k, "Ychg_bl_v"), model, forceName = T))), 4)
}
else if (is.null(growth_TIC)){
model.est[[k]] <- round(c(mxEvalByName(paste0("c", k, "Y_mean0"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "Y_psi0"), model = model@submodels[[k]])[
row(mxEvalByName(paste0("c", k, "Y_psi0"), model = model@submodels[[k]])) >=
col(mxEvalByName(paste0("c", k, "Y_psi0"), model = model@submodels[[k]]))],
model@output$estimate[grep(paste0("c", k, "Y_rel_rate"), names(model@output$estimate))],
model@output$estimate[grep(paste0("c", k, "Y_residuals"), names(model@output$estimate))],
model@output$estimate[grep(paste0("c", k, "TVC_m"), names(model@output$estimate))],
model@output$estimate[grep(paste0("c", k, "TVC_v"), names(model@output$estimate))],
model@output$estimate[grep(paste0("c", k, "kappa"), names(model@output$estimate))],
mxEvalByName(paste0("c", k, "Yslp_m"), model = model@submodels[[k]]),
diag(mxEvalByName(paste0("c", k, "Yslp_v"), model = model@submodels[[k]])),
mxEvalByName(paste0("c", k, "Ychg_inv_m"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "Ychg_inv_v"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "Ychg_bl_m"), model = model@submodels[[k]]),
diag(mxEvalByName(paste0("c", k, "Ychg_bl_v"), model = model@submodels[[k]]))), 4)
model.se[[k]] <- round(c(mxSE(paste0("Class", k, ".c", k, "Y_mean0"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "Y_psi0"), model, forceName = T)[
row(mxSE(paste0("Class", k, ".c", k, "Y_psi0"), model, forceName = T)) >=
col(mxSE(paste0("Class", k, ".c", k, "Y_psi0"), model, forceName = T))],
model@output$standardErrors[, 1][grep(paste0("c", k, "Y_rel_rate"), names(model@output$standardErrors[, 1]))],
model@output$standardErrors[, 1][grep(paste0("c", k, "Y_residuals"), names(model@output$standardErrors[, 1]))],
model@output$standardErrors[, 1][grep(paste0("c", k, "TVC_m"), names(model@output$standardErrors[, 1]))],
model@output$standardErrors[, 1][grep(paste0("c", k, "TVC_v"), names(model@output$standardErrors[, 1]))],
model@output$standardErrors[, 1][grep(paste0("c", k, "kappa"), names(model@output$standardErrors[, 1]))],
mxSE(paste0("Class", k, ".c", k, "Yslp_m"), model, forceName = T),
diag(mxSE(paste0("Class", k, ".c", k, "Yslp_v"), model, forceName = T)),
mxSE(paste0("Class", k, ".c", k, "Ychg_inv_m"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "Ychg_inv_v"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "Ychg_bl_m"), model, forceName = T),
diag(mxSE(paste0("Class", k, ".c", k, "Ychg_bl_v"), model, forceName = T))), 4)
}
}
else{
if (!is.null(growth_TIC)){
model.est[[k]] <- round(c(mxEvalByName(paste0("c", k, "Y_alpha0"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "Y_psi_r"), model = model@submodels[[k]])[
row(mxEvalByName(paste0("c", k, "Y_psi_r"), model = model@submodels[[k]])) >=
col(mxEvalByName(paste0("c", k, "Y_psi_r"), model = model@submodels[[k]]))],
model@output$estimate[grep(paste0("c", k, "Y_residuals"), names(model@output$estimate))],
model@output$estimate[grep(paste0("c", k, "TVC_m"), names(model@output$estimate))],
model@output$estimate[grep(paste0("c", k, "TVC_v"), names(model@output$estimate))],
mxEvalByName(paste0("c", k, "beta"), model = model@submodels[[k]]),
model@output$estimate[grep(paste0("c", k, "mux"), names(model@output$estimate))],
model@output$estimate[grep(paste0("c", k, "phi"), names(model@output$estimate))],
mxEvalByName(paste0("c", k, "Y_mean0"), model = model@submodels[[k]]),
model@output$estimate[grep(paste0("c", k, "kappa"), names(model@output$estimate))],
mxEvalByName(paste0("c", k, "Yslp_m"), model = model@submodels[[k]]),
diag(mxEvalByName(paste0("c", k, "Yslp_v"), model = model@submodels[[k]])),
mxEvalByName(paste0("c", k, "Ychg_inv_m"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "Ychg_inv_v"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "Ychg_bl_m"), model = model@submodels[[k]]),
diag(mxEvalByName(paste0("c", k, "Ychg_bl_v"), model = model@submodels[[k]]))), 4)
model.se[[k]] <- round(c(mxSE(paste0("Class", k, ".c", k, "Y_alpha0"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "Y_psi_r"), model, forceName = T)[
row(mxSE(paste0("Class", k, ".c", k, "Y_psi_r"), model, forceName = T)) >=
col(mxSE(paste0("Class", k, ".c", k, "Y_psi_r"), model, forceName = T))],
model@output$standardErrors[, 1][grep(paste0("c", k, "Y_residuals"), names(model@output$standardErrors[, 1]))],
model@output$standardErrors[, 1][grep(paste0("c", k, "TVC_m"), names(model@output$standardErrors[, 1]))],
model@output$standardErrors[, 1][grep(paste0("c", k, "TVC_v"), names(model@output$standardErrors[, 1]))],
mxSE(paste0("Class", k, ".c", k, "beta"), model, forceName = T),
model@output$standardErrors[, 1][grep(paste0("c", k, "mux"), names(model@output$standardErrors[, 1]))],
model@output$standardErrors[, 1][grep(paste0("c", k, "phi"), names(model@output$standardErrors[, 1]))],
mxSE(paste0("Class", k, ".c", k, "Y_mean0"), model, forceName = T),
model@output$standardErrors[, 1][grep(paste0("c", k, "kappa"), names(model@output$standardErrors[, 1]))],
mxSE(paste0("Class", k, ".c", k, "Yslp_m"), model, forceName = T),
diag(mxSE(paste0("Class", k, ".c", k, "Yslp_v"), model, forceName = T)),
mxSE(paste0("Class", k, ".c", k, "Ychg_inv_m"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "Ychg_inv_v"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "Ychg_bl_m"), model, forceName = T),
diag(mxSE(paste0("Class", k, ".c", k, "Ychg_bl_v"), model, forceName = T))), 4)
}
else if (is.null(growth_TIC)){
model.est[[k]] <- round(c(mxEvalByName(paste0("c", k, "Y_mean0"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "Y_psi0"), model = model@submodels[[k]])[
row(mxEvalByName(paste0("c", k, "Y_psi0"), model = model@submodels[[k]])) >=
col(mxEvalByName(paste0("c", k, "Y_psi0"), model = model@submodels[[k]]))],
model@output$estimate[grep(paste0("c", k, "Y_residuals"), names(model@output$estimate))],
model@output$estimate[grep(paste0("c", k, "TVC_m"), names(model@output$estimate))],
model@output$estimate[grep(paste0("c", k, "TVC_v"), names(model@output$estimate))],
model@output$estimate[grep(paste0("c", k, "kappa"), names(model@output$estimate))],
mxEvalByName(paste0("c", k, "Yslp_m"), model = model@submodels[[k]]),
diag(mxEvalByName(paste0("c", k, "Yslp_v"), model = model@submodels[[k]])),
mxEvalByName(paste0("c", k, "Ychg_inv_m"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "Ychg_inv_v"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "Ychg_bl_m"), model = model@submodels[[k]]),
diag(mxEvalByName(paste0("c", k, "Ychg_bl_v"), model = model@submodels[[k]]))), 4)
model.se[[k]] <- round(c(mxSE(paste0("Class", k, ".c", k, "Y_mean0"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "Y_psi0"), model, forceName = T)[
row(mxSE(paste0("Class", k, ".c", k, "Y_psi0"), model, forceName = T)) >=
col(mxSE(paste0("Class", k, ".c", k, "Y_psi0"), model, forceName = T))],
model@output$standardErrors[, 1][grep(paste0("c", k, "Y_residuals"), names(model@output$standardErrors[, 1]))],
model@output$standardErrors[, 1][grep(paste0("c", k, "TVC_m"), names(model@output$standardErrors[, 1]))],
model@output$standardErrors[, 1][grep(paste0("c", k, "TVC_v"), names(model@output$standardErrors[, 1]))],
model@output$standardErrors[, 1][grep(paste0("c", k, "kappa"), names(model@output$standardErrors[, 1]))],
mxSE(paste0("Class", k, ".c", k, "Yslp_m"), model, forceName = T),
diag(mxSE(paste0("Class", k, ".c", k, "Yslp_v"), model, forceName = T)),
mxSE(paste0("Class", k, ".c", k, "Ychg_inv_m"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "Ychg_inv_v"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "Ychg_bl_m"), model, forceName = T),
diag(mxSE(paste0("Class", k, ".c", k, "Ychg_bl_v"), model, forceName = T))), 4)
}
}
est[[k]] <- data.frame(Name = paste0("c", k, names), Estimate = model.est[[k]], SE = model.se[[k]])
}
}
else if (decompose != 0){
if (y_model == "LGCM"){
X_slp_m.est <- X_slp_m.se <- rep(0, length(records) - 1)
for (j in records[-1]){
X_slp_m.est[j - 1] <- mxEvalByName(paste0("c", k, "abs_rate", j), model = model@submodels[[k]])
X_slp_m.se[j - 1] <- mxSE(paste0("Class", k, ".c", k, "abs_rate", j), model = model, forceName = T)
}
if (!is.null(growth_TIC)){
model.est[[k]] <- round(c(mxEvalByName(paste0("c", k, "Y_alpha0"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "Y_psi_r"), model = model@submodels[[k]])[
row(mxEvalByName(paste0("c", k, "Y_psi_r"), model = model@submodels[[k]])) >=
col(mxEvalByName(paste0("c", k, "Y_psi_r"), model = model@submodels[[k]]))],
model@output$estimate[grep(paste0("c", k, "Y_residuals"), names(model@output$estimate))],
mxEvalByName(paste0("c", k, "X_mean0"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "X_psi0"), model = model@submodels[[k]])[
row(mxEvalByName(paste0("c", k, "X_psi0"), model = model@submodels[[k]])) >=
col(mxEvalByName(paste0("c", k, "X_psi0"), model = model@submodels[[k]]))],
model@output$estimate[grep(paste0("c", k, "X_rel_rate"), names(model@output$estimate))], X_slp_m.est,
model@output$estimate[grep(paste0("c", k, "X_residuals"), names(model@output$estimate))],
mxEvalByName(paste0("c", k, "beta"), model = model@submodels[[k]]),
model@output$estimate[grep(paste0("c", k, "mux"), names(model@output$estimate))],
model@output$estimate[grep(paste0("c", k, "phi"), names(model@output$estimate))],
mxEvalByName(paste0("c", k, "Y_mean0"), model = model@submodels[[k]]),
model@output$estimate[grep(paste0("c", k, "covBL"), names(model@output$estimate))],
model@output$estimate[grep(paste0("c", k, "kappa"), names(model@output$estimate))],
model@output$estimate[grep(paste0("c", k, "Cov_XYres"), names(model@output$estimate))]), 4)
model.se[[k]] <- round(c(mxSE(paste0("Class", k, ".c", k, "Y_alpha0"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "Y_psi_r"), model, forceName = T)[
row(mxSE(paste0("Class", k, ".c", k, "Y_psi_r"), model, forceName = T)) >=
col(mxSE(paste0("Class", k, ".c", k, "Y_psi_r"), model, forceName = T))],
model@output$standardErrors[, 1][grep(paste0("c", k, "Y_residuals"), names(model@output$standardErrors[, 1]))],
mxSE(paste0("Class", k, ".c", k, "X_mean0"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "X_psi0"), model, forceName = T)[
row(mxSE(paste0("Class", k, ".c", k, "X_psi0"), model, forceName = T)) >=
col(mxSE(paste0("Class", k, ".c", k, "X_psi0"), model, forceName = T))],
model@output$standardErrors[, 1][grep(paste0("c", k, "X_rel_rate"), names(model@output$standardErrors[, 1]))], X_slp_m.se,
model@output$standardErrors[, 1][grep(paste0("c", k, "X_residuals"), names(model@output$standardErrors[, 1]))],
mxSE(paste0("Class", k, ".c", k, "beta"), model, forceName = T),
model@output$standardErrors[, 1][grep(paste0("c", k, "mux"), names(model@output$standardErrors[, 1]))],
model@output$standardErrors[, 1][grep(paste0("c", k, "phi"), names(model@output$standardErrors[, 1]))],
mxSE(paste0("Class", k, ".c", k, "Y_mean0"), model, forceName = T),
model@output$standardErrors[, 1][grep(paste0("c", k, "covBL"), names(model@output$standardErrors[, 1]))],
model@output$standardErrors[, 1][grep(paste0("c", k, "kappa"), names(model@output$standardErrors[, 1]))],
model@output$standardErrors[, 1][grep(paste0("c", k, "Cov_XYres"), names(model@output$standardErrors[, 1]))]), 4)
}
else if (is.null(growth_TIC)){
model.est[[k]] <- round(c(mxEvalByName(paste0("c", k, "Y_alpha0"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "Y_psi_r"), model = model@submodels[[k]])[
row(mxEvalByName(paste0("c", k, "Y_psi_r"), model = model@submodels[[k]])) >=
col(mxEvalByName(paste0("c", k, "Y_psi_r"), model = model@submodels[[k]]))],
model@output$estimate[grep(paste0("c", k, "Y_residuals"), names(model@output$estimate))],
mxEvalByName(paste0("c", k, "X_mean0"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "X_psi0"), model = model@submodels[[k]])[
row(mxEvalByName(paste0("c", k, "X_psi0"), model = model@submodels[[k]])) >=
col(mxEvalByName(paste0("c", k, "X_psi0"), model = model@submodels[[k]]))],
model@output$estimate[grep(paste0("c", k, "X_rel_rate"), names(model@output$estimate))], X_slp_m.est,
model@output$estimate[grep(paste0("c", k, "X_residuals"), names(model@output$estimate))],
mxEvalByName(paste0("c", k, "beta"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "Y_mean0"), model = model@submodels[[k]]),
model@output$estimate[grep(paste0("c", k, "kappa"), names(model@output$estimate))],
model@output$estimate[grep(paste0("c", k, "Cov_XYres"), names(model@output$estimate))]), 4)
model.se[[k]] <- round(c(mxSE(paste0("Class", k, ".c", k, "Y_alpha0"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "Y_psi_r"), model, forceName = T)[
row(mxSE(paste0("Class", k, ".c", k, "Y_psi_r"), model, forceName = T)) >=
col(mxSE(paste0("Class", k, ".c", k, "Y_psi_r"), model, forceName = T))],
model@output$standardErrors[, 1][grep(paste0("c", k, "Y_residuals"), names(model@output$standardErrors[, 1]))],
mxSE(paste0("Class", k, ".c", k, "X_mean0"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "X_psi0"), model, forceName = T)[
row(mxSE(paste0("Class", k, ".c", k, "X_psi0"), model, forceName = T)) >=
col(mxSE(paste0("Class", k, ".c", k, "X_psi0"), model, forceName = T))],
model@output$standardErrors[, 1][grep(paste0("c", k, "X_rel_rate"), names(model@output$standardErrors[, 1]))], X_slp_m.se,
model@output$standardErrors[, 1][grep(paste0("c", k, "X_residuals"), names(model@output$standardErrors[, 1]))],
mxSE(paste0("Class", k, ".c", k, "beta"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "Y_mean0"), model, forceName = T),
model@output$standardErrors[, 1][grep(paste0("c", k, "kappa"), names(model@output$standardErrors[, 1]))],
model@output$standardErrors[, 1][grep(paste0("c", k, "Cov_XYres"), names(model@output$standardErrors[, 1]))]), 4)
}
est[[k]] <- data.frame(Name = paste0("c", k, names), Estimate = model.est[[k]], SE = model.se[[k]])
}
else if (y_model == "LCSM"){
X_slp_m.est <- X_slp_m.se <- rep(0, length(records) - 1)
for (j in records[-1]){
X_slp_m.est[j - 1] <- mxEvalByName(paste0("c", k, "abs_rate", j), model = model@submodels[[k]])
X_slp_m.se[j - 1] <- mxSE(paste0("Class", k, ".c", k, "abs_rate", j), model = model, forceName = T)
}
if (curveFun %in% c("nonparametric", "NonP")){
if (!is.null(growth_TIC)){
model.est[[k]] <- round(c(mxEvalByName(paste0("c", k, "Y_alpha0"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "Y_psi_r"), model = model@submodels[[k]])[
row(mxEvalByName(paste0("c", k, "Y_psi_r"), model = model@submodels[[k]])) >=
col(mxEvalByName(paste0("c", k, "Y_psi_r"), model = model@submodels[[k]]))],
model@output$estimate[grep(paste0("c", k, "Y_rel_rate"), names(model@output$estimate))],
model@output$estimate[grep(paste0("c", k, "Y_residuals"), names(model@output$estimate))],
mxEvalByName(paste0("c", k, "X_mean0"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "X_psi0"), model = model@submodels[[k]])[
row(mxEvalByName(paste0("c", k, "X_psi0"), model = model@submodels[[k]])) >=
col(mxEvalByName(paste0("c", k, "X_psi0"), model = model@submodels[[k]]))],
model@output$estimate[grep(paste0("c", k, "X_rel_rate"), names(model@output$estimate))], X_slp_m.est,
model@output$estimate[grep(paste0("c", k, "X_residuals"), names(model@output$estimate))],
mxEvalByName(paste0("c", k, "beta"), model = model@submodels[[k]]),
model@output$estimate[grep(paste0("c", k, "mux"), names(model@output$estimate))],
model@output$estimate[grep(paste0("c", k, "phi"), names(model@output$estimate))],
mxEvalByName(paste0("c", k, "Y_mean0"), model = model@submodels[[k]]),
model@output$estimate[grep(paste0("c", k, "covBL"), names(model@output$estimate))],
model@output$estimate[grep(paste0("c", k, "kappa"), names(model@output$estimate))],
model@output$estimate[grep(paste0("c", k, "Cov_XYres"), names(model@output$estimate))],
mxEvalByName(paste0("c", k, "Yslp_m"), model = model@submodels[[k]]),
diag(mxEvalByName(paste0("c", k, "Yslp_v"), model = model@submodels[[k]])),
mxEvalByName(paste0("c", k, "Ychg_inv_m"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "Ychg_inv_v"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "Ychg_bl_m"), model = model@submodels[[k]]),
diag(mxEvalByName(paste0("c", k, "Ychg_bl_v"), model = model@submodels[[k]]))), 4)
model.se[[k]] <- round(c(mxSE(paste0("Class", k, ".c", k, "Y_alpha0"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "Y_psi_r"), model, forceName = T)[
row(mxSE(paste0("Class", k, ".c", k, "Y_psi_r"), model, forceName = T)) >=
col(mxSE(paste0("Class", k, ".c", k, "Y_psi_r"), model, forceName = T))],
model@output$standardErrors[, 1][grep(paste0("c", k, "Y_rel_rate"), names(model@output$standardErrors[, 1]))],
model@output$standardErrors[, 1][grep(paste0("c", k, "Y_residuals"), names(model@output$standardErrors[, 1]))],
mxSE(paste0("Class", k, ".c", k, "X_mean0"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "X_psi0"), model, forceName = T)[
row(mxSE(paste0("Class", k, ".c", k, "X_psi0"), model, forceName = T)) >=
col(mxSE(paste0("Class", k, ".c", k, "X_psi0"), model, forceName = T))],
model@output$standardErrors[, 1][grep(paste0("c", k, "X_rel_rate"), names(model@output$standardErrors[, 1]))], X_slp_m.se,
model@output$standardErrors[, 1][grep(paste0("c", k, "X_residuals"), names(model@output$standardErrors[, 1]))],
mxSE(paste0("Class", k, ".c", k, "beta"), model, forceName = T),
model@output$standardErrors[, 1][grep(paste0("c", k, "mux"), names(model@output$standardErrors[, 1]))],
model@output$standardErrors[, 1][grep(paste0("c", k, "phi"), names(model@output$standardErrors[, 1]))],
mxSE(paste0("Class", k, ".c", k, "Y_mean0"), model, forceName = T),
model@output$standardErrors[, 1][grep(paste0("c", k, "covBL"), names(model@output$standardErrors[, 1]))],
model@output$standardErrors[, 1][grep(paste0("c", k, "kappa"), names(model@output$standardErrors[, 1]))],
model@output$standardErrors[, 1][grep(paste0("c", k, "Cov_XYres"), names(model@output$standardErrors[, 1]))],
mxSE(paste0("Class", k, ".c", k, "Yslp_m"), model, forceName = T),
diag(mxSE(paste0("Class", k, ".c", k, "Yslp_v"), model, forceName = T)),
mxSE(paste0("Class", k, ".c", k, "Ychg_inv_m"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "Ychg_inv_v"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "Ychg_bl_m"), model, forceName = T),
diag(mxSE(paste0("Class", k, ".c", k, "Ychg_bl_v"), model, forceName = T))), 4)
}
else if (is.null(growth_TIC)){
model.est[[k]] <- round(c(mxEvalByName(paste0("c", k, "Y_alpha0"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "Y_psi_r"), model = model@submodels[[k]])[
row(mxEvalByName(paste0("c", k, "Y_psi_r"), model = model@submodels[[k]])) >=
col(mxEvalByName(paste0("c", k, "Y_psi_r"), model = model@submodels[[k]]))],
model@output$estimate[grep(paste0("c", k, "Y_rel_rate"), names(model@output$estimate))],
model@output$estimate[grep(paste0("c", k, "Y_residuals"), names(model@output$estimate))],
mxEvalByName(paste0("c", k, "X_mean0"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "X_psi0"), model = model@submodels[[k]])[
row(mxEvalByName(paste0("c", k, "X_psi0"), model = model@submodels[[k]])) >=
col(mxEvalByName(paste0("c", k, "X_psi0"), model = model@submodels[[k]]))],
model@output$estimate[grep(paste0("c", k, "X_rel_rate"), names(model@output$estimate))], X_slp_m.est,
model@output$estimate[grep(paste0("c", k, "X_residuals"), names(model@output$estimate))],
mxEvalByName(paste0("c", k, "beta"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "Y_mean0"), model = model@submodels[[k]]),
model@output$estimate[grep(paste0("c", k, "kappa"), names(model@output$estimate))],
model@output$estimate[grep(paste0("c", k, "Cov_XYres"), names(model@output$estimate))],
mxEvalByName(paste0("c", k, "Yslp_m"), model = model@submodels[[k]]),
diag(mxEvalByName(paste0("c", k, "Yslp_v"), model = model@submodels[[k]])),
mxEvalByName(paste0("c", k, "Ychg_inv_m"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "Ychg_inv_v"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "Ychg_bl_m"), model = model@submodels[[k]]),
diag(mxEvalByName(paste0("c", k, "Ychg_bl_v"), model = model@submodels[[k]]))), 4)
model.se[[k]] <- round(c(mxSE(paste0("Class", k, ".c", k, "Y_alpha0"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "Y_psi_r"), model, forceName = T)[
row(mxSE(paste0("Class", k, ".c", k, "Y_psi_r"), model, forceName = T)) >=
col(mxSE(paste0("Class", k, ".c", k, "Y_psi_r"), model, forceName = T))],
model@output$standardErrors[, 1][grep(paste0("c", k, "Y_rel_rate"), names(model@output$standardErrors[, 1]))],
model@output$standardErrors[, 1][grep(paste0("c", k, "Y_residuals"), names(model@output$standardErrors[, 1]))],
mxSE(paste0("Class", k, ".c", k, "X_mean0"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "X_psi0"), model, forceName = T)[
row(mxSE(paste0("Class", k, ".c", k, "X_psi0"), model, forceName = T)) >=
col(mxSE(paste0("Class", k, ".c", k, "X_psi0"), model, forceName = T))],
model@output$standardErrors[, 1][grep(paste0("c", k, "X_rel_rate"), names(model@output$standardErrors[, 1]))], X_slp_m.se,
model@output$standardErrors[, 1][grep(paste0("c", k, "X_residuals"), names(model@output$standardErrors[, 1]))],
mxSE(paste0("Class", k, ".c", k, "beta"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "Y_mean0"), model, forceName = T),
model@output$standardErrors[, 1][grep(paste0("c", k, "kappa"), names(model@output$standardErrors[, 1]))],
model@output$standardErrors[, 1][grep(paste0("c", k, "Cov_XYres"), names(model@output$standardErrors[, 1]))],
mxSE(paste0("Class", k, ".c", k, "Yslp_m"), model, forceName = T),
diag(mxSE(paste0("Class", k, ".c", k, "Yslp_v"), model, forceName = T)),
mxSE(paste0("Class", k, ".c", k, "Ychg_inv_m"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "Ychg_inv_v"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "Ychg_bl_m"), model, forceName = T),
diag(mxSE(paste0("Class", k, ".c", k, "Ychg_bl_v"), model, forceName = T))), 4)
}
}
else{
if (!is.null(growth_TIC)){
model.est[[k]] <- round(c(mxEvalByName(paste0("c", k, "Y_alpha0"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "Y_psi_r"), model = model@submodels[[k]])[
row(mxEvalByName(paste0("c", k, "Y_psi_r"), model = model@submodels[[k]])) >=
col(mxEvalByName(paste0("c", k, "Y_psi_r"), model = model@submodels[[k]]))],
model@output$estimate[grep(paste0("c", k, "Y_residuals"), names(model@output$estimate))],
mxEvalByName(paste0("c", k, "X_mean0"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "X_psi0"), model = model@submodels[[k]])[
row(mxEvalByName(paste0("c", k, "X_psi0"), model = model@submodels[[k]])) >=
col(mxEvalByName(paste0("c", k, "X_psi0"), model = model@submodels[[k]]))],
model@output$estimate[grep(paste0("c", k, "X_rel_rate"), names(model@output$estimate))], X_slp_m.est,
model@output$estimate[grep(paste0("c", k, "X_residuals"), names(model@output$estimate))],
mxEvalByName(paste0("c", k, "beta"), model = model@submodels[[k]]),
model@output$estimate[grep(paste0("c", k, "mux"), names(model@output$estimate))],
model@output$estimate[grep(paste0("c", k, "phi"), names(model@output$estimate))],
mxEvalByName(paste0("c", k, "Y_mean0"), model = model@submodels[[k]]),
model@output$estimate[grep(paste0("c", k, "covBL"), names(model@output$estimate))],
model@output$estimate[grep(paste0("c", k, "kappa"), names(model@output$estimate))],
model@output$estimate[grep(paste0("c", k, "Cov_XYres"), names(model@output$estimate))],
mxEvalByName(paste0("c", k, "Yslp_m"), model = model@submodels[[k]]),
diag(mxEvalByName(paste0("c", k, "Yslp_v"), model = model@submodels[[k]])),
mxEvalByName(paste0("c", k, "Ychg_inv_m"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "Ychg_inv_v"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "Ychg_bl_m"), model = model@submodels[[k]]),
diag(mxEvalByName(paste0("c", k, "Ychg_bl_v"), model = model@submodels[[k]]))), 4)
model.se[[k]] <- round(c(mxSE(paste0("Class", k, ".c", k, "Y_alpha0"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "Y_psi_r"), model, forceName = T)[
row(mxSE(paste0("Class", k, ".c", k, "Y_psi_r"), model, forceName = T)) >=
col(mxSE(paste0("Class", k, ".c", k, "Y_psi_r"), model, forceName = T))],
model@output$standardErrors[, 1][grep(paste0("c", k, "Y_residuals"), names(model@output$standardErrors[, 1]))],
mxSE(paste0("Class", k, ".c", k, "X_mean0"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "X_psi0"), model, forceName = T)[
row(mxSE(paste0("Class", k, ".c", k, "X_psi0"), model, forceName = T)) >=
col(mxSE(paste0("Class", k, ".c", k, "X_psi0"), model, forceName = T))],
model@output$standardErrors[, 1][grep(paste0("c", k, "X_rel_rate"), names(model@output$standardErrors[, 1]))], X_slp_m.se,
model@output$standardErrors[, 1][grep(paste0("c", k, "X_residuals"), names(model@output$standardErrors[, 1]))],
mxSE(paste0("Class", k, ".c", k, "beta"), model, forceName = T),
model@output$standardErrors[, 1][grep(paste0("c", k, "mux"), names(model@output$standardErrors[, 1]))],
model@output$standardErrors[, 1][grep(paste0("c", k, "phi"), names(model@output$standardErrors[, 1]))],
mxSE(paste0("Class", k, ".c", k, "Y_mean0"), model, forceName = T),
model@output$standardErrors[, 1][grep(paste0("c", k, "covBL"), names(model@output$standardErrors[, 1]))],
model@output$standardErrors[, 1][grep(paste0("c", k, "kappa"), names(model@output$standardErrors[, 1]))],
model@output$standardErrors[, 1][grep(paste0("c", k, "Cov_XYres"), names(model@output$standardErrors[, 1]))],
mxSE(paste0("Class", k, ".c", k, "Yslp_m"), model, forceName = T),
diag(mxSE(paste0("Class", k, ".c", k, "Yslp_v"), model, forceName = T)),
mxSE(paste0("Class", k, ".c", k, "Ychg_inv_m"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "Ychg_inv_v"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "Ychg_bl_m"), model, forceName = T),
diag(mxSE(paste0("Class", k, ".c", k, "Ychg_bl_v"), model, forceName = T))), 4)
}
else if (is.null(growth_TIC)){
model.est[[k]] <- round(c(mxEvalByName(paste0("c", k, "Y_alpha0"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "Y_psi_r"), model = model@submodels[[k]])[
row(mxEvalByName(paste0("c", k, "Y_psi_r"), model = model@submodels[[k]])) >=
col(mxEvalByName(paste0("c", k, "Y_psi_r"), model = model@submodels[[k]]))],
model@output$estimate[grep(paste0("c", k, "Y_residuals"), names(model@output$estimate))],
mxEvalByName(paste0("c", k, "X_mean0"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "X_psi0"), model = model@submodels[[k]])[
row(mxEvalByName(paste0("c", k, "X_psi0"), model = model@submodels[[k]])) >=
col(mxEvalByName(paste0("c", k, "X_psi0"), model = model@submodels[[k]]))],
model@output$estimate[grep(paste0("c", k, "X_rel_rate"), names(model@output$estimate))], X_slp_m.est,
model@output$estimate[grep(paste0("c", k, "X_residuals"), names(model@output$estimate))],
mxEvalByName(paste0("c", k, "beta"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "Y_mean0"), model = model@submodels[[k]]),
model@output$estimate[grep(paste0("c", k, "kappa"), names(model@output$estimate))],
model@output$estimate[grep(paste0("c", k, "Cov_XYres"), names(model@output$estimate))],
mxEvalByName(paste0("c", k, "Yslp_m"), model = model@submodels[[k]]),
diag(mxEvalByName(paste0("c", k, "Yslp_v"), model = model@submodels[[k]])),
mxEvalByName(paste0("c", k, "Ychg_inv_m"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "Ychg_inv_v"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "Ychg_bl_m"), model = model@submodels[[k]]),
diag(mxEvalByName(paste0("c", k, "Ychg_bl_v"), model = model@submodels[[k]]))), 4)
model.se[[k]] <- round(c(mxSE(paste0("Class", k, ".c", k, "Y_alpha0"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "Y_psi_r"), model, forceName = T)[
row(mxSE(paste0("Class", k, ".c", k, "Y_psi_r"), model, forceName = T)) >=
col(mxSE(paste0("Class", k, ".c", k, "Y_psi_r"), model, forceName = T))],
model@output$standardErrors[, 1][grep(paste0("c", k, "Y_residuals"), names(model@output$standardErrors[, 1]))],
mxSE(paste0("Class", k, ".c", k, "X_mean0"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "X_psi0"), model, forceName = T)[
row(mxSE(paste0("Class", k, ".c", k, "X_psi0"), model, forceName = T)) >=
col(mxSE(paste0("Class", k, ".c", k, "X_psi0"), model, forceName = T))],
model@output$standardErrors[, 1][grep(paste0("c", k, "X_rel_rate"), names(model@output$standardErrors[, 1]))], X_slp_m.se,
model@output$standardErrors[, 1][grep(paste0("c", k, "X_residuals"), names(model@output$standardErrors[, 1]))],
mxSE(paste0("Class", k, ".c", k, "beta"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "Y_mean0"), model, forceName = T),
model@output$standardErrors[, 1][grep(paste0("c", k, "kappa"), names(model@output$standardErrors[, 1]))],
model@output$standardErrors[, 1][grep(paste0("c", k, "Cov_XYres"), names(model@output$standardErrors[, 1]))],
mxSE(paste0("Class", k, ".c", k, "Yslp_m"), model, forceName = T),
diag(mxSE(paste0("Class", k, ".c", k, "Yslp_v"), model, forceName = T)),
mxSE(paste0("Class", k, ".c", k, "Ychg_inv_m"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "Ychg_inv_v"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "Ychg_bl_m"), model, forceName = T),
diag(mxSE(paste0("Class", k, ".c", k, "Ychg_bl_v"), model, forceName = T))), 4)
}
}
est[[k]] <- data.frame(Name = paste0("c", k, names), Estimate = model.est[[k]], SE = model.se[[k]])
}
}
}
else if (sub_Model == "MGM"){
mean_est <- mean_se <- psi_est <- psi_se <- res_est <- res_se <-
psi_btw_est <- psi_btw_se <- res_btw_est <- res_btw_se <- outcome_est <- outcome_se <- btw_est <- btw_se <- list()
for (traj in 1:length(y_var)){
mean_est[[traj]] <- mxEvalByName(paste0("c", k, y_var[traj], "_mean0"), model = model@submodels[[k]])
mean_se[[traj]] <- mxSE(paste0("Class", k, ".c", k, y_var[traj], "_mean0"), model, forceName = T)
psi_est[[traj]] <- mxEvalByName(paste0("c", k, y_var[traj], "_psi0"), model = model@submodels[[k]])
psi_se[[traj]] <- mxSE(paste0("Class", k, ".c", k, y_var[traj], "_psi0"), model, forceName = T)
res_est[[traj]] <- model@output$estimate[grep(paste0("c", k, y_var[traj], "_residuals"),
names(model@output$estimate))]
res_se[[traj]] <- model@output$standardErrors[, 1][grep(paste0("c", k, y_var[traj], "_residuals"),
names(model@output$standardErrors[, 1]))]
outcome_est[[traj]] <- c(unlist(mean_est[[traj]]), psi_est[[traj]][row(psi_est[[traj]]) >= col(psi_est[[traj]])],
res_est[[traj]])
outcome_se[[traj]] <- c(unlist(mean_se[[traj]]), psi_se[[traj]][row(psi_se[[traj]]) >= col(psi_se[[traj]])], res_se[[traj]])
}
for (traj_i in 1:(length(y_var) - 1)){
for (traj_j in traj_i:(length(y_var) - 1)){
psi_btw_est[[traj_i + traj_j - 1]] <- mxEvalByName(paste0("c", k, y_var[traj_i], y_var[traj_j + 1],
"_psi"), model = model@submodels[[k]])
psi_btw_se[[traj_i + traj_j - 1]] <- mxSE(paste0("Class", k, ".c", k, y_var[traj_i], y_var[traj_j + 1], "_psi"),
model, forceName = T)
res_btw_est[[length(res_btw_est) + 1]] <- model@output$estimate[grep(paste0("c", k, y_var[traj_i], y_var[traj_j + 1], "_RES"), names(model@output$estimate))]
res_btw_se[[length(res_btw_se) + 1]] <- model@output$standardErrors[, 1][grep(paste0("c", k, y_var[traj_i], y_var[traj_j + 1], "_RES"),
names(model@output$standardErrors[, 1]))]
btw_est[[length(btw_est) + 1]] <- c(unlist(c(psi_btw_est)), unlist(res_btw_est))
btw_se[[length(btw_se) + 1]] <- c(unlist(c(psi_btw_se)), unlist(res_btw_se))
}
}
if (y_model == "LGCM"){
model.est[[k]] <- round(c(unlist(outcome_est), unlist(btw_est)), 4)
model.se[[k]] <- round(c(unlist(outcome_se), unlist(btw_se)), 4)
est[[k]] <- data.frame(Name = paste0("c", k, names), Estimate = model.est[[k]], SE = model.se[[k]])
}
else if (y_model == "LCSM"){
slp_m.est_L <- slp_v.est_L <- slp_cov.est_L <- chg_inv_m.est_L <- chg_inv_v.est_L <- chg_bl_m.est_L <- chg_bl_v.est_L <-
slp_m.se_L <- slp_v.se_L <- slp_cov.se_L <- chg_inv_m.se_L <- chg_inv_v.se_L <- chg_bl_m.se_L <- chg_bl_v.se_L <-
rel_val_est_L <- rel_val_se_L <- list()
for (traj in 1:length(y_var)){
slp_m.est_L[[traj]] <- mxEvalByName(paste0("c", k, y_var[traj], "slp_m"), model = model@submodels[[k]])
slp_v.est_L[[traj]] <- diag(mxEvalByName(paste0("c", k, y_var[traj], "slp_v"), model = model@submodels[[k]]))
chg_inv_m.est_L[[traj]] <- mxEvalByName(paste0("c", k, y_var[traj], "chg_inv_m"), model = model@submodels[[k]])
chg_inv_v.est_L[[traj]] <- mxEvalByName(paste0("c", k, y_var[traj], "chg_inv_v"), model = model@submodels[[k]])
chg_bl_m.est_L[[traj]] <- mxEvalByName(paste0("c", k, y_var[traj], "chg_bl_m"), model = model@submodels[[k]])
chg_bl_v.est_L[[traj]] <- diag(mxEvalByName(paste0("c", k, y_var[traj], "chg_bl_v"), model = model@submodels[[k]]))
slp_m.se_L[[traj]] <- mxSE(paste0("Class", k, ".c", k, y_var[traj], "slp_m"), model, forceName = T)
slp_v.se_L[[traj]] <- diag(mxSE(paste0("Class", k, ".c", k, y_var[traj], "slp_v"), model, forceName = T))
chg_inv_m.se_L[[traj]] <- mxSE(paste0("Class", k, ".c", k, y_var[traj], "chg_inv_m"), model, forceName = T)
chg_inv_v.se_L[[traj]] <- mxSE(paste0("Class", k, ".c", k, y_var[traj], "chg_inv_v"), model, forceName = T)
chg_bl_m.se_L[[traj]] <- mxSE(paste0("Class", k, ".c", k, y_var[traj], "chg_bl_m"), model, forceName = T)
chg_bl_v.se_L[[traj]] <- diag(mxSE(paste0("Class", k, ".c", k, y_var[traj], "chg_bl_v"), model, forceName = T))
if (curveFun %in% c("nonparametric", "NonP")){
rel_val_est_L[[traj]] <- model@output$estimate[grep(paste0("c", k, y_var[traj], "_rel_rate"),
names(model@output$estimate))]
rel_val_se_L[[traj]] <- model@output$standardErrors[, 1][grep("c", k, paste0(y_var[traj], "_rel_rate"),
names(model@output$standardErrors[, 1]))]
}
}
if (curveFun %in% c("nonparametric", "NonP")){
model.est[[k]] <- round(c(unlist(outcome_est), unlist(rel_val_est_L), unlist(btw_est), unlist(slp_m.est_L), unlist(slp_v.est_L),
unlist(chg_inv_m.est_L), unlist(chg_inv_v.est_L), unlist(chg_bl_m.est_L), unlist(chg_bl_v.est_L)), 4)
model.se[[k]] <- round(c(unlist(outcome_se), unlist(rel_val_se_L), unlist(btw_se), unlist(slp_m.se_L), unlist(slp_v.se_L),
unlist(chg_inv_m.se_L), unlist(chg_inv_v.se_L), unlist(chg_bl_m.se_L), unlist(chg_bl_v.se_L)), 4)
}
else{
model.est[[k]] <- round(c(unlist(outcome_est), unlist(btw_est), unlist(slp_m.est_L), unlist(slp_v.est_L), unlist(chg_inv_m.est_L),
unlist(chg_inv_v.est_L), unlist(chg_bl_m.est_L), unlist(chg_bl_v.est_L)), 4)
model.se[[k]] <- round(c(unlist(outcome_se), unlist(btw_se), unlist(slp_m.se_L), unlist(slp_v.se_L), unlist(chg_inv_m.se_L),
unlist(chg_inv_v.se_L), unlist(chg_bl_m.se_L), unlist(chg_bl_v.se_L)), 4)
est[[k]] <- data.frame(Name = paste0("c", k, names), Estimate = model.est[[k]], SE = model.se[[k]])
}
}
}
else if (sub_Model == "MED"){
if (x_type == "baseline"){
if (curveFun %in% c("linear", "LIN")){
model.est[[k]] <- round(c(model@output$estimate[grep(paste0("c", k, "muX"), names(model@output$estimate))],
model@output$estimate[grep(paste0("c", k, "phi11"), names(model@output$estimate))],
mxEvalByName(paste0("c", k, "M_alpha"), model = model@submodels[[k]]),
c(mxEvalByName(paste0("c", k, "M_psi_r"), model = model@submodels[[k]]))[c(1, 2, 4)],
mxEvalByName(paste0("c", k, "Y_alpha"), model = model@submodels[[k]]),
c(mxEvalByName(paste0("c", k, "Y_psi_r"), model = model@submodels[[k]]))[c(1, 2, 4)],
mxEvalByName(paste0("c", k, "beta_xm"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "beta_xy"), model = model@submodels[[k]]),
c(mxEvalByName(paste0("c", k, "beta_my"), model = model@submodels[[k]]))[c(1, 2, 4)],
mxEvalByName(paste0("c", k, "M_mean"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "Y_mean"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "mediator"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "total"), model = model@submodels[[k]]),
model@output$estimate[names(model@output$estimate) == paste0("c", k, "Y_residuals")],
model@output$estimate[names(model@output$estimate) == paste0("c", k, "M_residuals")],
model@output$estimate[names(model@output$estimate) == paste0("c", k, "YM_RES")]), 4)
model.se[[k]] <- round(c(model@output$standardErrors[, 1][grep(paste0("c", k, "muX"), names(model@output$standardErrors[, 1]))],
model@output$standardErrors[, 1][grep(paste0("c", k, "phi11"), names(model@output$standardErrors[, 1]))],
mxSE(paste0("Class", k, ".c", k, "M_alpha"), model, forceName = T),
c(mxSE(paste0("Class", k, ".c", k, "M_psi_r"), model, forceName = T))[c(1, 2, 4)],
mxSE(paste0("Class", k, ".c", k, "Y_alpha"), model, forceName = T),
c(mxSE(paste0("Class", k, ".c", k, "Y_psi_r"), model, forceName = T))[c(1, 2, 4)],
mxSE(paste0("Class", k, ".c", k, "beta_xm"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "beta_xy"), model, forceName = T),
c(mxSE(paste0("Class", k, ".c", k, "beta_my"), model, forceName = T))[c(1, 2, 4)],
mxSE(paste0("Class", k, ".c", k, "M_mean"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "Y_mean"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "mediator"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "total"), model, forceName = T),
model@output$standardErrors[, 1][names(model@output$standardErrors[, 1]) == paste0("c", k, "Y_residuals")],
model@output$standardErrors[, 1][names(model@output$standardErrors[, 1]) == paste0("c", k, "M_residuals")],
model@output$standardErrors[, 1][names(model@output$standardErrors[, 1]) == paste0("c", k, "YM_RES")]), 4)
est[[k]] <- data.frame(Name = paste0("c", k, names), Estimate = model.est[[k]], SE = model.se[[k]])
}
else if (curveFun %in% c("bilinear spline", "BLS")){
model.est[[k]] <- round(c(model@output$estimate[grep(paste0("c", k, "muX"), names(model@output$estimate))],
model@output$estimate[grep(paste0("c", k, "phi11"), names(model@output$estimate))],
mxEvalByName(paste0("c", k, "M_alpha"), model = model@submodels[[k]]),
c(mxEvalByName(paste0("c", k, "M_psi_r"), model = model@submodels[[k]]))[c(1:3, 5:6, 9)],
mxEvalByName(paste0("c", k, "Y_alpha"), model = model@submodels[[k]]),
c(mxEvalByName(paste0("c", k, "Y_psi_r"), model = model@submodels[[k]]))[c(1:3, 5:6, 9)],
mxEvalByName(paste0("c", k, "beta_xm"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "beta_xy"), model = model@submodels[[k]]),
c(mxEvalByName(paste0("c", k, "beta_my"), model = model@submodels[[k]]))[c(1:3, 5:6, 9)],
mxEvalByName(paste0("c", k, "M_mean"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "Y_mean"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "mediator"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "total"), model = model@submodels[[k]]),
model@output$estimate[names(model@output$estimate) == paste0("c", k, "Y_residuals")],
model@output$estimate[names(model@output$estimate) == paste0("c", k, "M_residuals")],
model@output$estimate[names(model@output$estimate) == paste0("c", k, "YM_RES")]), 4)
model.se[[k]] <- round(c(model@output$standardErrors[, 1][grep(paste0("c", k, "muX"), names(model@output$standardErrors[, 1]))],
model@output$standardErrors[, 1][grep(paste0("c", k, "phi11"), names(model@output$standardErrors[, 1]))],
mxSE(paste0("Class", k, ".c", k, "M_alpha"), model, forceName = T),
c(mxSE(paste0("Class", k, ".c", k, "M_psi_r"), model, forceName = T))[c(1:3, 5:6, 9)],
mxSE(paste0("Class", k, ".c", k, "Y_alpha"), model, forceName = T),
c(mxSE(paste0("Class", k, ".c", k, "Y_psi_r"), model, forceName = T))[c(1:3, 5:6, 9)],
mxSE(paste0("Class", k, ".c", k, "beta_xm"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "beta_xy"), model, forceName = T),
c(mxSE(paste0("Class", k, ".c", k, "beta_my"), model, forceName = T))[c(1:3, 5:6, 9)],
mxSE(paste0("Class", k, ".c", k, "M_mean"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "Y_mean"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "mediator"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "total"), model, forceName = T),
model@output$standardErrors[, 1][names(model@output$standardErrors[, 1]) == paste0("c", k, "Y_residuals")],
model@output$standardErrors[, 1][names(model@output$standardErrors[, 1]) == paste0("c", k, "M_residuals")],
model@output$standardErrors[, 1][names(model@output$standardErrors[, 1]) == paste0("c", k, "YM_RES")]), 4)
est[[k]] <- data.frame(Name = paste0("c", k, names), Estimate = model.est[[k]], SE = model.se[[k]])
}
}
if (x_type == "longitudinal"){
if (curveFun %in% c("linear", "LIN")){
model.est[[k]] <- round(c(mxEvalByName(paste0("c", k, "X_mean"), model = model@submodels[[k]]),
c(mxEvalByName(paste0("c", k, "X_psi0"), model = model@submodels[[k]]))[c(1, 2, 4)],
mxEvalByName(paste0("c", k, "M_alpha"), model = model@submodels[[k]]),
c(mxEvalByName(paste0("c", k, "M_psi_r"), model = model@submodels[[k]]))[c(1, 2, 4)],
mxEvalByName(paste0("c", k, "Y_alpha"), model = model@submodels[[k]]),
c(mxEvalByName(paste0("c", k, "Y_psi_r"), model = model@submodels[[k]]))[c(1, 2, 4)],
c(mxEvalByName(paste0("c", k, "beta_xm"), model = model@submodels[[k]]))[c(1, 2, 4)],
c(mxEvalByName(paste0("c", k, "beta_xy"), model = model@submodels[[k]]))[c(1, 2, 4)],
c(mxEvalByName(paste0("c", k, "beta_my"), model = model@submodels[[k]]))[c(1, 2, 4)],
mxEvalByName(paste0("c", k, "M_mean"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "Y_mean"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "mediator"), model = model@submodels[[k]]),
c(mxEvalByName(paste0("c", k, "total"), model = model@submodels[[k]]))[c(1, 2, 4)],
model@output$estimate[names(model@output$estimate) == paste0("c", k, "Y_residuals")],
model@output$estimate[names(model@output$estimate) == paste0("c", k, "M_residuals")],
model@output$estimate[names(model@output$estimate) == paste0("c", k, "X_residuals")],
model@output$estimate[names(model@output$estimate) == paste0("c", k, "YM_RES")],
model@output$estimate[names(model@output$estimate) == paste0("c", k, "YX_RES")],
model@output$estimate[names(model@output$estimate) == paste0("c", k, "MX_RES")]), 4)
model.se[[k]] <- round(c(mxSE(paste0("Class", k, ".c", k, "X_mean"), model, forceName = T),
c(mxSE(paste0("Class", k, ".c", k, "X_psi0"), model, forceName = T))[c(1, 2, 4)],
mxSE(paste0("Class", k, ".c", k, "M_alpha"), model, forceName = T),
c(mxSE(paste0("Class", k, ".c", k, "M_psi_r"), model, forceName = T))[c(1, 2, 4)],
mxSE(paste0("Class", k, ".c", k, "Y_alpha"), model, forceName = T),
c(mxSE(paste0("Class", k, ".c", k, "Y_psi_r"), model, forceName = T))[c(1, 2, 4)],
c(mxSE(paste0("Class", k, ".c", k, "beta_xm"), model, forceName = T))[c(1, 2, 4)],
c(mxSE(paste0("Class", k, ".c", k, "beta_xy"), model, forceName = T))[c(1, 2, 4)],
c(mxSE(paste0("Class", k, ".c", k, "beta_my"), model, forceName = T))[c(1, 2, 4)],
mxSE(paste0("Class", k, ".c", k, "M_mean"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "Y_mean"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "mediator"), model, forceName = T),
c(mxSE(paste0("Class", k, ".c", k, "total"), model, forceName = T))[c(1, 2, 4)],
model@output$standardErrors[, 1][names(model@output$standardErrors[, 1]) == paste0("c", k, "Y_residuals")],
model@output$standardErrors[, 1][names(model@output$standardErrors[, 1]) == paste0("c", k, "M_residuals")],
model@output$standardErrors[, 1][names(model@output$standardErrors[, 1]) == paste0("c", k, "X_residuals")],
model@output$standardErrors[, 1][names(model@output$standardErrors[, 1]) == paste0("c", k, "YM_RES")],
model@output$standardErrors[, 1][names(model@output$standardErrors[, 1]) == paste0("c", k, "YX_RES")],
model@output$standardErrors[, 1][names(model@output$standardErrors[, 1]) == paste0("c", k, "MX_RES")]), 4)
est[[k]] <- data.frame(Name = paste0("c", k, names), Estimate = model.est[[k]], SE = model.se[[k]])
}
else if (curveFun %in% c("bilinear spline", "BLS")){
model.est[[k]] <- round(c(mxEvalByName(paste0("c", k, "X_mean"), model = model@submodels[[k]]),
c(mxEvalByName(paste0("c", k, "X_psi0"), model = model@submodels[[k]]))[c(1:3, 5:6, 9)],
mxEvalByName(paste0("c", k, "M_alpha"), model = model@submodels[[k]]),
c(mxEvalByName(paste0("c", k, "M_psi_r"), model = model@submodels[[k]]))[c(1:3, 5:6, 9)],
mxEvalByName(paste0("c", k, "Y_alpha"), model = model@submodels[[k]]),
c(mxEvalByName(paste0("c", k, "Y_psi_r"), model = model@submodels[[k]]))[c(1:3, 5:6, 9)],
c(mxEvalByName(paste0("c", k, "beta_xm"), model = model@submodels[[k]]))[c(1:3, 5:6, 9)],
c(mxEvalByName(paste0("c", k, "beta_xy"), model = model@submodels[[k]]))[c(1:3, 5:6, 9)],
c(mxEvalByName(paste0("c", k, "beta_my"), model = model@submodels[[k]]))[c(1:3, 5:6, 9)],
mxEvalByName(paste0("c", k, "M_mean"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "Y_mean"), model = model@submodels[[k]]),
mxEvalByName(paste0("c", k, "mediator"), model = model@submodels[[k]]),
c(mxEvalByName(paste0("c", k, "total"), model = model@submodels[[k]]))[c(1:3, 5:6, 9)],
model@output$estimate[names(model@output$estimate) == paste0("c", k, "Y_residuals")],
model@output$estimate[names(model@output$estimate) == paste0("c", k, "M_residuals")],
model@output$estimate[names(model@output$estimate) == paste0("c", k, "X_residuals")],
model@output$estimate[names(model@output$estimate) == paste0("c", k, "YM_RES")],
model@output$estimate[names(model@output$estimate) == paste0("c", k, "YX_RES")],
model@output$estimate[names(model@output$estimate) == paste0("c", k, "MX_RES")]), 4)
model.se[[k]] <- round(c(mxSE(paste0("Class", k, ".c", k, "X_mean"), model, forceName = T),
c(mxSE(paste0("Class", k, ".c", k, "X_psi0"), model, forceName = T))[c(1:3, 5:6, 9)],
mxSE(paste0("Class", k, ".c", k, "M_alpha"), model, forceName = T),
c(mxSE(paste0("Class", k, ".c", k, "M_psi_r"), model, forceName = T))[c(1:3, 5:6, 9)],
mxSE(paste0("Class", k, ".c", k, "Y_alpha"), model, forceName = T),
c(mxSE(paste0("Class", k, ".c", k, "Y_psi_r"), model, forceName = T))[c(1:3, 5:6, 9)],
c(mxSE(paste0("Class", k, ".c", k, "beta_xm"), model, forceName = T))[c(1:3, 5:6, 9)],
c(mxSE(paste0("Class", k, ".c", k, "beta_xy"), model, forceName = T))[c(1:3, 5:6, 9)],
c(mxSE(paste0("Class", k, ".c", k, "beta_my"), model, forceName = T))[c(1:3, 5:6, 9)],
mxSE(paste0("Class", k, ".c", k, "M_mean"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "Y_mean"), model, forceName = T),
mxSE(paste0("Class", k, ".c", k, "mediator"), model, forceName = T),
c(mxSE(paste0("Class", k, ".c", k, "total"), model, forceName = T))[c(1:3, 5:6, 9)],
model@output$standardErrors[, 1][names(model@output$standardErrors[, 1]) == paste0("c", k, "Y_residuals")],
model@output$standardErrors[, 1][names(model@output$standardErrors[, 1]) == paste0("c", k, "M_residuals")],
model@output$standardErrors[, 1][names(model@output$standardErrors[, 1]) == paste0("c", k, "X_residuals")],
model@output$standardErrors[, 1][names(model@output$standardErrors[, 1]) == paste0("c", k, "YM_RES")],
model@output$standardErrors[, 1][names(model@output$standardErrors[, 1]) == paste0("c", k, "YX_RES")],
model@output$standardErrors[, 1][names(model@output$standardErrors[, 1]) == paste0("c", k, "MX_RES")]), 4)
est[[k]] <- data.frame(Name = paste0("c", k, names), Estimate = model.est[[k]], SE = model.se[[k]])
}
}
}
est[[k]] <- data.frame(Name = paste0("c", k, names), Estimate = model.est[[k]], SE = model.se[[k]])
}
if (!is.null(cluster_TIC)){
est.beta <- data.frame(Name = paste0("beta", rep(2:nClass, length(cluster_TIC)), rep(0:2, each = nClass - 1)),
Estimate = round(c(mxEval(classbeta, model)[-1, ]), 4),
SE = round(c(mxSE(classbeta, model)[-1, ]), 4))
estimate_out <- rbind(do.call(rbind.data.frame, est), est.beta)
}
else if (is.null(cluster_TIC)){
est.weights <- data.frame(Name = paste0("p", 2:nClass),
Estimate = round(model@output$estimate[grep("w", names(model@output$estimate))], 4),
SE = round(model@output$estimate[grep("w", names(model@output$estimate))], 4))
estimate_out <- rbind(do.call(rbind.data.frame, est), est.weights)
}
return(estimate_out)
}
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.