[R] Issues when trying to fit a nonlinear regression model
Ben Bolker
bbo|ker @end|ng |rom gm@||@com
Sun Aug 20 21:02:08 CEST 2023
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 using 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 using 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 using 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 using 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.
More information about the R-help
mailing list