Paul Bernal
2023-Aug-20 19:16 UTC
[R] Issues when trying to fit a nonlinear regression model
Dear Bert, Thank you for your extremely valuable feedback. Now, I just want to understand why the signs for those starting values, given the following:> #Fiting intermediate model to get starting values > intermediatemod <- lm(log(y - .37) ~ x, data=mod14data2_random) > summary(intermediatemod)Call: lm(formula = log(y - 0.37) ~ x, data = mod14data2_random) Residuals: Min 1Q Median 3Q Max -0.7946 -0.0908 0.0379 0.1111 0.5917 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) -1.81693 0.25806 -7.04 8.8e-06 *** x -0.05538 0.00964 -5.75 6.8e-05 *** --- Signif. codes: 0 ?***? 0.001 ?**? 0.01 ?*? 0.05 ?.? 0.1 ? ? 1 Residual standard error: 0.323 on 13 degrees of freedom Multiple R-squared: 0.717, Adjusted R-squared: 0.696 F-statistic: 33 on 1 and 13 DF, p-value: 6.76e-05 Kind regards, Paul El dom, 20 ago 2023 a las 14:07, Bert Gunter (<bgunter.4567 at gmail.com>) escribi?:> 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]]
Bert Gunter
2023-Aug-20 19:39 UTC
[R] Issues when trying to fit a nonlinear regression model
Basic algebra and exponentials/logs. I leave those details to you or another HelpeR. -- Bert On Sun, Aug 20, 2023 at 12:17?PM Paul Bernal <paulbernal07 at gmail.com> wrote:> Dear Bert, > > Thank you for your extremely valuable feedback. Now, I just want to > understand why the signs for those starting values, given the following: > > #Fiting intermediate model to get starting values > > intermediatemod <- lm(log(y - .37) ~ x, data=mod14data2_random) > > summary(intermediatemod) > > Call: > lm(formula = log(y - 0.37) ~ x, data = mod14data2_random) > > Residuals: > Min 1Q Median 3Q Max > -0.7946 -0.0908 0.0379 0.1111 0.5917 > > Coefficients: > Estimate Std. Error t value Pr(>|t|) > (Intercept) -1.81693 0.25806 -7.04 8.8e-06 *** > x -0.05538 0.00964 -5.75 6.8e-05 *** > --- > Signif. codes: 0 ?***? 0.001 ?**? 0.01 ?*? 0.05 ?.? 0.1 ? ? 1 > > Residual standard error: 0.323 on 13 degrees of freedom > Multiple R-squared: 0.717, Adjusted R-squared: 0.696 > F-statistic: 33 on 1 and 13 DF, p-value: 6.76e-05 > > Kind regards, > Paul > > El dom, 20 ago 2023 a las 14:07, Bert Gunter (<bgunter.4567 at gmail.com>) > escribi?: > >> 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]]
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