OpenMx sensitivity to start values in a,c,e?
Posted on

Forums
running a tri-bivariate ACE model, and the results can be all over the show (with no convergence warnings), depending on the start values: for instance C wandering from .998 to .054 for one variable.
Any thoughts?
Here are the results, and script fragment
Any thoughts?
Here are the results, and script fragment
Results starting at a, c, and e at .6
A1 A2 A3 C1 C2 C3 E1 E2 E3 var1 0.284 NA NA 0.282 NA NA 0.434 NA NA var2 -0.292 0.027 NA 0.998 0.434 NA 0.294 0.539 NA var3 0.224 -0.028 0.206 0.366 0.458 0.196 0.411 0.570 0.598 [1] 7550.711
Now, starting at a=.6, c=.3, e=.4
A1 A2 A3 C1 C2 C3 E1 E2 E3 var1 0.560 NA NA 0.006 NA NA 0.434 NA NA var2 0.652 0.343 NA 0.054 0.118 NA 0.294 0.539 NA var3 0.636 0.477 0.277 -0.047 -0.047 0.124 0.411 0.570 0.598 [1] 7550.711
relevant fragment
share = mxModel("share", mxMatrix("Lower", nrow=nVar, ncol=nVar, free=TRUE, values=.6, name="a", byrow=TRUE), # Additive genetic path coefficient mxMatrix("Lower", nrow=nVar, ncol=nVar, free=TRUE, values=.6, name="c", byrow=TRUE), # Common environmental path coefficient mxMatrix("Lower", nrow=nVar, ncol=nVar, free=TRUE, values=.6, name="e", byrow=TRUE), # Unique environmental path coefficient # Multiply by each path coefficient by its inverse to get variance component mxAlgebra(a %*% t(a), name="A"), # additive genetic variance mxAlgebra(c %*% t(c), name="C"), # common environmental variance mxAlgebra(e %*% t(e), name="E") # unique environmental variance ) mzModel = mxModel(share, name="MZ", expMZMeans, # MZ ACE algebra mxAlgebra(rbind (cbind(A+C+E , A+C), cbind(A+C , A+C+E)), dimnames = list(selVars, selVars), name="expCov"), mxData(mzData, type="raw"), mxFIMLObjective("expCov", "expMean") ) dzModel = mxModel(share, name="DZ", expDZMeans, mxAlgebra(rbind (cbind(A+C+E , .5%x%A+C), cbind(.5%x%A+C, A+C+E) ), dimnames = list(selVars, selVars), name="expCov"), mxData(dzData, type="raw"), mxFIMLObjective("expCov", "expMean") ) #Build and Run ACE model twinACEModel = mxModel("twinACE",mzModel, dzModel, mxAlgebra(MZ.objective + DZ.objective, name="twin"), mxAlgebraObjective("twin") ) twinACEFit = mxRun(twinACEModel)
Interestingly, rewriting the
Log in or register to post comments
In reply to Interestingly, rewriting the by tbates
Hmmm.... That is interesting.
Log in or register to post comments
In reply to Interestingly, rewriting the by tbates
The output fragment you
Log in or register to post comments
In reply to The output fragment you by neale
my error was to assume that
The fix here was to use the name of the mz group in the algebra of the dz group, linking the two algebras to the same underlying matrices.
It will important to clearly explain the scope of labels and names to users, and that information from different groups has to be imported by using the object's full name, including the originating group.
Easy enough once you know :-)
Log in or register to post comments