1

I've been using the Synth package (which uses optimx for the optimization) and I can't find the answer to whether Synth gives a non-convergence error when it doesn't converge. I can see in the help file for optimx that, by default, it does not save the failures (i.e. those answers that do not converge) so I am guessing that by default it does not pass those failures onto Synth; however, I want to be sure that the answers I am getting have converged. Is there a way to be sure of this through the convcode() setting or something else?

Ainhoa
  • 191
  • 7

1 Answers1

2

I took a look at the code and it does not set a control value for save.failures so It should use the default behavior of optimx whicho is FALSE as you already knew. Here are the relevant calls to optimx in the synth() code.

rgV.optim.1 <- optimx(par = SV1, fn = fn.V, gr = NULL, 
    hess = NULL, method = optimxmethod, itnmax = NULL, 
    hessian = FALSE, control = list(kkt = FALSE, starttests = FALSE, 
        dowarn = FALSE, all.methods = all.methods), X0.scaled = X0.scaled, 
    X1.scaled = X1.scaled, Z0 = Z0, Z1 = Z1, quadopt = quadopt, 
    margin.ipop = Margin.ipop, sigf.ipop = Sigf.ipop, 
    bound.ipop = Bound.ipop)

....

rgV.optim.2 <- optimx(par = SV2, fn = fn.V, gr = NULL, 
    hess = NULL, method = optimxmethod, itnmax = NULL, 
    hessian = FALSE, control = list(kkt = FALSE, 
      starttests = FALSE, dowarn = FALSE, all.methods = all.methods), 
    X0.scaled = X0.scaled, X1.scaled = X1.scaled, 
    Z0 = Z0, Z1 = Z1, quadopt = quadopt, margin.ipop = Margin.ipop, 
    sigf.ipop = Sigf.ipop, bound.ipop = Bound.ipop)
MrFlick
  • 195,160
  • 17
  • 277
  • 295