[R] How to do a trig regression

Greg Snow Greg.Snow at imail.org
Mon Sep 13 19:01:08 CEST 2010


Without the square term you can just use the rule for addition in sines:

sin(a+b) = sin(a)cos(b) + cos(a)sin(b)

So a regression of y= a + b* sin(2*pi/360*x + c) can be fit as:

lm( y~ sin( 2*pi/360*x) + cos( 2*pi/360/x ) )

If you need the actual values of b and c then you will need to do a little algebra.

The same idea may be sufficient for your formula (or at least a close approximation), or you could switch to nonlinear fits using the nls function and fit your formula directly.

-- 
Gregory (Greg) L. Snow Ph.D.
Statistical Data Center
Intermountain Healthcare
greg.snow at imail.org
801.408.8111


> -----Original Message-----
> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-
> project.org] On Behalf Of Aaditya Nanduri
> Sent: Sunday, September 12, 2010 8:23 PM
> To: r-help at r-project.org
> Subject: [R] How to do a trig regression
> 
> Hello All,
> 
> I cant seem to do a trig regression in R.
> 
> The equation is as follows : y = a+b*(sin((2*pi*x/360) - c))^2
> 
> a, b, c are coefs that I want.
> y, x are input vectors.
> 
> The equation I put into R: lm(y ~ sin(2*pi*x/360)^2)
> This equation is missing the c and I dont get the right answer.
> 
> Also, I dont know how to plot the lm over the x values instead of the
> indices.
> 
> Any help is sincerely appreciated.
> Thank you all very much.
> 
> --
> Aaditya Nanduri
> aaditya.nanduri at gmail.com
> 
> 	[[alternative HTML version deleted]]
> 
> ______________________________________________
> R-help at 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.



More information about the R-help mailing list