On 8/8/07, Michael Petram <[EMAIL PROTECTED]> wrote: > Dear all > > I have got some problems with a least-squares regression using the function > nls. > > I want to estimate h, k and X of the following formula by using nls : > > exp(2*200*(q^2-4*h/k-0.25+(2/k-0.5+4*h^2/k^2)*log(abs((k*q^2+2*h*q-1)/(0.25*k-h-1)))))/((-k*q^2-2*h*q+1)*X) > > y as defined by c(0.009747 0.001949 0.000000 0.003899 0.000000 0.000000 > 0.005848 0.001949) > q as defined by c(-0.7500 -0.6875 -0.5625 -0.4875 -0.4625 -0.4375 -0.4125 > -0.3875) > > (length of the real q and y is 46; too long to post them here) > > i tought the correct using of nls would be: > > Mic<-nls(y~"function", start = list(k=1.0,h=0.1,X=exp(10)) > > But it doesn`t work. i tryed an easier formula like : > > Mic<-nls(y~h*exp(2*k*200*(q^2)), start=list(h=0.1,k=1,X=100000)) > > The result was the same. > > > Isn`t "nls" the function i should use to solve this regression problem? > Which things did i make wrong?
X is not in the model so by including it in your starting values you make it non-idenfiable. Get rid of it. Also use better starting values. Here we use grid search to get them: > g <- expand.grid(h = 1:100/100, k = 1:100/100) > st <- g[which.min(apply(g, 1, function(x) x[1] * exp(2*x[2]*200*q^2))),] > nls(y~h*exp(2*k*200*(q^2)), start = st) Nonlinear regression model model: y ~ h * exp(2 * k * 200 * (q^2)) data: parent.frame() h k 0.0003533 0.0139700 residual sum-of-squares: 5.039e-05 Number of iterations to convergence: 16 Achieved convergence tolerance: 8.883e-06 ______________________________________________ R-help@stat.math.ethz.ch mailing list 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.