Attachment | Size |
---|---|
Data [6] | 408.97 KB |
Model [7] | 60.46 KB |
forumscript.R [8] | 2.28 KB |
Dear OpenMx-ers,
For my research, I am running a latent variable model with a structural regression between four latent variables that are all measured by a set of ordinal manifest variables. Attached is the dataset, a minimalized R-script and a screenshot of the structural model. Because the manifest variables are ordinal (3 or 4 categories) and highly skewed, I applied a threshold model and used WLS as an estimator. I have been able to successfully run the separate measurement models of each of the X, Y, and Z constructs. However, when I combine these models and add a structural regression between the latent constructs I receive the error message: "Error in t(jac0C) %*% W: Non-conformable arguments"
.
According to mxCheckIdentification() my model is correctly identified. I also used mxAutoStart() to improve the starting values, but this results in the error: "Error in dataThresh[, tName] : no 'dimnames' attribute for array"
.
Can you reproduce this problem? And do you know a solution?
Details:
OpenMx version: 2.7.17 [GIT v2.7.17]
R version: R version 3.2.3 (2015-12-10)
Platform: x86_64-apple-darwin13.4.0
MacOS: 10.11.6
Default optimiser: CSOLNP
NPSOL-enabled?: No
OpenMP-enabled?: No
Script:
forumdata<-read.table(file="forumdata.dat") xa.manifests=c("X1","X3","X6","X8","X10","X11","X14") xb.manifests=c("X2","X4","X5","X7","X9","X12","X13") y.manifests=c("Y1","Y2","Y3","Y4","Y5","Y6","Y7","Y8","Y9") z.manifests=c("Z1","Z2","Z3","Z4","Z5","Z6","Z7") manifests=c(xa.manifests,xb.manifests,y.manifests,z.manifests) # The model mod <- mxModel(name="model1",type="RAM", # Data mxDataWLS(forumdata,type="WLS"), # Specify variables manifestVars=manifests, latentVars=c("Xa","Xb","Y","Z"), # Means mxPath(from="one",to=manifests,arrows=1,free=T,values=0,labels=manifests), # Thresholds mxThreshold(vars=c(xa.manifests,xb.manifests),nThres=4,free=c(F,T,T,F),values=c(-.5,-.3,.3,.5)), mxThreshold(vars=y.manifests, nThres=3,free=c(F,T,F),values=c(-.5,0,.5)), mxThreshold(vars=z.manifests, nThres=3,free=c(F,T,F),values=c(-.5,0,.5)), # Residual variances mxPath(from=manifests, arrows=2,free=T,labels=paste("error",manifests)), # Factor loadings mxPath(from="Xa", to=xa.manifests,arrows=1,free=T,values=.8,labels=paste("loading",xa.manifests)), mxPath(from="Xb", to=xb.manifests,arrows=1,free=T,values=.8,labels=paste("loading",xb.manifests)), mxPath(from="Y", to=y.manifests, free=T, values=.8,labels=paste("loading",y.manifests)), mxPath(from="Z", to=z.manifests, free=T, values=.8,labels=paste("loading",z.manifests)), # Latent (co)variances mxPath(from=c("Xa","Xb"), arrows=2, connect="unique.pairs",free=c(F,T,F), values=c(1,.5,1),labels=c("varXa","covXab","varXb")), mxPath(from="Y", arrows=2, free=F, values=1, labels="varY"), mxPath(from="Z", arrows=2, free=F, values=1, labels="varZ"), mxPath(from="Y", to="Z", arrows=2, free=T, values=.5, labels=c("covYZ")), # Structural regression mxPath(from=c("Xa","Xb"), to="Y", arrows=1, free=c(T,T), values=c(-.05,.5), labels=c("b_Xa_Y","b_Xb_Y")), mxPath(from=c("Xa","Xb"), to="Z", arrows=1, free=c(T,T), values=c(-.05,.5), labels=c("b_Xa_Z","b_Xb_Z")), # Fit model with WLS fitFunction <- mxFitFunctionWLS() ) mxCheckIdentification(mod) mxAutoStart(mod) modrun<-mxRun(mod)