[R] Re: Four-parameter logistic [was Re: Info]

Spencer Graves spencer.graves at pdf.com
Wed Jul 16 16:49:26 CEST 2003


Dear Doug:

	  Thanks for your reply and clarifications.  I greatly appreciate them. 
  I preach the Gospel of Bates & Watts every chance I get, but life has 
given me so many other problems to solve that I don't know your works as 
well as I would like.

Best Wishes,
Spencer Graves

Douglas Bates wrote:
> Spencer Graves <spencer.graves at pdf.com> writes:
> 
> 
>>On 7/11, I replied to one of your earlier posts on this problem wiht
>>the following:
>>
>>
>>chemYield <-
>>function(a, x)(a[1]+(a[3]-a[2])/(1+exp(-a[2]*(x-a[4]))
>>
>>This can be used in "optim" but not "nls".  Mimicking an example in
>>the documentation for "nls" (package nls), I suspect the following
>>should work:
>>
>>
>>yield.fit <- nls( y ~ a + (c.-a)/(1+exp(-b*(x-m))),
>>                        data = yield.data.frame,
>>                        start = list( a= 0, c.=2, b= 1, m=4 ),
>>                        trace = TRUE )
>>
>>where "y" and "x" are columns of "yield.data.frame.  [Note:  I suggest
>>you avoid using reserved words like "c":  "c" is a function in R.  R
>>is smart enough to distinguish between a function "c" and a
>>non-function object in many contexts.  However, I try to avoid relying
>>on this.  Note that here I changed your "c" to "c.".]
>>
>>
>>	  Have you tried something like these two?  I suggest you try
>>them both with a very simple toy example with 4 or 5 observations.  If
>>you can't get both of them to work, please submit the data with your
>>failed attempts and the resulting error message(s).  With that detail,
>>someone else will likely be able to respond in seconds.  Without it,
>>we may no be able to help you.  We've been at this almost a week and
>>still do not have the problem solved largely because people like me
>>are shooting in the dark:  We can't figure out what you are missing,
>>and you aren't providing enough detail to help us see the gap.
>>
>>
>>hope this helps.  spencer graves
> 
> 
> Thanks for the reply Spencer.  I would like to offer a few additional
> comments, not in criticism but in the spirit in which you offer your
> comments - to assist the community.
> 
> It is not a good idea to use nls to fit a four-parameter model to 4
> data points.  The relative offset convergence criterion used in nls
> cannot be applied to cases with 0 degrees of freedom for residuals.
> 
> In simulating data for test fits by nls you must add noise to the
> response.  The relative offset convergence criterion used in nls will
> not, in general, declare convergence on artificial 'perfect fit' data.
> The author of nls does not regard this as a bug :-).
> 
> To get a reasonable fit of a four parameter logistic model you need
> data across a wide range of x values.  In particular you need data on
> both the 'toe' of the curve and the 'shoulder' of the curve.  A common
> reason for failure to fit the four-parameter logistic is the
> availability of data only on the 'toe' and the linear portion of
> the curve.  Without some data past the linear region you cannot
> determine an upper asymptote and the two parameters written as m and a
> in the above equation cannot be separately determined.
> 
> I would recommend using the 'plinear' algorithm in nls for this
> model.  Two of the four parameters are conditionally linear.  Reducing
> an optimization problem from four parameters to two parameters is a
> big win.
> 
> The SSfpl self-starting model can relieve the user of the need to form
> starting estimates.  See
> 
> ?SSfpl
> 
> and 
> 
> example(SSfpl)
> 
> The SSfpl model uses a slightly different parameterization of the
> model, which we (Don Watts and I) have found to be more stable than
> the one given above.  It can be difficult to estimate b in the above
> formulation.  We find it better to use a location-scale form of b and
> m and to converge on the logarithm of scale parameter.
> 
> Successful use of nonlinear regression depends on understanding the
> nature of the model and your data.  In particular, I recommend
> plotting the data before ever trying to fit any model.  You may recall
> that I go a little further than that in some courses and inform
> students that if I catch them fitting models without plotting the data
> first they will be in danger of failing the course. :-)
> 
> 
> Thanks for your efforts in responding to many, many questions on this
> list.  I hope my comments are helpful.
>




More information about the R-help mailing list