[R] help with the maxBHHH routine

Arne Henningsen arne.henningsen at googlemail.com
Wed May 4 08:53:26 CEST 2011


Dear Rohit

On 3 May 2011 22:53, Rohit Pandey <rohitpandey576 at gmail.com> wrote:
> Hello R community,
>
> I have been using R's inbuilt maximum likelihood functions, for the
> different methods (NR, BFGS, etc).
>
> I have figured out how to use all of them except the maxBHHH function. This
> one is different from the others as it requires an observation level
> gradient.
>
> I am using the following syntax:
>
> maxBHHH(logLik,grad=nuGradient,finalHessian="BHHH",start=prm,iterlim=2)
>
> where logLik is the likelihood function and returns a vector of observation
> level likelihoods and nuGradient is a function that returns a matrix with
> each row corresponding to a single observation and the columns corresponding
> to the gradient values for each parameter (as is mentioned in the online
> help).
>
> however, this gives me the following error:
>
> *Error in checkBhhhGrad(g = gr, theta = theta, analytic = (!is.null(attr(f,
> :
>  the matrix returned by the gradient function (argument 'grad') must have
> at least as many rows as the number of parameters (10), where each row must
> correspond to the gradients of the log-likelihood function of an individual
> (independent) observation:
>  currently, there are (is) 10 parameter(s) but the gradient matrix has only
> 2 row(s)
> *
> It seems it is expecting as many rows as there are parameters. So, I changed
> my likelihood function so that it would return the transpose of the earlier
> matrix (hence returning a matrix with rows equaling parameters and columns,
> observations).
>
> However, when I run the function again, I still get an error:
> *Error in gr[, fixed] <- NA : (subscript) logical subscript too long*
>
> I have verified that my gradient function, when summed across observations
> gives the same results as the in built numerical gradient (to the 11th
> decimal place - after that, they differ since R's function is numerical).
>
> I am trying to run a very large estimation (1000's of observations and 821
> parameters) and all of the other methods are taking way too much time
> (days). This method is our last hope and so, any help will be greatly
> appreciated.

Please make yourself familiar with the BHHH algorithm and read the
documentation of maxBHHH: it says about argument "grad":

"[...] If the BHHH method is used, ‘grad’ must return a matrix, where
rows correspond to the gradient vectors of individual observations and
the columns to the individual parameters.[...]"

More information of the maxLik package is available at:
http://dx.doi.org/10.1007/s00180-010-0217-1

Best regards,
Arne

-- 
Arne Henningsen
http://www.arne-henningsen.name



More information about the R-help mailing list