[R] fitting periodic 'sine wave' model
cskiadas at gmail.com
Tue Jun 10 16:54:55 CEST 2008
In addition to Gabor's suggestion, note the following warning from ?nls
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
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.
Department of Mathematics and Computer Science
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.
> 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.
> 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
> jloehrke at umassd.edu
> T 508-910-6393
> F 509-910-6396
More information about the R-help