[R] non-linear plot parameters

David Winsemius dwinsemius at comcast.net
Thu Aug 26 22:00:44 CEST 2010


On Aug 26, 2010, at 1:48 PM, David Winsemius wrote:

>
> On Aug 26, 2010, at 1:35 PM, Marlin Keith Cox wrote:
>
>> I need the parameters estimated for a non-linear equation, an  
>> example of the
>> data is below.
>>
>>
>> # rm(list=ls())    I really wish people would add comments to  
>> destructive pieces of code.
>
>> Time<-c( 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4,
>> 4, 4, 5, 5, 5, 5, 5, 8, 8, 8, 8, 8)
>> Level<-c( 100, 110,  90,  95,  87,  60,  65,  61,  55,  57,  40,   
>> 41,  50,
>> 47,
>> 44,  44,  42,  38,  40, 37,  37,  35,  40,  34,  32,  20,  22,   
>> 25,  27,
>> 29)
>> plot(Time,Level,pch=16)
>
> You did not say what sort of "non-linear equation" would best suit,  
> nor did you offer any background regarding the domain of study.  
> There must be many ways to do this. After looking at the data, a  
> first pass looks like this:
>
> > lm(log(Level) ~Time )

An effort to chide me offlist for not actually saying this was a  
"linear model" has fallen on unreceptive ears, since it does estimate  
a non-linear _equation_ which was what was requested. However, this  
chiding has lead me to expand my repertoire of worked solutions to  
include an nls() solution to a Weibull equation:

 > fm1 = nls(Level~ exp(-A*Time^CC) , start = list(CC=.2, A = .1),  
control=list(maxiter=200, minFactor=.00001), alg = 'plinear')
 > fm1
Nonlinear regression model
   model:  Level ~ exp(-A * Time^CC)
    data:  parent.frame()
      CC       A    .lin
  0.7045  0.3250 96.5518
  residual sum-of-squares: 680.6

Number of iterations to convergence: 5
Achieved convergence tolerance: 2.338e-06

 > plot(Level~Time)
 > points(unique(Time), predict(fm1,  
data.frame(Time=unique(Time) ) ) , col="red", pch=4)

>
> Maybe a Weibull model would be more appropriate.

Yes it appears to be.
-- 

David Winsemius, MD
West Hartford, CT



More information about the R-help mailing list