Hi everyone, I am trying to fit a sine function on one year of wind data. I have two questions below. Looking around on the net I managed to get the following: Sine Equation: y = a + b * sin( c + d*x ) b is the amplitude, c is the phase shift, d is something deal with periodicty of data*.* This can be linearised by sin( c+dx ) = cos(c) * sin(dx) + sin(c) * cos(dx). If one calls dx = x1 y = a + b * sin( c + d*x ) y = a + b * [cos(c) * sin(x1) + sin(c) * cos(x1)] y = a + b * cos(c) * sin(x1) + b * sin(c) * cos(x1) y = a + b1 * sin(x1) + b2 * cos(x1) where b1 = b * cos(c) and b2 = b * sin(c) This works fine for me as I am not interested in the value for b and c. By trial and error I also detemined that the sensibel value for d is 1/58. I have 366 days of data and want to fit a single sine onto it. *First question*: 1/ 58 = (2 pi) / 366. I guess 366 is the period of my data, I have 366 days. so *d = (2 pi) / Period*. Is this correct. *Second question*: I reckon that all of this looks very DIY. Is there a better way to do this in R? Maybe through a package I dont know? Thanks in advance Paolo [[alternative HTML version deleted]]
Hi:
Try using package sos to address your question re which packages perform
sine/trig regression:
library(sos)
findFn('sine regression') # 12 matches on my system
findFn('trigonometric regression') # 9 matches
The results point largely to the mFilter, oce, circStats and circular
packages. It's a place to start...
HTH,
Dennis
On Mon, Dec 20, 2010 at 12:01 PM, Paolo Rossi <
statmailinglists@googlemail.com> wrote:
> Hi everyone,
>
> I am trying to fit a sine function on one year of wind data. I have two
> questions below.
>
> Looking around on the net I managed to get the following:
>
> Sine Equation: y = a + b * sin( c + d*x )
>
> b is the amplitude, c is the phase shift, d is something deal with
> periodicty of data*.*
>
> This can be linearised by sin( c+dx ) = cos(c) * sin(dx) + sin(c) *
> cos(dx).
>
> If one calls dx = x1
>
> y = a + b * sin( c + d*x )
> y = a + b * [cos(c) * sin(x1) + sin(c) * cos(x1)]
> y = a + b * cos(c) * sin(x1) + b * sin(c) * cos(x1)
> y = a + b1 * sin(x1) + b2 * cos(x1)
>
> where b1 = b * cos(c) and b2 = b * sin(c)
>
> This works fine for me as I am not interested in the value for b and c. By
> trial and error I also detemined that the sensibel value for d is 1/58. I
> have 366 days of data and want to fit a single sine onto it.
>
> *First question*: 1/ 58 = (2 pi) / 366. I guess 366 is the period of my
> data, I have 366 days. so *d = (2 pi) / Period*. Is this correct.
> *Second question*: I reckon that all of this looks very DIY. Is there a
> better way to do this in R? Maybe through a package I dont know?
>
>
> Thanks in advance
>
> Paolo
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> 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.
>
[[alternative HTML version deleted]]
On Dec 20, 2010, at 3:01 PM, Paolo Rossi wrote:> Hi everyone, > > I am trying to fit a sine function on one year of wind data. I have > two > questions below. > > Looking around on the net I managed to get the following: > > Sine Equation: y = a + b * sin( c + d*x ) > > b is the amplitude, c is the phase shift, d is something deal with > periodicty of data*.* > > This can be linearised by sin( c+dx ) = cos(c) * sin(dx) + sin(c) * > cos(dx). > > If one calls dx = x1 > > y = a + b * sin( c + d*x ) > y = a + b * [cos(c) * sin(x1) + sin(c) * cos(x1)] > y = a + b * cos(c) * sin(x1) + b * sin(c) * cos(x1) > y = a + b1 * sin(x1) + b2 * cos(x1) > > where b1 = b * cos(c) and b2 = b * sin(c) > > This works fine for me as I am not interested in the value for b and > c. By > trial and error I also detemined that the sensibel value for d is > 1/58. I > have 366 days of data and want to fit a single sine onto it. > > *First question*: 1/ 58 = (2 pi) / 366. I guess 366 is the period of > my > data, I have 366 days. so *d = (2 pi) / Period*. Is this correct. > *Second question*: I reckon that all of this looks very DIY. Is > there a > better way to do this in R? Maybe through a package I dont know?The package "circular" might be a candidate.> > > Thanks in advance > > Paolo >David Winsemius, MD West Hartford, CT