Earlier, I posted a question concerning the syntax of nls() when the nonlinear function within the call is specified outside of nls(). Sundar showed me how to do this. Now I have a slightly more complex problem that is analogous to a broken-stick regression but in a non-linear context.
I want my data to be fit to a non-rectangular hyperbola if the value of the independent variable (I) is less than some value (“Icut”, to be estimated) and to be fit to a constant value (to be estimated) if the value of the independent variable is greater than or equal to “Icut”. That is, if the value of the independent variable is less than Icut, then fit the non-rectangular hyperbola, otherwise fit a constant. Here is the function that I wrote. “a” is the non-rectangular hyperbola and “b” is the constant. When I give this to nls() I get an error message stating: Error in nlsModel(formula, mf, start) : singular gradient matrix at initial parameter estimates > NRHyperbolic.cut function (Am,alpha,theta,Rd,I,Icut,const) { b<-rep(1e6,length(I)) yes<- (I>=Icut) vec<-as.numeric(yes) a<-(1/(2*theta))*(alpha*I+Am-sqrt((alpha*I+Am)^2-4*theta*alpha*I*Am))-Rd b[yes]<-vec[yes]*rep(const,length(I[yes])) apply(cbind(a,b),1,min) } This is a non-rectangular hyperbola (a) Bill Shipley Subject Matter Editor, Ecology North American Editor, Annals of Botany Département de biologie, Université de Sherbrooke, Sherbrooke (Québec) J1K 2R1 CANADA [EMAIL PROTECTED] <http://callisto.si.usherb.ca:8080/bshipley/> http://callisto.si.usherb.ca:8080/bshipley/ [[alternative HTML version deleted]] ______________________________________________ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html