####DUALITY### ##Load the Data my.data <- read.table(pipe("pbpaste"), sep="\t", header = TRUE) #Load MetaSEM package library(metaSEM) head(my.data) colnames(my.data) # locate studies with information on at least 1 correlation, and no missing sample size keepstudy <- rowSums(is.na(my.data[,4:39]))!=36 & is.na(my.data$NUMBER.OF.BANKS)==FALSE # keep only the studies with information data <- my.data[keepstudy,] # check data head(data) length(data) summary(data) # varnames and labels nvar <- 9 varnames <- c("DUA","BNKRISK","BSIZE","LEV","AGE","LIQ","OWNCON","INST","PERF") labels <- list(varnames,varnames) # create list with correlation matrices cordat <- list() for (i in 1:nrow(data)){ cordat[[i]] <- vec2symMat(as.matrix(data[i,4:39]),diag = FALSE) dimnames(cordat[[i]]) <- labels } # put NA on diagonal of correlation matrix if variable is missing for (i in 1:length(cordat)){ for (j in 1:nrow(cordat[[i]])){ if (sum(is.na(cordat[[i]][j,]))==nvar-1) {cordat[[i]][j,j] <- NA} }} # show number of studies per correlation coefficient pattern.na(cordat, show.na = FALSE) # show total N per correlation coefficient pattern.n(cordat, data$NUMBER.OF.BANKS) # Run random effects model Stage 1 # For fixed effcets analysis change RE.type to "Zero" stage1random <- tssem1(Cov=cordat, n=data$NUMBER.OF.BANKS, method="REM", RE.type="Diag") summary(stage1random) # Rerun model for convergence stage1_rerun <- metaSEM::rerun(stage1random) summary(stage1_rerun) # model model1 <- '# Regression coefficients PERF ~ DUA+BNKRISK+BSIZE+LEV+AGE+LIQ+OWNCON+INST # Covariances DUA ~~ BNKRISK DUA ~~ BSIZE DUA ~~ LEV DUA ~~ AGE DUA ~~ LIQ DUA ~~ OWNCON DUA ~~ INST BNKRISK ~~ BSIZE BNKRISK ~~ LEV BNKRISK ~~ AGE BNKRISK ~~ LIQ BNKRISK ~~ OWNCON BNKRISK ~~ INST BSIZE ~~ LEV BSIZE ~~ AGE BSIZE ~~ LIQ BSIZE ~~ OWNCON BSIZE ~~ INST LEV ~~ AGE LEV ~~ LIQ LEV ~~ OWNCON LEV ~~ INST AGE ~~ LIQ AGE ~~ OWNCON AGE ~~ INST LIQ ~~ OWNCON LIQ ~~ INST OWNCON ~~ INST # Variances DUA ~~ 1*DUA BNKRISK ~~ 1*BNKRISK BSIZE ~~ 1*BSIZE LEV ~~ 1*LEV AGE ~~ 1*AGE LIQ ~~ 1*LIQ OWNCON ~~ 1*OWNCON INST ~~ 1*INST PERF ~~ PERF' RAM1 <- lavaan2RAM(model1, obs.variables=varnames) RAM1 stage2 <- tssem2(stage1_rerun, Amatrix=RAM1$A, Smatrix=RAM1$S) summary(stage2)