Check out the drc package.

Also, please read the last line to every message to r-help regarding
reproducible code
and note that function names are case sensitive in R so NLS is not the
same as nls.

On Dec 21, 2007 7:36 PM,  <[EMAIL PROTECTED]> wrote:
> I am writing a program for automated (i.e. no user intervention - for 
> biologists) iteratively reweighted least-square fit to a function of the form 
> "reading ~ exp(lm2)/(1 + (dose/exp(lm3))^exp(lm4)" using case weight 
> proportional to the mean, e.g., E(reading).    Because for some datasets the 
> solution is sensitive to starting values, I first use OPTIM() with 
> Nelder-Mead to locate the solution, and then plug the solution into NLS() 
> (default algorithm) using the appropriate weights as a way to retrieve SEs, 
> deviance, etc rather than computing these from OPTIM results.
>
> The problem I have discovered is the following.  OPTIM()  arrives at the 
> correct solution that minimizes the objective function, and I have confirmed 
> this in numerous examples in Excel.  When this solution is plugged into 
> NLS(), the first evaluation yields the same value of the objective function 
> as OPTIM().  NLS() then attempts steps, and apparently finds a slightly 
> different solution with a smaller value for the objective function.  However, 
> this new solution actually does not give a smaller objective function value, 
> but rather a larger one, when verifed against an independent computation.  
> Hence, it appears that NLS is getting confused and taking a step based on 
> erroneous computation of the objective function.
>
> An example is below, with an abridged OPTIM output followed by NLS output:
>
> -- ************** START OUTPUT **************************
> -- [1] "Drug = Melphelan"
> -- [1] "Cell line = CHLA-266"
> --   Nelder-Mead direct search function minimizer
> -- function value for initial parameters = 3.052411
> --   Scaled convergence tolerance is 3.05241e-12
> -- Stepsize computed as 1.801225
> -- BUILD              4 288782670697.238953 3.052411
> -- LO-REDUCTION       6 40.478286 3.052411
> -- HI-REDUCTION       8 27.015234 3.052411
> -- .
> -- .
> -- .
> -- LO-REDUCTION     208 0.763370 0.763370
> -- LO-REDUCTION     210 0.763370 0.763370
> -- Exiting from Nelder Mead minimizer
> --     212 function evaluations used
> --         m2           m3       m4
> -- 1 80846342 1.190286e-05 1.049291
>
> [***NOTE - the correct solution parameters values are the line above on the 
> absolute scale, which are the values below on the ln scale, representing the 
> first evaluation by NLS.  This gives the correct objective function value of 
> 0.763370, and hence agrees with OPTIM at this point ***]
>
> -- 0.7633697 :   18.20806090 -11.33873192   0.04811485
> --   It.   1, fac=           1, eval (no.,total): ( 1,  1): new dev = 0.7504
> -- 0.7504 :   18.19909405 -11.34554803   0.05560241
> --   It.   2, fac=           1, eval (no.,total): ( 1,  2): new dev = 0.750387
> -- 0.7503866 :   18.19933189 -11.34796180   0.05429375
> --   It.   3, fac=           1, eval (no.,total): ( 1,  3): new dev = 0.750387
> -- .
> -- . multiple step halving attempts
> -- .
> --   It.  14, fac=  3.8147e-06, eval (no.,total): ( 4, 39): new dev = 0.750387
> --   It.  14, fac= 1.90735e-06, eval (no.,total): ( 5, 40): new dev = 0.750387
> --
> -- Formula: reading ~ exp(lm2)/(1 + (dose/exp(lm3))^exp(lm4))
> --
> -- Parameters:
> --      Estimate Std. Error  t value Pr(>|t|)
> -- lm2  18.19934    0.02084  873.252   <2e-16 ***
> -- lm3 -11.34795    0.08316 -136.459   <2e-16 ***
> -- lm4   0.05435    0.04103    1.325    0.191
> -- ---
> -- Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
> --
> -- Residual standard error: 0.1147 on 57 degrees of freedom
> --
> -- Number of iterations till stop: 13
> -- Achieved convergence tolerance: 2.611e-08
> -- Reason stopped: step factor 9.53674e-007 reduced below 'minFactor' of 
> 1e-006
> --
> -- Warning message:
> -- In nls(reading ~ exp(lm2)/(1 + (dose/exp(lm3))^exp(lm4)), start = list(lm2 
> =
> -- log(beta_nm$m2),  :
> --   step factor 9.53674e-07 reduced below 'minFactor' of 1e-06
> --
> -- *** END OUTPUT *********************************************************
>
> Note the objective function value of .750387 at parameter values 18.19934, 
> -11.34795,  0.05435.  However, objective function value at this solution is 
> actually 0.776426587, by Excel computation.
>
> Can anyone suggest what I might be doing wrong, or is this a bug or anomaly 
> of the NLS algorithm?
>
> Thanks in advance
>
> Richard Sposto (Los Angeles).
>
>
>
> --
> This message was sent on behalf of [EMAIL PROTECTED] at openSubscriber.com
> http://www.opensubscriber.com/message/[EMAIL PROTECTED]/7530379.html
>
> ______________________________________________
> R-help@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to