[R] nls, restrict parameter values

Spencer Graves spencer.graves at pdf.com
Thu May 8 18:08:12 CEST 2003


If I have a parameter I want to be positive, I replace it by its 
logaritm.  That sends 0 to (-Inf).  Often when I do this, I also get a 
log(likelihood) that is more closely parabolic, which reduces parameter 
effects and makes the standard normal approximations more accurate.

hth.  spencer graves

Angel - wrote:
> Hi,
> I posted a question (bellow) a few weeks ago and had a reply (thanks 
> Christian) that partly solves the problem, but I still would like to be 
> able to restrict some of the independent variables in a nls model to be 
> always >0, (is there a way to do it)??
> Thanks,
> Angel
> 
> 
> 
>> From: "Christian Ritz" <ritz at dina.kvl.dk>
>> To: "Angel -" <angel_lul at hotmail.com>
>> CC: <r-help at stat.math.ethz.ch>
>> Subject: Re: [R] nls: Missing value or an Infinity produced when 
>> evaluating the model
>> Date: Wed, 23 Apr 2003 15:22:37 +0200
>>
>> Hi Angel,
>>
>> I tried reparametrise your model, setting:
>>
>> BirthMass^0.25=u
>> MaxMass^0.25=v
>>
>> and giving the following formula in R:
>>
>> GrowthModel<-nls(BodyMass~(((1-(1-u/v)*exp(-a*Time/(4*v)))^4)*v^4),data=grow 
>>
>> th,start=c(u=4,v=5,a=1.5),trace=TRUE)
>>
>> And this works for me, but the u estimate is negative (not significantly
>> different from 0, though).
>>
>> Christian
>>
>> ----- Original Message -----
>> From: "Angel -" <angel_lul at hotmail.com>
>> To: <r-help at stat.math.ethz.ch>
>> Sent: Wednesday, April 23, 2003 2:29 PM
>> Subject: [R] nls: Missing value or an Infinity produced when 
>> evaluating the
>> model
>>
>>
>> > Hi,
>> > I am trying to fit a sigmoid curve to some data with nls but I am 
>> getting
>> > into some trouble.
>> > Seems that the optimization method is getting down to some parameter
>> > estimates that make the equation unsolvable. This is an example:
>> >
>> >> growth<-data.frame(Time=c(5,7,9,11,13,15,17,19,21,23,25,27),BodyMass=c
>> >(45,85,125,210,300,485,570,700,830,940,1030,1120))
> 
> 
>> >> 
>> GrowthModel<-nls(BodyMass~(((1-(1-((BirthMass/MaxMass)^0.25))*exp(-a*Time/ 
>>
>> >(4*MaxMass^0.25)))^4)*MaxMass),data=growth,start=c
>> >(BirthMass=3,MaxMass=2500,a=1.5),trace=TRUE)
> 
> 
>> >56043.86 :     3.0 2500.0    1.5 >Error in numericDeriv(form[[3]], 
>> names(ind), env) : >        Missing value or an Infinity produced when 
>> evaluating the model
>> >
>> >Is there anyway I can restrict the parameter values used so it 
>> doesn't get to this no return point.
>> >Any other alternatives are also very welcome!
>> >Thanks in advance,
>> >Angel
> 
> 
> _________________________________________________________________
> Use MSN Messenger to send music and pics to your friends 
> http://www.msn.co.uk/messenger
> 
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://www.stat.math.ethz.ch/mailman/listinfo/r-help




More information about the R-help mailing list