[R] 'gmm' package: How to pass controls to a numerical solver used in the gmm() function?

David Winsemius dwinsemius at comcast.net
Wed Feb 20 04:01:35 CET 2013

On Feb 19, 2013, at 5:25 PM, Malikov, Emir wrote:

> Hello --
> The question I have is about the gmm() function from the 'gmm' package
> (v. 1.4-5).
> The manual accompanying the package says that the gmm() function is
> programmed to use either of four numerical solvers -- optim, optimize,
> constrOptim, or nlminb -- for the minimization of the GMM objective
> function.
> I wonder whether there is a way to pass controls to a solver used
> while calling the gmm() function?
> In particular, the problem that I have been having is that the gmm()
> fails to converge withing the default number of iteration for the
> 'optim' solver that it uses. Ideally, I would wish to figure out a way
> to be able to choose controls, including the number of iterations, for
> the solver that I tell gmm() to use.
> Currently, the way I call the function is as follows:
> model.name <- gmm(g=g.fn, x=data, gradv=g.gr, t0=c(start),
> type=c("twostep"), optfct=c("optim") )
> I also would want the gmm() function to know that I want it to pass
> the following control -- maxit=1500 -- to the optim solver.

The argument name in the manual is `itermax`. I cannot tell from lookng at the code whether that would get passed to 'optim'.

> Unfortunately, the 'gmm' manual does not tell whether this is doable.

 There is also a "..." argument which is stated in the help page to be passed to "optim". Looking at ?optim one sees that controls generally need to be in a list named 'control'. That this is the intent is supported by the sentence on page 11 of the gmm vignette:

"We could try dierent starting values, increase the number of iterations in the control option of
optim or use nlminb which allows to put restrictions on the parameter space."


David Winsemius
Alameda, CA, USA

More information about the R-help mailing list