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

J C Nash pro|jcn@@h @end|ng |rom gm@||@com
Sat Aug 19 22:35:31 CEST 2023


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 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