Selfesteem <- readFullMat("Correlation matrices for metaSEM Selfesteem.dat") #reads in correlation matrices from .dat file Selfesteem <- lapply(Selfesteem, function(x, var.names) {dimnames(x) <- list(var.names, var.names); x}, var.names=c("ID", "MGM", "MIC", "Support", "FU", "Selfesteem")) #sets variable names for the matrices names(Selfesteem) <- c("Study 1 (students)", "Study 2 (students)", "Study 3 (Chinese orgs)") #sets names for each of the studies Selfesteem #shows the correlation matrices nTR <- c(161, 124, 320) #defines sample sizes for each study fixedSelfesteem <- tssem1(Selfesteem, nTR, method = "FEM") summary(fixedSelfesteem) coef(fixedSelfesteem) #defines a fixed effects matrix, followed by a summary and the heterogeneity coefficients (tau) Selfesteemrandom1 <- tssem1(Selfesteem, nTR, method = "REM") #defines a random effects matrix summary(Selfesteemrandom1) coef(Selfesteemrandom1) plot(Selfesteemrandom1) #plots the random model in terms of effect sizes and confidence ellipses Selfesteemmodel1 <- "Selfesteem ~ b2*Support + b1*FU + c1*ID + c2*MGM + c3*MIC FU ~ a1*ID + a2*MGM + a3*MIC Support ~ a4*ID + a5*MGM + a6*MIC ID ~~ 1*ID MGM ~~ 1*MGM MIC ~~ 1*MIC FU ~~ Support ID ~~ MGM ID ~~ MIC MGM ~~ MIC" plot(Selfesteemmodel1) #defines the model in lavaan syntax then asks for a plot obs.varsTR <- c("ID", "MGM", "MIC", "Support", "FU", "Selfesteem") #defines the observed variables in the model SelfesteemRAM1 <- lavaan2RAM(Selfesteemmodel1, obs.variables=obs.varsTR) #converts the lavaan syntax to RAM specification used in metaSTR SelfesteemRAM1 #calls the model defined in the previous step SelfesteemRAM1tssem.fit <- tssem2(Selfesteemrandom1, RAM=SelfesteemRAM1, intervals.type = "LB", mx.algebras = list(ID_FU_Selfesteem=mxAlgebra(a1*b1, name="ID_FU_Selfesteem"),MGM_FU_Selfesteem=mxAlgebra(a2*b1, name="MGM_FU_Selfesteem"),MIC_FU_Selfesteem=mxAlgebra(a3*b1, name="MIC_FU_Selfesteem"),ID_SS_Selfesteem=mxAlgebra(a4*b2, name="ID_SS_Selfesteem"), MGM_SS_Selfesteem=mxAlgebra(a5*b2, name="MGM_SS_Selfesteem"),MIC_SS_Selfesteem=mxAlgebra(a6*b2, name="MIC_SS_Selfesteem"), dir=mxAlgebra(c1, name="dir"))) summary(SelfesteemRAM1tssem.fit) #requests the likelihood-based confidence intervals, where a*b is the indirect effect and c is the indirect effect plot(SelfesteemRAM1tssem.fit, color="green") #should plot the model with parameter estimates #Alternative with no direct effects Selfesteemmodel1 <- "Selfesteem ~ b2*Support + b1*FU FU ~ a1*ID + a2*MGM + a3*MIC Support ~ a4*ID + a5*MGM + a6*MIC ID ~~ 1*ID MGM ~~ 1*MGM MIC ~~ 1*MIC FU ~~ Support ID ~~ MGM ID ~~ MIC MGM ~~ MIC" plot(Selfesteemmodel1) #defines the model in lavaan syntax then asks for a plot obs.varsTR <- c("ID", "MGM", "MIC", "Support", "FU", "Selfesteem") #defines the observed variables in the model SelfesteemRAM1 <- lavaan2RAM(Selfesteemmodel1, obs.variables=obs.varsTR) #converts the lavaan syntax to RAM specification used in metaSTR SelfesteemRAM1 #calls the model defined in the previous step SelfesteemRAM1tssem.fit <- tssem2(Selfesteemrandom1, RAM=SelfesteemRAM1, intervals.type = "LB", mx.algebras = list(ID_FU_Selfesteem=mxAlgebra(a1*b1, name="ID_FU_Selfesteem"),MGM_FU_Selfesteem=mxAlgebra(a2*b1, name="MGM_FU_Selfesteem"),MIC_FU_Selfesteem=mxAlgebra(a3*b1, name="MIC_FU_Selfesteem"),ID_SS_Selfesteem=mxAlgebra(a4*b2, name="ID_SS_Selfesteem"), MGM_SS_Selfesteem=mxAlgebra(a5*b2, name="MGM_SS_Selfesteem"),MIC_SS_Selfesteem=mxAlgebra(a6*b2, name="MIC_SS_Selfesteem"))) summary(SelfesteemRAM1tssem.fit) #requests the likelihood-based confidence intervals, where a*b is the indirect effect and c is the indirect effect plot(SelfesteemRAM1tssem.fit, color="green") #should plot the model with parameter estimates is.pd(vec2symMat(coef(Selfesteemrandom1, select="random"), diag=FALSE)) dev.off()