[R] profile error on an nls object

Bill.Venables@csiro.au Bill.Venables at csiro.au
Fri Mar 19 02:36:24 CET 2004


Adrian Dragulescu asks:
 
> Hello all,
> 
> This is the error message that I get.
> >   hyp.res <- nls(log(y)~log(pdf.hyperb(theta,X)), data=dataModel,
> +              start=list(theta=thetaE0),
> +              trace=TRUE)
> 45.54325 :   0.1000000  1.3862944 -4.5577142  0.0005503
> 3.728302 :   0.0583857346  0.4757772859 -4.9156128701  0.0005563154
> 1.584317 :   0.0194149477  0.3444648833 -4.9365149150  0.0004105426
> 1.569333 :   0.0139310639  0.3824648048 -4.9024001228  0.0004089738
> 1.569311 :   0.0137155342  0.3888648619 -4.8979817546  0.0004137501
> 1.569311 :   0.0136895846  0.3893564152 -4.8976182201  0.0004141057
> 1.569311 :   0.0136876315  0.3894059947 -4.8975821760  0.0004141343
> >   hyp.res.S <- summary(hyp.res)
> >   hyp.res.S
> 
> Formula: log(y) ~ log(pdf.hyperb(theta, X))
> 
> Parameters:
> 	   Estimate Std. Error t value Pr(>|t|)
> theta1  0.0136876  0.0359964   0.380    0.705
> theta2  0.3894060  0.3079860   1.264    0.211
> theta3 -4.8975822  0.2219928 -22.062   <2e-16 ***
> theta4  0.0004141  0.0005457   0.759    0.451
> ---
> Signif. codes:  0 `***' 0.001 `**' 0.01 `*' 0.05 `.' 0.1 ` ' 1
> 
> Residual standard error: 0.1542 on 66 degrees of freedom
> 
> Correlation of Parameter Estimates:
> 	   theta1    theta2    theta3
> theta2 -0.02168
> theta3 -0.02029  0.997736
> theta4 -0.97182 -0.008054 -0.008952
> 
> >   pr1 <- profile(hyp.res)
> 1.825584 :   0.3894059947 -4.8975821760  0.0004141343
> ...
> 1.875413 :  0.000300086 1.830592703 0.000608001
> Error in prof$getProfile() : step factor 0.000488281 reduced below
`minFactor' of 0.000976563
> >
> 
> Why is there an error on profile, which should only evaluate the
> objective function for different parameter values?

profile() doesn't merely evaluate the objective function at
different parameter values. It holds one of the parameters constant
and optimises the objective function with respect to all the others.
This is repeated for a sequence of values passing through the mle, and
the same for each parameter.  

If you fix a parameter at a very unrealistic value (as can happen) it
is not surprising that the optimisation with respect to all the others
runs into trouble.  This is a computationally difficult area and I am
more surprised by the cases that work without a hitch than by the ones
that don't.  You can expect to have to tweak things a bit in many cases.

Bill Venables.

> 
> Thanks a lot.
> 
> Adrian
> 
> ______________________________________________




More information about the R-help mailing list