Confirmatory Factor Analysis

I am conducting a meta-analytic study to confirm the factorial structure of a scale using two-stage structural equation modelling.
The scale is having two subscales namely, burnout (BO) and secondary traumatic stress (STS), which load on a latent factor called "Compassion Fatigue". I want to confirm its factorial structure by meta-analysing the correlation coefficients across nine studies identified in the literature. The code I have written works fine for the first stage (TSSEM1) but it is showing an error for the second stage (TSSEM2).
I would really appreciate if you could take a look at the code and pinpoint a mistake that is causing the error. I have attached two .csv files for your reference.
Thank you
Kind regards,
Jasmeet Singh
The code I have written is stated below:
# Converting correlation tables into matrices
mat1 <- as.matrix(CF1)
mat2 <- as.matrix(CF2)
dimnames(mat1)[[1]] <- dimnames(mat1)[[2]] <- c("BO", "STS")
dimnames(mat2)[[1]] <- dimnames(mat2)[[2]] <- c("BO", "STS")
#Converting matrices into a list
matrix.list <- list(mat1, mat2)
names(matrix.list) <- c("Sodeke-Gregson et al., 2013", "Deighton et al., 2007")
n <- c(253,100)
all.data <- list(matrix.list, n)
# Stage 1
library(metaSEM)
cfa1 <- tssem1(all.data[[1]], all.data[[2]], method="REM", RE.type = "Diag")
summary(cfa1)
#Stage 2
#There are two observed variables (BO and STS) and one latent variable (CF)
dims <- c("BO", "STS", "CF")
mat<-matrix(rep(0, 3*3), nrow=3, ncol=3)
dimnames(mat)[[1]]<-dimnames(mat)[[2]]<-dims
mat
# A matrix
A <- matrix(c(0,0,"0.3*CF_BO",0,0,"0.3*CF_STS",0,0,0),nrow=3,ncol=3,byrow=TRUE)
dimnames(A)[[1]]<-dimnames(A)[[2]]<-dims
A
A<-as.mxMatrix(A)
# S matrix
Vars <- Diag(c("0.2*var_BO", "0.2*var_STS"))
Cors <- matrix(1,nrow=1,ncol=1)
S <- bdiagMat(list(Vars, Cors))
dimnames(S)[[1]] <- dimnames(S)[[2]] <- dims
S
S <- as.mxMatrix(S)
# F matrix
F <- Diag(c(1, 1, 0))
F <- F[1:2,]
dimnames(F)[[1]] <- dims[1:2]
dimnames(F)[[2]] <- dims
F
F <- as.mxMatrix(F)
cfa2 <- tssem2(cfa1, Amatrix = A, Smatrix = S, Fmatrix = F, diag.constraints = FALSE)
summary (cfa2)
# The error message I am getting is:
Error in if (pchisq(chi.squared, df = df, ncp = 0) >= upper) { :
missing value where TRUE/FALSE needed
In addition: Warning messages:
1: In pchisq(tT, df = dfT, lower.tail = FALSE) : NaNs produced
2: In sqrt(max((tT - dfT)/(n - 1), 0)/dfT) : NaNs produced
3: In pchisq(chi.squared, df = df, ncp = 0) : NaNs produced
Hi Jasmeet,
There were 2 errors. The first one was syntactic. An * was missing in the model specification.
A <- matrix(c(0,0,"0.3*CF",0,0,"0.3*CF",0,0,0),nrow=3,ncol=3,byrow=TRUE)
Vars <- Diag(c("0.2*var_BO", "0.2*var_STS"))
Second, you cannot estimate two factor loadings from one correlation coefficient. Please see the attached script.
Note. I cannot say whether it is meaningful to conduct a meta-analysis with only 2 studies. I will leave it to your justifications.
Best,
Mike
Log in or register to post comments
In reply to Hi Jasmeet, by Mike Cheung
Hello Mike,
Thank you very much for reviewing the code. I have actually identified nine studies but I didn't share all with you because I thought that it might be a bit extra. I got your point regarding estimating two factor loadings using a single coefficient. I think it would produce a just-identified model that's why the Chi-Square value is 0.00.
Apart from all this, I really appreciate your help.
Kind regards,
Jasmeet Singh
Log in or register to post comments