Chandrasekhar Rudrappa
2014-Dec-16 14:26 UTC
[R] Help specifying a non-linear model in nlsLM()
Dear All, I am trying to fit the following model in nlsLM(): fn5 <- function(x, T, t1, w_inf, Lt0){ S<-function(x, T, t1){ x+(1-T)/(2*pi)*sin(2*pi*(x-t1)/(1-T)) } F <- function(x, T, t1){ t2 <- t1 + (1-T)/2 t3 <- t1 + (1+T)/2 t.factorial <- x%%1 floor(x)*(1-T) + S(t.factorial, T, t1)*(0<=t.factorial & t.factorial<t2) + S(t2, T, t1)*(t2<=t.factorial & t.factorial<t3) + S(t.factorial-T, T, t1)*(t3<=t.factorial & t.factorial<1) } return(w_inf - (w_inf - Lt0)*exp(-(2/30)*(F(x,T,t1)-F(7,T,t1)))) } fn6<- y~fn5(x, T, t1, w_inf, Lt0) startval<-c(x=x, T=0.035, t1=0.359, w_inf=135, Lt0=47) (nlsktm1 <- nlsLM(fn6, start=startval, lower=c(x=x, T=0.0135, t1=0.259, w_inf=131, Lt0=41), jac=NULL, trace=T, data=ktm, control=nls.control(maxiter=10))) When I run the above script, the following error is displayed: Error in nlsModel(formula, mf, start, wts) : singular gradient matrix at initial parameter estimates In addition: Warning message: In nls.lm(par = start, fn = FCT, jac = jac, control = control, lower lower, : lmdif: info = 0. Improper input parameters. Suitable help is requested. -- Dr. TR Chandrasekhar, M.Sc., M. Tech., Ph. D., Sr. Scientist Rubber Research Institute of India Hevea Breeding Sub Station Kadaba - 574 221 DK Dt., Karnataka Phone-Land: 08251-214336 Mobile: 9448780118 [[alternative HTML version deleted]]
Suitable help may not be possible. I suspect that either your function/code is funky (is the function smooth, non-infinite near your starting value?) or you are overparameterized. If the latter, the remedy may depend on the nature of your data, which you have not shared. While you may receive some help here (there are some pretty smart optimizers who monitor the list), I suggest you try a statistical site like stats.stackexchange.com for help, as this appears to be primarily a statistics issue, not an R programming one. Cheers, Bert Bert Gunter Genentech Nonclinical Biostatistics (650) 467-7374 "Data is not information. Information is not knowledge. And knowledge is certainly not wisdom." Clifford Stoll On Tue, Dec 16, 2014 at 6:26 AM, Chandrasekhar Rudrappa <chandratr at gmail.com> wrote:> Dear All, > > I am trying to fit the following model in nlsLM(): > > fn5 <- function(x, T, t1, w_inf, Lt0){ > S<-function(x, T, t1){ > x+(1-T)/(2*pi)*sin(2*pi*(x-t1)/(1-T)) > } > F <- function(x, T, t1){ > t2 <- t1 + (1-T)/2 > t3 <- t1 + (1+T)/2 > t.factorial <- x%%1 > floor(x)*(1-T) + S(t.factorial, T, t1)*(0<=t.factorial & t.factorial<t2) + > S(t2, T, t1)*(t2<=t.factorial & t.factorial<t3) + > S(t.factorial-T, T, t1)*(t3<=t.factorial & t.factorial<1) > } > return(w_inf - (w_inf - Lt0)*exp(-(2/30)*(F(x,T,t1)-F(7,T,t1)))) > } > fn6<- y~fn5(x, T, t1, w_inf, Lt0) > startval<-c(x=x, T=0.035, t1=0.359, w_inf=135, Lt0=47) > (nlsktm1 <- nlsLM(fn6, start=startval, lower=c(x=x, T=0.0135, t1=0.259, > w_inf=131, Lt0=41), jac=NULL, trace=T, data=ktm, > control=nls.control(maxiter=10))) > > When I run the above script, the following error is displayed: > > Error in nlsModel(formula, mf, start, wts) : > singular gradient matrix at initial parameter estimates > In addition: Warning message: > In nls.lm(par = start, fn = FCT, jac = jac, control = control, lower > lower, : > lmdif: info = 0. Improper input parameters. > > Suitable help is requested. > -- > Dr. TR Chandrasekhar, M.Sc., M. Tech., Ph. D., > Sr. Scientist > Rubber Research Institute of India > Hevea Breeding Sub Station > Kadaba - 574 221 > DK Dt., Karnataka > Phone-Land: 08251-214336 > Mobile: 9448780118 > > [[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.