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]]
Ben Bolker
2023-Aug-20 19:02 UTC
[R] Issues when trying to fit a nonlinear regression model
I haven't looked to see whether you or Bert made an algebraic mistake in translating the parameters of the log-linear model to their equivalents for the nonlinear model, but nls() gives me the same answer as nls() in this case (I called my data 'dd2'): ---- n1 <- nlxb(y~theta1 - theta2*exp(-theta3*(x-8)), start = list(theta1 = 0.4, theta2 = -0.1, theta3 = 1/5), data = dd2) cc <- coef(n1) start2 <- with(as.list(cc), list(theta1 = theta1, theta2 = theta2*exp(theta3*8), theta3 = theta3)) unlist(start2) n2 <- nlxb(y~theta1 - theta2*exp(-theta3*x), start = start2, data = dd2) all.equal(unlist(start2), c(coef(n2)), tolerance = 1e-7) cc2 <- coef(n2) nlregmod2 <- nls(y ~ theta1 - theta2*exp(-theta3*x), start list(theta1 = cc2[["theta1"]], theta2 = cc2[["theta2"]], theta3 = cc2[["theta3"]]), data=dd2) On 2023-08-20 2:50 p.m., Paul Bernal wrote:> 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]] > > ______________________________________________ > 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.
Bert Gunter
2023-Aug-20 19:07 UTC
[R] Issues when trying to fit a nonlinear regression model
Oh, sorry; I changed signs in the model, fitting theta0 + theta1*exp(theta2*x) So for theta0 - theta1*exp(-theta2*x) use theta1= -.exp(-1.8) and theta2 +.055 as starting values. -- Bert On Sun, Aug 20, 2023 at 11:50?AM Paul Bernal <paulbernal07 at gmail.com> wrote:> 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]]
Possibly Parallel 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