Dear Dr. Nash, Thank you for your kind feedback. I was able to successfully find the starting values for the nonlinear regression model parameters, here is my code: #Specifying Nonlinear Regression Model mymod <- y ~ 1/(Beta1*x1 + Beta2*x2 + Beta3*x3)
strt <- c(Beta1 = 1, Beta2 = 2, Beta3 = 3) trysol<-nlxb(formula=mymod, data=mod14data_random, start=strt, trace=TRUE) trysol #Examining structure of trysol model str(trysol) #Extracting Coefficients for Beta1, Beta2, and Beta3 trysol$coefficients[[1]] trysol$coefficients[[2]] trysol$coefficients[[3]] The dataset is the same I shared previously, but for safety, I will share it again below: >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") I was able to get the results you shared: > trysol 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 Now my question is, how could I perform adequacy checking on this nonlinear regression model? I was trying to use the deviance metric as follows: #We will fit several models nlregmod2 <- nls(y ~ 1/(Beta1*x1), start = list(Beta1 = trysol$coefficients[[1]]), data=mod14data_random) nlregmod3 <- nls(y ~ 1/(Beta2*x2), start = list(Beta2 = trysol$coefficients[[2]]), data=mod14data_random) nlregmod4 <- nls(y ~ 1/(Beta3*x3), start = list(Beta3 = trysol$coefficients[[3]]), data=mod14data_random) nlregmod5 <- nls(y ~ 1/(Beta1*x1+Beta2*x2), start = list(Beta1 = trysol$coefficients[[1]], Beta2 = trysol$coefficients[[2]]), data=mod14data_random) nlregmod6 <- nls(y ~ 1/(Beta1*x1+Beta3*x3), start = list(Beta1 = trysol$coefficients[[1]], Beta3 = trysol$coefficients[[3]]), data=mod14data_random) nlregmod7 <- nls(y ~ 1/(Beta2*x2+Beta3*x3), start = list(Beta2 = trysol$coefficients[[2]], Beta3 = trysol$coefficients[[3]]), data=mod14data_random) deviance(nlregmod) deviance(nlregmod2) deviance(nlregmod3) deviance(nlregmod4) deviance(nlregmod5) deviance(nlregmod6) deviance(nlregmod7) However, for some models I get the following error: nlregmod4 <- nls(y ~ 1/(Beta3*x3), start = list(Beta3 = trysol$coefficients[[3]]), data=mod14data_random) Error in numericDeriv(form[[3L]], names(ind), env, central = nDcentral) : Missing value or an infinity produced when evaluating the model deviance(nlregmod5) Error: object 'nlregmod5' not found deviance(nlregmod6) Error: object 'nlregmod6' not found deviance(nlregmod7) Error: object 'nlregmod7' not found I spent a significant amount of time looking for a way to assess the nonlinear regression model goodness of fit and to perform adequacy checking using R (and in general) but was not able to find anything. I would have thought that calculating the deviance for different models would be a good way to perform adequacy checking, but got some errors. The best I could find was this link https://cran.r-project.org/web/packages/nlstools/vignettes/vignetteJSS.pdf. Any help and/or guidance will be greatly appreciated. Kind regards, Paul El El sáb, 19 de ago. de 2023 a la(s) 9:30 p. m., J C Nash < profjcn...@gmail.com> escribió: > 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 < > profjcn...@gmail.com <mailto:profjcn...@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@r-project.org <mailto:R-help@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. > > > [[alternative HTML version deleted]] ______________________________________________ R-help@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.