[R] maxLik: different estimations from different packages
Spencer Graves
spencer.graves at structuremonitoring.com
Fri May 10 19:47:20 CEST 2013
On 5/10/2013 5:22 AM, Ott Toomet wrote:
> Hi,
> maybe we changed the convergence criteria a little bit? I cannot remember,
> but we have played around with those a few times. You may try those,
> perhaps it helps a bit.
>
> Another recommendation---as you do not supply analytic gradient, you may
> want use BHHH method instead (if this applies to your problem), or another
> one that does not need Hessian. Numeric approximation of Hessian is pretty
> error-prone..
You can try all the different "method" options for "maxLik", pick
the best answer, iterate once to make sure you can't get something
better. If you want a hessian and don't get one from the best answer,
you can feed the best answer to the "hessian" function to get that.
Also, if you get a singular hessian, that says that you cannot
estimate as many parameters as you have. If you have p parameters and
the hessian is of rank p0 < p, that says you can only estimate p0
parameters independently. You can use the "fnSubset" function to fix
(p-p0) parameters at specific values and see what you get from varying
the others.
Estimating hessians can be error-prone whether you use numeric or
analytic derivatives. The "compareDerivatives" function can help you
check analytic derivatives for software bugs.
Hope this helps.
Spencer
> Best,
> Ott
>
>
> On Fri, May 10, 2013 at 2:40 PM, Arne Henningsen
> <arne.henningsen at gmail.com>wrote:
>
>> Dear Alfonso
>>
>> On 10 May 2013 12:51, <alfonso.carfora at uniparthenope.it> wrote:
>>> we are computing maximum likelihood estimations using maxLik package and
>> we
>>> realized that the results of the estimation depend on the version of the
>>> package installed
>>>
>>> for example if we try to estimate this function with an old version of
>>> maxLik under R 2.13.1 (32 bit version installed 2 years ago):
>>>
>>>
>>> L<-function (param) {b0t<-param[1]
>>> p1t<-param[2]
>>> p2t<-param[3]
>>> p3t<-param[4]
>>> p4t<-param[5]
>>>
>>> for(i in 17:T) {n[i,]<- b0t + p1t*a[i-1] + p2t*sum(a[(i-4):(i-1)]) +
>>> p3t*(sum(a[(i-8):(i-1)])) + p4t*(sum(a[(i-16):(i-1)]))
>>> m[i,]<-exp(n[i])/(1+exp(n[i]))
>>> ll[i-16,]<-a[i]*log(m[i])+(1-a[i])*log(1-m[i]) }
>>> sum(ll)}
>>> b2<-maxLik(L, start=c(-2.8158,5,-1,0.3213,-0.3112))
>>>
>>>
>>> we obtain this results:
>>>
>>> summary(b2)
>>>
>>> Maximum Likelihood estimation
>>> Newton-Raphson maximisation, 16 iterations
>>> Return code 2: successive function values within tolerance limit
>>> Log-Likelihood: -38.11285
>>> 5 free parameters
>>> Estimates:
>>> Estimate Std. error t value Pr(> t)
>>> [1,] -2.81578 0.43548 -6.4660 1.007e-10 ***
>>> [2,] 50.50024 13.17046 3.8344 0.0001259 ***
>>> [3,] -11.53344 3.31075 -3.4836 0.0004947 ***
>>> [4,] 0.32130 0.42978 0.7476 0.4547096
>>> [5,] -0.31121 0.23245 -1.3388 0.1806280
>>> ---
>>> Signif. codes: 0 ?***? 0.001 ?**? 0.01 ?*? 0.05 ?.? 0.1 ? ? 1
>>> --------------------------------------------
>>>
>>> NB: a is a binary time series
>>>
>>> if we try to estimate the same function using the last version of maxLik
>>> under R.3.0 (64 bit latest version) the estimation do not converge and
>> this
>>> is the error message:
>>>
>>> Iteration 15
>>> Parameter:
>>> [1] -2.8146429 51.3042554 -11.7373313 0.3245214 -0.3125767
>>> Gradient:
>>> [1] NaN NaN NaN NaN NaN
>>> Errore in maxNRCompute(fn = logLikAttr, fnOrig = fn, gradOrig = grad,
>>> hessOrig = hess, :
>>> NA in gradient
>>>
>>> What causes this?
>> It could be that the NaNs in the gradients are caused by rounding
>> errors and/or approximation errors in the numerical
>> (finite-difference) derivatives when using R.3.0 64 bit, because
>> different hardware and different software versions (e.g. R,
>> mathematical libraries, OS) could lead to different rounding errors.
>> In this case, the specification of a function that returns analytical
>> gradients could solve the problem.
>>
>> If this does not solve the problem and you cannot find out the reason
>> for the NaNs in the analytical gradients yourself, please provide a
>> reproducible example so that we could help you with this.
>>
>> Please note that you could also ask questions regarding the maxLik
>> package via a forum at maxLik's R-Forge site:
>>
>> https://r-forge.r-project.org/projects/maxlik/
>>
>>
>> ... and please do not forget to cite maxLik in your publications :-)
>>
>> Best regards,
>> Arne
>>
>>
>> --
>> Arne Henningsen
>> http://www.arne-henningsen.name
--
Spencer Graves, PE, PhD
President and Chief Technology Officer
Structure Inspection and Monitoring, Inc.
751 Emerson Ct.
San José, CA 95126
ph: 408-655-4567
web: www.structuremonitoring.com
More information about the R-help
mailing list