[R] Non-Linear Regression Problem
Christian Mora
christian_mora at vtr.net
Thu Apr 15 05:33:42 CEST 2004
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
More information about the R-help
mailing list