library(readxl) install.packages("metaSEM") library("metaSEM") install.packages("OpenMx") library("OpenMx") practisesamplesizenew=read.table(file="C:/Users/JingJing/Desktop/practise6.csv",sep=",",header=T,fill=TRUE) samplesizenew=practisesamplesizenew$sample.size samplesizenew my.vecnew=read.table(file="C:/Users/JingJing/Desktop/practise6.csv",sep=",",header=T,fill=TRUE) head(my.vecnew) nvar=6 varname=c("par","indiriver","commdriver","instrumentdriver","indiout","hostout") labels=list(varname,varname) m=nrow(my.vecnew) m cordatnew<- list() for (i in 1:m){ cordatnew[[i]] <- vec2symMat(as.matrix(my.vecnew[i,2:16]), diag = FALSE) dimnames(cordatnew[[i]]) <- labels } head(cordatnew) # put NA on diagonal if variable is missing for (i in 1:length(cordatnew)){ for (j in 1:nrow(cordatnew[[i]])){ if (sum(is.na(cordatnew[[i]][j,]))==nvar-1) {cordatnew[[i]][j,j] <- NA} }} cordatnew[1] #take care of missing correlation # put NA on diag for var with least present correlations for (i in 1:length(cordatnew)){ for (j in 1:nrow(cordatnew[[i]])){ for (k in 1:nvar){ if (is.na(cordatnew[[i]][j,k])==TRUE &is.na(cordatnew[[i]][j,j])!=TRUE &is.na(cordatnew[[i]][k,k])!=TRUE){ if(sum(is.na(cordatnew[[i]])[j,])>sum(is.na(cordatnew[[i]])[k,])) {cordatnew[[i]][k,k] <- NA} if(sum(is.na(cordatnew[[i]])[j,])<=sum(is.na(cordatnew[[i]])[k,])) {cordatnew[[i]][j,j] <- NA} }}}} head (cordatnew) cordatnew[!is.pd(cordatnew)] is.pd(cordatnew) pattern.na(cordat,show.na=FALSE) # try fix efect stage 1-assume homogeneity across study #got returned errors that the matrix are not positively definite #I delete the npd ones from original data stage1fixednew <- tssem1(Cov=cordatnew, n=samplesizenew, method="FEM") summary(stage1fixednew) stage1randomenew <- tssem1(Cov=cordatnew, n=samplesizenew, method="REM",RE.type = "Diag") random1_rerun <- rerun(stage1randomenew) summary(random1_rerun ) A <- create.mxMatrix( c( 0,0,0,0,0,0, "0.1*b21",0,0,0,0,0, "0.1*b31",0,0,0,0,0, "0.1*b41",0,0,0,0,0, "0.1*b51",0,0,0,0,0, "0.1*b61",0,0,0,0,0), type = "Full", nrow = 6, ncol = 6, byrow = TRUE, name = "A", dimnames = list(varname,varname)) S <- create.mxMatrix( c("1*p11", 0,"1*p22", 0,"0.1*p23","1*p33", 0,"0.1*p24","0.1*p34","1*p44", 0,0,0,0,"1*p55", 0,0,0,0,"0.1*p56","1*p66"), type="Symm",nrow = 6, ncol = 6, byrow = TRUE, name="S", dimnames = list(varname,varname)) stage2 <- tssem2(stage1fixednew, Amatrix=A, Smatrix=S, diag.constraints=TRUE, intervals="LB") stage2_rerun <- rerun(stage2) summary(stage2_rerun ) # plot install.packages("semPlot") library("semPlot") # load the package my.plot <- meta2semPlot(stage2) semPaths(my.plot, whatLabels="est", layout = "tree2")