[R] fitting periodic 'sine wave' model

Charilaos Skiadas cskiadas at gmail.com
Tue Jun 10 16:54:55 CEST 2008


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
> jloehrke at umassd.edu
> T 508-910-6393
> F 509-910-6396
>



More information about the R-help mailing list