## Not run:
# # Load Libraries
# require(umx)
# # Create Functions to Assign Labels
# laLower <- function(la,nVar) {
# paste(la,rev(nVar+1-sequence(1:nVar)),rep(1:nVar,nVar:1),sep="_")
# }
# laSdiag <- function(la,nVar) {
# paste(la,rev(nVar+1-sequence(1:(nVar-1))),rep(1:(nVar-1),(nVar-1):1),sep="_")
# }
# laFull <- function(la,nVar) {
# paste(la,1:nVar,rep(1:nVar,each=nVar),sep="_")
# }
# laDiag <- function(la,nVar) {
# paste(la,1:nVar,1:nVar,sep="_")
# }
# laSymm <- function(la,nVar) {
# paste(la,rev(nVar+1-sequence(1:nVar)),rep(1:nVar,nVar:1),sep="_")
# }
# # =========================
# # = Load and Process Data =
# # =========================
# data("us_skinfold_data")
# # rescale vars
# us_skinfold_data[,c('bic_T1', 'bic_T2')] <- us_skinfold_data[,c('bic_T1', 'bic_T2')]/3.4
# us_skinfold_data[,c('tri_T1', 'tri_T2')] <- us_skinfold_data[,c('tri_T1', 'tri_T2')]/3
# us_skinfold_data[,c('caf_T1', 'caf_T2')] <- us_skinfold_data[,c('caf_T1', 'caf_T2')]/3
# us_skinfold_data[,c('ssc_T1', 'ssc_T2')] <- us_skinfold_data[,c('ssc_T1', 'ssc_T2')]/5
# us_skinfold_data[,c('sil_T1', 'sil_T2')] <- us_skinfold_data[,c('sil_T1', 'sil_T2')]/5
# # describe(us_skinfold_data, skew = FALSE)
#
# # Select Variables for Analysis
# varList = c('ssc','sil','caf','tri','bic')
# selVars = umx_paste_names(varList, "_T", 1:2)
# nVar = length(selVars)
#
# # Data objects for Multiple Groups
# mzmData = subset(us_skinfold_data, zyg == 1, selVars)
# dzmData = subset(us_skinfold_data, zyg == 3, selVars)
# mzfData = subset(us_skinfold_data, zyg == 2, selVars)
# dzfData = subset(us_skinfold_data, zyg == 4, selVars)
# dzoData = subset(us_skinfold_data, zyg == 5, selVars)
#
# m1 = umxACESexLim(selDVs = varList, suffix = "_T",
# mzmData = mzmData, dzmData = dzmData,
# mzfData = mzfData, dzfData = dzfData,
# dzoData = dzoData)
# m1 = mxRun(m1)
# summary(m1)
#
# # ===============================
# # = 1 Nonscalar Sex Limitation =
# # ===============================
# # Quantitative Sex Differences & Qualitative Sex Differences for A
# # Male and female paths, plus male and female Ra, Rc and Re between variables
# # Male-Female correlations in DZO group between
# # A factors Rao FREE, Rc constrained across male/female and opp-sex
# # ===================================================
# # = Test switching specific a from Males to females =
# # ===================================================
#
# m2 = umxSetParameters(m1, labels = "asm_.*", free = FALSE, values = 0, regex = TRUE)
# m2 = umxSetParameters(m1, labels = "asf_.*", free = TRUE , values = 0, regex = TRUE)
# m2 = mxRun(m2)
# summary(m2)
# mxCompare(m2, m1)
# # ===============================
# # = 2 Nonscalar Sex Limitation =
# # ===============================
# # Quantitative Sex Differences & Qualitative Sex Differences for C
# # Male and female paths, plus male and female Ra, Rc and Re between variables
# # Male-Female correlations in DZO group between C
# # factors Rco FREE, Ra constrained across male/female and oppsex
#
# # -------|---------|---------|---------|---------|---------|---------|---------|---------|-----|
# # 3 Scalar Sex Limitation
# # Quantitative Sex Differences but NO Qualitative Sex Differences
# # Male and female paths, but one set of Ra, Rc and Re between variables (same for male & female)
# # ---------------------------------------------------------------------------------------------|
#
# # =================================
# # =================================
# frODiag <- c(rep(c(FALSE,rep(TRUE,nVar)),nVar-1),FALSE)
# svODiag <- c(rep(c(1,rep(.4,nVar)),nVar-1),1)
# m3 = umxSetParameters(m2, labels = "asm_.*", free = FALSE, values = 0, regex = TRUE)
# pathRam = mxMatrix(name="Ram", "Stand", nrow= nVar, free = TRUE, values = .4,
# label = laSdiag("ra", nVar), lbound = -1, ubound = 1)
# pathRaf = mxMatrix(name = "Raf", "Stand", nrow = nVar, free = TRUE, values = .4,
# label=laSdiag("ra", nVar), lbound = -1, ubound = 1)
# pathRcm = mxMatrix(name="Rcm", "Stand", nrow = nVar, free = TRUE, values = .4,
# label=laSdiag("rc", nVar), lbound = -1, ubound = 1)
# pathRcf = mxMatrix(name="Rcf", "Stand", nrow = nVar, free = TRUE, values = .4,
# label=laSdiag("rc", nVar), lbound = -1, ubound = 1)
# pathRem = mxMatrix(name="Rem", "Stand", nrow= nVar, free=TRUE, values = .4,
# label = laSdiag("re", nVar), lbound = -1, ubound = 1)
# pathRef = mxMatrix(name="Ref", "Stand", nrow= nVar, free=TRUE, values = .4,
# label = laSdiag("re", nVar), lbound = -1, ubound = 1)
# corRao = mxMatrix(name="Rao", "Symm" , nrow= nVar, free = frODiag, values = svODiag,
# label = laSymm("ra", nVar), lbound = -1, ubound = 1)
# corRco = mxMatrix(name="Rco", "Symm" , nrow= nVar, free = frODiag, values = svODiag,
# label = laSymm("rc", nVar), lbound = -1, ubound = 1)
#
# # m3 <- makeModel("HetCfAce")
# # m3 <- mxRun(m3)
# # summary(m3)
# # round(m3$VarsZm$result,4); round(m3$CorsZm$result,4)
# # round(m3$VarsZf$result,4); round(m3$CorsZf$result,4)
# # mxCompare(HetCfAceRgFit, m3)
#
# # ===================
# # = 4 Homogeneity
# # = NO Quantitative Sex Differences AND NO Qualitative Sex Differences
# # = Same paths for males and females
# # ===================
#
# # =====================================
# # = Equate [ace]m and [ace]f matrices =
# # =====================================
#
# pathAm = mxMatrix(name="am", "Diag", nrow = nVar, free = TRUE, values = .5,
# label = laDiag("a", nVar))
# pathCm = mxMatrix(name="cm", "Diag", nrow = nVar, free = TRUE, values = .5,
# label = laDiag("c", nVar))
# pathEm = mxMatrix(name="em", "Diag", nrow = nVar, free = TRUE, values = .5,
# label = laDiag("e", nVar))
# pathAf = mxMatrix(name="af", "Diag", nrow = nVar, free = TRUE, values = .5,
# label = laDiag("a", nVar))
# pathCf = mxMatrix(name="cf", "Diag", nrow = nVar, free = TRUE, values = .5,
# label = laDiag("c", nVar))
# pathEf = mxMatrix(name="ef", "Diag", nrow = nVar, free = TRUE, values = .5,
# label = laDiag("e", nVar))
#
# # m4 <- makeModel("HomCfAce")
# # m4 <- mxRun(m4)
# # summary(m4)
# # round(m4$VarsZm$result,4); round(m4$CorsZm$result,4)
# # round(m4$VarsZf$result,4); round(m4$CorsZf$result,4)
# # mxCompare(m3, m4)
#
# # ==============================================
# # = Generate Output Table of all Nested Models =
# # ==============================================
#
# # mxCompare(HetCfAceRgFit, c(HetCfAceRcFit, m3, m4))
#
# # rbind(
# # mxCompare(HetCfAceRgFit, HetCfAceRcFit),
# # mxCompare(HetCfAceRcFit, m3)[2,],
# # mxCompare(m3, m4)[2,]
# # )
# ## End(Not run)
Run the code above in your browser using DataLab