[R] Determining Starting Values for Model Parameters in Nonlinear Regression

J C Nash pro|jcn@@h @end|ng |rom gm@||@com
Sun Aug 20 04:30:51 CEST 2023


The cautions people have given about starting values are worth heeding. That nlxb() does well in many cases is useful,
but not foolproof. And John Fox has shown that the problem can be tackled very simply too.

Best, JN


On 2023-08-19 18:42, Paul Bernal wrote:
> Thank you so much Dr. Nash, I truly appreciate your kind and valuable contribution.
> 
> Cheers,
> Paul
> 
> El El sáb, 19 de ago. de 2023 a la(s) 3:35 p. m., J C Nash <profjcnash using gmail.com <mailto:profjcnash using gmail.com>> escribió:
> 
>     Why bother. nlsr can find a solution from very crude start.
> 
>     Mixture <- c(17, 14, 5, 1, 11, 2, 16, 7, 19, 23, 20, 6, 13, 21, 3, 18, 15, 26, 8, 22)
>     x1 <- c(69.98, 72.5, 77.6, 79.98, 74.98, 80.06, 69.98, 77.34, 69.99, 67.49, 67.51, 77.63,
>               72.5, 67.5, 80.1, 69.99, 72.49, 64.99, 75.02, 67.48)
>     x2 <- c(29, 25.48, 21.38, 19.85, 22, 18.91, 29.99, 19.65, 26.99, 29.49, 32.47,
>               20.35, 26.48, 31.47, 16.87, 27.99, 24.49, 31.99, 24.96, 30.5)
>     x3 <- c(1, 2, 1, 0, 3, 1, 0, 2.99, 3, 3, 0, 2, 1, 1, 3, 2,
>               3, 3, 0, 2)
>     y <- c(1.4287, 1.4426, 1.4677, 1.4774, 1.4565,
>              1.4807, 1.4279, 1.4684, 1.4301, 1.4188, 1.4157, 1.4686, 1.4414,
>              1.4172, 1.4829, 1.4291, 1.4438, 1.4068, 1.4524, 1.4183)
>     mydata<-data.frame(Mixture, x1, x2, x3, y)
>     mydata
>     mymod <- y ~ 1/(Beta1*x1 + Beta2*x2 + Beta3*x3)
>     library(nlsr)
>     strt<-c(Beta1=1, Beta2=2, Beta3=3)
>     trysol<-nlxb(formula=mymod, data=mydata, start=strt, trace=TRUE)
>     trysol
>     # or pshort(trysol)
> 
> 
>     Output is
> 
>     residual sumsquares =  1.5412e-05  on  20 observations
>           after  29    Jacobian and  43 function evaluations
>         name            coeff          SE       tstat      pval      gradient    JSingval
>     Beta1         0.00629212     5.997e-06       1049  2.425e-42   4.049e-08       721.8
>     Beta2         0.00867741     1.608e-05      539.7  1.963e-37  -2.715e-08       56.05
>     Beta3         0.00801948     8.809e-05      91.03  2.664e-24   1.497e-08       10.81
> 
>     J Nash
> 
> 
>     On 2023-08-19 16:19, Paul Bernal wrote:
>      > Dear friends,
>      >
>      > Hope you are all doing well and having a great weekend.  I have data that
>      > was collected on specific gravity and spectrophotometer analysis for 26
>      > mixtures of NG (nitroglycerine), TA (triacetin), and 2 NDPA (2 -
>      > nitrodiphenylamine).
>      >
>      > In the dataset, x1 = %NG,  x2 = %TA, and x3 = %2 NDPA.
>      >
>      > The response variable is the specific gravity, and the rest of the
>      > variables are the predictors.
>      >
>      > This is the dataset:
>      > dput(mod14data_random)
>      > structure(list(Mixture = c(17, 14, 5, 1, 11, 2, 16, 7, 19, 23,
>      > 20, 6, 13, 21, 3, 18, 15, 26, 8, 22), x1 = c(69.98, 72.5, 77.6,
>      > 79.98, 74.98, 80.06, 69.98, 77.34, 69.99, 67.49, 67.51, 77.63,
>      > 72.5, 67.5, 80.1, 69.99, 72.49, 64.99, 75.02, 67.48), x2 = c(29,
>      > 25.48, 21.38, 19.85, 22, 18.91, 29.99, 19.65, 26.99, 29.49, 32.47,
>      > 20.35, 26.48, 31.47, 16.87, 27.99, 24.49, 31.99, 24.96, 30.5),
>      >      x3 = c(1, 2, 1, 0, 3, 1, 0, 2.99, 3, 3, 0, 2, 1, 1, 3, 2,
>      >      3, 3, 0, 2), y = c(1.4287, 1.4426, 1.4677, 1.4774, 1.4565,
>      >      1.4807, 1.4279, 1.4684, 1.4301, 1.4188, 1.4157, 1.4686, 1.4414,
>      >      1.4172, 1.4829, 1.4291, 1.4438, 1.4068, 1.4524, 1.4183)), row.names =
>      > c(NA,
>      > -20L), class = "data.frame")
>      >
>      > The model is the following:
>      > y = 1/(Beta1x1 + Beta2x2 + Beta3x3)
>      >
>      > I need to determine starting (initial) values for the model parameters for
>      > this nonlinear regression model, any ideas on how to accomplish this using
>      > R?
>      >
>      > Cheers,
>      > Paul
>      >
>      >       [[alternative HTML version deleted]]
>      >
>      > ______________________________________________
>      > R-help using r-project.org <mailto:R-help using r-project.org> mailing list -- To UNSUBSCRIBE and more, see
>      > https://stat.ethz.ch/mailman/listinfo/r-help <https://stat.ethz.ch/mailman/listinfo/r-help>
>      > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
>     <http://www.R-project.org/posting-guide.html>
>      > and provide commented, minimal, self-contained, reproducible code.
>



More information about the R-help mailing list