Martin Biuw wrote:> Hello, > I'm using the nls function and would like to increase the number of > iterations. According to the documentation as well as other postings on > R-help, I've tried to do this using the "control" argument: > > nls(y ~ SSfpl(x, A, B, xmid, scal), data=my.data, > control=nls.control(maxiter=200)) > > but no matter how much I increase "maxiter", I get the following error > message: > > Error in nls(y ~ cbind(1, 1/(1 + exp((xmid - x)/exp(lscal)))), data > xy, : > number of iterations exceeded maximum of 50 > > The second line here suggests that the maximum number of iterations is > still 50, despite changing the "control" argument. Also, increasing > "maxiter" to something silly, like 50000, doesn't seem to increase the > process time, which made me a bit suspicious that I'm not giving the > right statement to the "control" argument. Or is the function indeed > using the increased number of "maxiter", while the error message remains > the same rather than reflecting the requested change to nls.control? > > I should say that nls converges without increasing maxiter when I use > the full dataset, and it is only when I use a smaller subset that the > error occurs, possibly due to noisy data. But I would very much > appreciate if someone could clarify whether the error message is wrong > or if my statement to the "control" argument is wrong. > > Thanks very much in advance, > Martin >If you look closely you will see that the error is not occurring in your call to nls; it is occurring in a call generated as part of the determination of the starting estimates. If you use explicit starting values you will get the correct behavior for maxiter.
Hello, I'm using the nls function and would like to increase the number of iterations. According to the documentation as well as other postings on R-help, I've tried to do this using the "control" argument: nls(y ~ SSfpl(x, A, B, xmid, scal), data=my.data, control=nls.control(maxiter=200)) but no matter how much I increase "maxiter", I get the following error message: Error in nls(y ~ cbind(1, 1/(1 + exp((xmid - x)/exp(lscal)))), data = xy, : number of iterations exceeded maximum of 50 The second line here suggests that the maximum number of iterations is still 50, despite changing the "control" argument. Also, increasing "maxiter" to something silly, like 50000, doesn't seem to increase the process time, which made me a bit suspicious that I'm not giving the right statement to the "control" argument. Or is the function indeed using the increased number of "maxiter", while the error message remains the same rather than reflecting the requested change to nls.control? I should say that nls converges without increasing maxiter when I use the full dataset, and it is only when I use a smaller subset that the error occurs, possibly due to noisy data. But I would very much appreciate if someone could clarify whether the error message is wrong or if my statement to the "control" argument is wrong. Thanks very much in advance, Martin -- Dr Martin Biuw NERC Postdoctoral research fellow Sea Mammal Research Unit Gatty Marine Laboratory University of St Andrews St Andrews, Fife KY16 8LB Scotland Ph: +44-(0)1334-462677 Fax: +44-(0)1334-462632 www: http://www.smru.st-and.ac.uk