Bert Gunter
2023-Aug-20 18:20 UTC
[R] Issues when trying to fit a nonlinear regression model
I got starting values as follows: Noting that the minimum data value is .38, I fit the linear model log(y - .37) ~ x to get intercept = -1.8 and slope = -.055. So I used .37, exp(-1.8) and -.055 as the starting values for theta0, theta1, and theta2 in the nonlinear model. This converged without problems. Cheers, Bert On Sun, Aug 20, 2023 at 10:15?AM Paul Bernal <paulbernal07 at gmail.com> wrote:> Dear friends, > > This is the dataset I am currently working with: > >dput(mod14data2_random) > structure(list(index = c(14L, 27L, 37L, 33L, 34L, 16L, 7L, 1L, > 39L, 36L, 40L, 19L, 28L, 38L, 32L), y = c(0.44, 0.4, 0.4, 0.4, > 0.4, 0.43, 0.46, 0.49, 0.41, 0.41, 0.38, 0.42, 0.41, 0.4, 0.4 > ), x = c(16, 24, 32, 30, 30, 16, 12, 8, 36, 32, 36, 20, 26, 34, > 28)), row.names = c(NA, -15L), class = "data.frame") > > I did the following to try to fit a nonlinear regression model: > > #First, Procedure to Find Starting (initial) Values For Theta1, Theta2, and > Theta3 > > mymod2 <- y ~ theta1 - theta2*exp(-theta3*x) > > strt2 <- c(theta1 = 1, theta2 = 2, theta3 = 3) > > trysol2<-nlxb(formula=mymod2, data=mod14data2_random, start=strt2, > trace=TRUE) > trysol2 > trysol2$coefficients[[3]] > > #Fitting nonlinear Regression Model Using Starting Values From Previous > Part > nonlinearmod2 <- nls(mymod2, start = list(theta1 > trysol2$coefficients[[1]], > theta2 = trysol2$coefficients[[2]], > theta3 = trysol2$coefficients[[3]]), data > mod14data2_random) > > And I got this error: > Error in nlsModel(formula, mf, start, wts, scaleOffset = scOff, nDcentral > nDcntr) : > singular gradient matrix at initial parameter estimates > > Any idea on how to proceed in this situation? What could I do? > > Kind regards, > Paul > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. >[[alternative HTML version deleted]]
Paul Bernal
2023-Aug-20 18:50 UTC
[R] Issues when trying to fit a nonlinear regression model
Dear Bert,
Thank you so much for your kind and valuable feedback. I tried finding the
starting values using the approach you mentioned, then did the following to
fit the nonlinear regression model:
nlregmod2 <- nls(y ~ theta1 - theta2*exp(-theta3*x),
start list(theta1 = 0.37,
theta2 = exp(-1.8),
theta3 = -0.05538), data=mod14data2_random)
However, I got this error:
Error in nls(y ~ theta1 - theta2 * exp(-theta3 * x), start = list(theta1 0.37,
:
step factor 0.000488281 reduced below 'minFactor' of 0.000976562
nlregmod2 <- nlxb(y ~ theta1 - theta2*exp(-theta3*x),
start list(theta1 = 0.37,
theta2 = exp(-1.8),
theta3 = -0.05538), data=mod14data2_random)
summary(nlregmod2)
Object has try-error or missing parameters
nlregmod2
And I get some NA values when retrieving the statistics for the fitted
model:
residual sumsquares = 0.0022973 on 15 observations
after 2235 Jacobian and 2861 function evaluations
name coeff SE tstat pval gradient
JSingval
theta1 9330.89 NA NA NA 5.275e-11
967470
theta2 9330.41 NA NA NA -5.318e-11
1.772
theta3 -3.0032e-07 NA NA NA 1.389e-05
8.028e-12
Kind regards,
Paul
El dom, 20 ago 2023 a las 13:21, Bert Gunter (<bgunter.4567 at gmail.com>)
escribi?:
> I got starting values as follows:
> Noting that the minimum data value is .38, I fit the linear model log(y -
> .37) ~ x to get intercept = -1.8 and slope = -.055. So I used .37,
> exp(-1.8) and -.055 as the starting values for theta0, theta1, and theta2
> in the nonlinear model. This converged without problems.
>
> Cheers,
> Bert
>
>
> On Sun, Aug 20, 2023 at 10:15?AM Paul Bernal <paulbernal07 at
gmail.com>
> wrote:
>
>> Dear friends,
>>
>> This is the dataset I am currently working with:
>> >dput(mod14data2_random)
>> structure(list(index = c(14L, 27L, 37L, 33L, 34L, 16L, 7L, 1L,
>> 39L, 36L, 40L, 19L, 28L, 38L, 32L), y = c(0.44, 0.4, 0.4, 0.4,
>> 0.4, 0.43, 0.46, 0.49, 0.41, 0.41, 0.38, 0.42, 0.41, 0.4, 0.4
>> ), x = c(16, 24, 32, 30, 30, 16, 12, 8, 36, 32, 36, 20, 26, 34,
>> 28)), row.names = c(NA, -15L), class = "data.frame")
>>
>> I did the following to try to fit a nonlinear regression model:
>>
>> #First, Procedure to Find Starting (initial) Values For Theta1, Theta2,
>> and
>> Theta3
>>
>> mymod2 <- y ~ theta1 - theta2*exp(-theta3*x)
>>
>> strt2 <- c(theta1 = 1, theta2 = 2, theta3 = 3)
>>
>> trysol2<-nlxb(formula=mymod2, data=mod14data2_random, start=strt2,
>> trace=TRUE)
>> trysol2
>> trysol2$coefficients[[3]]
>>
>> #Fitting nonlinear Regression Model Using Starting Values From Previous
>> Part
>> nonlinearmod2 <- nls(mymod2, start = list(theta1 >>
trysol2$coefficients[[1]],
>> theta2 = trysol2$coefficients[[2]],
>> theta3 = trysol2$coefficients[[3]]), data >>
mod14data2_random)
>>
>> And I got this error:
>> Error in nlsModel(formula, mf, start, wts, scaleOffset = scOff,
nDcentral
>> >> nDcntr) :
>> singular gradient matrix at initial parameter estimates
>>
>> Any idea on how to proceed in this situation? What could I do?
>>
>> Kind regards,
>> Paul
>>
>> [[alternative HTML version deleted]]
>>
>> ______________________________________________
>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide
>> http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>>
>
[[alternative HTML version deleted]]
Reasonably Related Threads
- Issues when trying to fit a nonlinear regression model
- Issues when trying to fit a nonlinear regression model
- Issues when trying to fit a nonlinear regression model
- Issues when trying to fit a nonlinear regression model
- Issues when trying to fit a nonlinear regression model