Starting values
Posted on

Forums
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
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:
warning()
. My opinion is that warnings are useless, because programmers tend to ignore them.In any case, we should probably document this behavior in the
?mxRun()
file.Log in or register to post comments
In reply to This is a tricky one. by mspiegel
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.
Log in or register to post comments