Error in Obtaining Cis

Posted on
Picture of user. gary.marks@acu… Joined: 07/14/2016
I am running a multivariate model (3 dependent vars) with sex (female MZ, male MZ, female DZ, male DZ, F&M DZ, M&F DZ) the model runs fine with the SLSQP optimizer.

No SEs are suspect and the return code is zero.

However when I try the command:
FitCholMod <- mxRun(CholMod, intervals =TRUE)

It runs as before but I receive this error message.

Error in runHelper(model, frontendStart, intervals, silent, suppressWarnings, :
NLOPT fatal error -1

So the confidence intervals are not produced.
I have tried the other optimizes. With CSOLNP a number of SEs are suspect. With NPSOL MX returns a code of 1 and more SEs are suspect.

I can obtain CIs with a worse fitting (non-preferred) model with the SLSQP optimizer. The non-preferred model has a significantly worse fit than the full-Cholesky, so I don't want to use that model.

With other models, just MZ vs DZ and a cohort model (young MZ, old MZ, young DZ, old DZ) I can obtain CIs.

I have several suspicions:

* I don't have enough male dizygotic twins !!!!
* I should rescale the dependent variables (years of education is left as is 8-18, income have been divided by $10,000, but occupational status still ranges from 0-100). I could divide occupational status by 10.
*It did seem to work before I downloaded the new MX version but I am at all not certain that I was analyzing the same model.

Any suggestions?

Replied on Thu, 11/10/2016 - 05:58
Picture of user. jpritikin Joined: 05/23/2012

The CI code has recently undergone a rewrite. I'd be curious to know whether the current development version works. Can you install from https://github.com/OpenMx/OpenMx ?
Replied on Fri, 11/11/2016 - 00:05
Picture of user. gary.marks@acu… Joined: 07/14/2016

In reply to by jpritikin

(My 3rd Attempt _ I am not sure if I am replying correctly)
I tried to run the code from within R but got an error.

> source('https://github.com/OpenMx/OpenMx')
Error in source("https://github.com/OpenMx/OpenMx") :
https://github.com/OpenMx/OpenMx:5:1: unexpected '<'
4:
5: <

Should I try an earlier version of MX? I am not sure a how to do that.

Replied on Fri, 11/11/2016 - 10:11
Picture of user. tbates Joined: 07/31/2009

In reply to by gary.marks@acu…

The instruction above about "installing" from github is far from complete.

You'll need, for instance, a working compiler for fortran and C++. You can learn more here:

http://openmx.psyc.virginia.edu/wiki/howto-build-openmx-source-repository

It's fun, but a bit geeky. Alternatively, if you can share the model (just save(CholMod, file = "CholMod.RData"), a developer with the latest version could then check if you email the model file to them.

Replied on Mon, 11/14/2016 - 10:48
Picture of user. AdminRobK Joined: 01/24/2014

Rescaling the variables might help. Also consider using mxTryHard() in place of mxRun(); make sure you're passing argument intervals=TRUE no matter which of the two you're using.
Replied on Mon, 11/14/2016 - 11:56
Picture of user. AdminRobK Joined: 01/24/2014

If you're getting a good MLE with SLSQP, but SLSQP chokes on the confidence intervals, you could use a different optimizer for finding the point estimates versus finding the confidence limits. This requires a custom compute plan. The simplest way to do that is probably something like this (which assumes you've set SLSQP as the default optimizer earlier in the script):

fitCholAce = mxRun(modelChol, intervals=F, onlyFrontend=T)
fitCholAce$compute$steps$CI$engine = "NPSOL"
fitCholAce$compute$.persist = TRUE
fitCholAce = mxRun(fitCholAce)

Note that fitCholAce, and any MxModel object derived from it, will thereafter always calculate confidence intervals, regardless of whether argument intervals is TRUE or FALSE. You can restore the usual behavior by running the MxModel after setting the compute plan's .persist slot to FALSE.

Edit: Looks like R's main assignment operator is being parsed as an HTML tag(?) in forum posts right now...

Replied on Fri, 11/18/2016 - 02:33
Picture of user. gary.marks@acu… Joined: 07/14/2016

Thanks I feel I am making progress.
It's a good idea but I get an error after the MxRun command:

Error in (function (classes, fdef, mtable) :
unable to find an inherited method for function ‘assignId’ for signature ‘"list"’

I find the ML estimates for the SLSQP and CSOLNP optimizers are identical but they return status codes of zero and 6 respectively. When both produce CIs, for a straight MZ/DZ model they are also the same.

Replied on Fri, 11/18/2016 - 10:59
Picture of user. AdminRobK Joined: 01/24/2014

In reply to by gary.marks@acu…

Thanks I feel I am making progress.
It's a good idea but I get an error after the MxRun command:

Error in (function (classes, fdef, mtable) :
unable to find an inherited method for function ‘assignId’ for signature ‘"list"’

Ah, I bet the first call to mxRun() needs to have intervals=T, as in

fitCholAce <- mxRun(modelChol, intervals=F, onlyFrontend=T)

If that doesn't help, I'd be curious to see the traceback() for that error message.

I find the ML estimates for the SLSQP and CSOLNP optimizers are identical but they return status codes of zero and 6 respectively. When both produce CIs, for a straight MZ/DZ model they are also the same.

OK, that's encouraging.