[R] Non-Linear Regression Problem
Spencer Graves
spencer.graves at pdf.com
Thu Apr 15 17:04:32 CEST 2004
Have you considered "try"?
When I do this, I prefer to parameterize the problem to avoid
situations where the function is undefined and provide alternative
algorithms were a function will have numerical difficulties. For
example, suppose I want (sin(x)/x), and I get NA when x = 0. I might do
something like the following:
sinx.x <- sin(x)/x
x0 <- (abs(x)<1e-9)
if(any(x0))
sinx.x[x0] <- 1
Sometimes, I'll program a 2- or 3-term Taylor expansion for the
exceptional case and use it when (abs(x)<1e-4), for example.
hope this helps.
spencer graves
Christian Mora wrote:
>Working on the same idea, Ive generated a data grid with 4 vars, two of
>them with its own sequence and two with fixed values. As Spencer pointed
>out one option is to get the values from a simple loop. My question is:
>How can jump from one set of starting values to the next (on the data
>grid) in case they cause an invalid value in the model Im evaluating? In
>my example, Ive 12 possible combinations of the 4 vars and in the 6th
>combination I get an error and the loop is terminated so what Im looking
>for is to skip this problem and continue from the 7th to 12th
>combination of starting points
>
>Ill appreciate any comment
>
>Code:
>
>data<-expand.grid(alpha=100,delta=4,beta=seq(1,2,by=0.5),gamma=seq(.1,.4
>,by=.1))
>for(i in 1:12){
>fit<-nls(y~delta+(alpha-delta)/(1+exp(beta*log(rate/gamma))),data=base,s
>tart=c(alpha=data$alpha[i],delta=data$delta[i],beta=data$beta[i],gamma=d
>ata$gamma[i]),trace=T)
>}
>
>Thanks
>CMora
>
>
>
>-----Original Message-----
>From: r-help-bounces at stat.math.ethz.ch
>[mailto:r-help-bounces at stat.math.ethz.ch] On Behalf Of Spencer Graves
>Sent: Wednesday, April 14, 2004 12:27 PM
>To: WilDscOp
>Cc: r-help at stat.math.ethz.ch
>Subject: Re: [R] Non-Linear Regression Problem
>
>
>1. For the equation you mentioned, have you considered the following:
>
>DF <- data.frame(t.=c(1, 4, 16), Y=c(.8, .45, .04))
># I do NOT use "t" as a name, as it
># may conflict with the matrix transpose function.
>fit0 <- lm(log(Y)~t.-1, DF)
>fit0
>Call:
>lm(formula = log(Y) ~ t. - 1, data = DF)
>
>Coefficients:
> t.
>-0.2012
>################
>
> If this is the problem you really wanted to solve AND you honestly
>
>need NONLINEAR least squares, I would expect that (-0.2) should provide
>a reasonable starting value for nls:
>
> > fit1 <- nls(Y~exp(-THETA*t.), data=DF, start=c(THETA=-0.2))
> > fit1
>Nonlinear regression model
> model: Y ~ exp(-THETA * t.)
> data: DF
> THETA
>0.2034489
> residual sum-of-squares: 0.0003018337
> >
>
> 2. Alternatively, you could compute the sum of squares for all
>values of THETA = seq(0, .01, 100) in a loop, then find the minimum by
>eye.
>
> 3. If this is just a toy example, and your real problem has
>several parameters, "expand.grid" will produce a grid, and you can
>compute the value of your function and the sum of squares of residuals
>at every point in the grid in a single loop, etc.
>
> hope this helps. spencer graves
>
>WilDscOp wrote:
>
>
>
>>Dear all,
>>
>> I was wondering if there is any way i could do a "Grid Search" on
>>a parameter space using R (as SAS 6.12 and higher can do it) to start
>>the Newton-Gauss Linearization least squares method when i have NO
>>prior information about the parameter.
>>W. N. Venables and B. D. Ripley (2002) "Modern Applied Statistics with
>>
>>
>
>
>
>>S", 4 th ed., page 216-7 has a topic "Self-starting non-linear
>>regressions" using negexp.SSival - but i can not solve my hypothetical
>>
>>
>
>
>
>>problem using that - my problem is :
>>
>>Y = EXP(-(THETA * t)) with data below for estimating THETA:
>>
>>t Y
>>1 0.80
>>4 0.45
>>16 0.04
>>
>>Whatever i could do, is in
>>http://www.angelfire.com/ab5/get5/nonlinear.PDF
>>
>>Any response / help / comment / suggestion / idea / web-link / replies
>>
>>
>
>
>
>>will be greatly appreciated.
>>
>>Thanks in advance for your time.
>>
>>_______________________
>>
>>Mohammad Ehsanul Karim <wildscop at yahoo.com>
>>Institute of Statistical Research and Training
>>University of Dhaka, Dhaka- 1000, Bangladesh
>>
>>______________________________________________
>>R-help at stat.math.ethz.ch mailing list
>>https://www.stat.math.ethz.ch/mailman/listinfo/r-help
>>PLEASE do read the posting guide!
>>http://www.R-project.org/posting-guide.html
>>
>>
>
>______________________________________________
>R-help at stat.math.ethz.ch mailing list
>https://www.stat.math.ethz.ch/mailman/listinfo/r-help
>PLEASE do read the posting guide!
>http://www.R-project.org/posting-guide.html
>
>______________________________________________
>R-help at stat.math.ethz.ch mailing list
>https://www.stat.math.ethz.ch/mailman/listinfo/r-help
>PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
>
>
More information about the R-help
mailing list