Hello. I am having a problem setting up a self-starting function for
use in nonlinear regression (and eventually in the mixed model version).
The function is a non-rectangular hyperbola - called "NRhyperbola" -
which is used for fitting leaf photosynthetic rate to light intensity.
It has one independent variable (Irr) and four parameters (theta, Am,
alpha and Rd). I have created this to act as a self-starting function.
The self-starting function seems to work (i.e. when I call "getInitial"
it provides the initial values), but I can't get it to work when used
within "nls". Here is an example:
1)
getInitial(Photosynthese~NRhyperbola(Irr,theta,Am,alpha,Rd),data=lit.dat
a[1:11,])
theta Am alpha Rd
0.5021546914 3.7466359015 0.0005743723 -3.0685671752
So, "getInitial" succeeds in extracting the initial values from the
function.
2)
nls(Photosynthese~NRhyperbola(Irr,theta,Am,alpha,Rd),data=lit.data[1:11,
])
Error in eval(expr, envir, enclos) : Object "theta" not found
But the call to "nls" does not find the parameter theta, even though the
call "getInitial" did find it and returned its initial value.
I am working from the Pinheiro & Bates book on mixed-effects models in S
and S-PLUS. According to that book (p. 346): "When nls is called
without initial values for the parameters and a self-start model
function is provided, nls calls getInitial to provide the initial
values."
Two questions:
1) what am I doing wrong?