In addition to Gabor's suggestion, note the following warning from ?nls
Warning
Do not use nls on artificial "zero-residual" data.
The nls function uses a relative-offset convergence criterion that
compares the numerical imprecision at the current parameter estimates
to the residual sum-of-squares. This performs well on data of the form
y = f(x, theta) + eps
(with var(eps) > 0). It fails to indicate convergence on data of the
form
y = f(x, theta)
because the criterion amounts to comparing two components of the
round-off error. If you wish to test nls on artificial data please
add a noise component, as shown in the example below.
So for instance if you try with:
r<-nls(y ~ A*sin(2*pi*F*x), start=list(A = 1, F = .5), trace=T)
You will get convergence.
Haris Skiadas
Department of Mathematics and Computer Science
Hanover College
On Jun 10, 2008, at 10:25 AM, Jon Loehrke wrote:
I have been attempting to estimate the periodic contribution of an
effect to some data but have not been able to fit a sine wave
within R.
It would be nice to start by being able to fit a sine wave with an
amplitude and frequency.
x<-seq(0,20,by=0.5)
y<-2*sin(2*pi*.5*x) #amplitude =2, frequency=0.5
# This failed to converge
r<-nls(y ~ A*sin(2*pi*F*x), start=list(A = 1, F = 1), trace=T)
# even this gave a max iteration error
r<-nls(y ~ A*sin(2*pi*F*x), start=list(A = 1, F = .5), trace=T)
I have a feeling I am approaching this incorrectly. Thank you all
very much for the guidance.
Jon
R 2.7.0
mac os 10.5
Jon Loehrke
Graduate Research Assistant
Department of Fisheries Oceanography
School for Marine Science and Technology
University of Massachusetts
200 Mill Road, Suite 325
Fairhaven, MA 02719
[EMAIL PROTECTED]
T 508-910-6393
F 509-910-6396
______________________________________________
R-help@r-project.org 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.