# Starting values

3 posts / 0 new
Offline
Joined: 02/04/2010 - 20:45
Starting values

Hi all!

When reading through the optimization innards of OpenMx, I came across this piece of code:

in npsolWrap.c, l.356:

         if((x[k] == 0.0) && !disableOptimizer) {
x[k] += 0.1;
}

If I am not mistaken, the array x holds the starting values at that time point. I presume that this if-clause is included in order to avoid some "bad" starting conditions of the model-implied covariance matrix. However, shouldn't users be informed or warned that the model is actually fitted with different starting values than those they had specified?

best regards,
Andreas

Offline
Joined: 07/31/2009 - 15:24
This is a tricky one.

This is a tricky one.

As a matter of principle, I agree that we should be informing the user that we jiggled their starting values away from 0.0. However, there are a couple of caveats in this particular case:

• Not performing this step results in a lot of non-positive-definite errors.
• We could issue a warning(). My opinion is that warnings are useless, because programmers tend to ignore them.
• We could just print some text to the console. I don't really like this either.
• We could add an mxOption() to disable this behavior. And/or we could add an informational message to the summary() output.

In any case, we should probably document this behavior in the ?mxRun() file.

Offline
Joined: 02/04/2010 - 20:45
I agree with all your points.

I agree with all your points.

I like the mxOption() very much. I can imagine having the possibility for specifying a "behavior" for start values, which in the long run could be, e.g.:

• "default": use the user-specified starting values (with clever improvements, like altering zeros)
• "force-user-specified-values": use the user-specified values no matter how bad they behave
• "least-squares": use least-squares estimates to override the user-specified start values
• "help-me-dear-openmx-gods": provide some clever estimates, if user has no clue, at all. Like setting variances to .5, covariances to .1 and loadings to 1.0. Or anything that is more clever.