[R] Fit a sine to data
apjaworski at mmm.com
apjaworski at mmm.com
Fri May 23 17:19:27 CEST 2008
Milan,
This is a fairly standard trick. Let us generalize your equation slightly:
y ~ a + c*sin(x+b)
so the amplitude of the sine wave is adjustable (otherwise, you assume (or
know) that the amplitude is 1). Then
y ~ a + c*sin(b)*cos(x) + c*cos(b)*sin(x)
or
y ~ b0 + b1*x1 + b2*x2
which is a linear regression form that you can do using the lm function.
After you get b0, b1 and b2 you do
a = b0
b1^2 + b2^2 = c^2*(sin^2(b) + cos^2(b)) = c^2 ====> c = sqrt(b1^2 + b2^2)
b1/b2 = tan(b) ====> b = arctan(b1/b2)
Hope this helps,
Andy
__________________________________
Andy Jaworski
518-1-01
Process Laboratory
3M Corporate Research Laboratory
-----
E-mail: apjaworski at mmm.com
Tel: (651) 733-6092
Fax: (651) 736-3122
"Zroutik Zroutik"
<zroutik at gmail.co
m> To
Sent by: r-help at r-project.org
r-help-bounces at r- cc
project.org
Subject
[R] Fit a sine to data
05/23/2008 08:49
AM
Dear R-users,
I'd like to fit a sine function to my data. The result should have a format
(and thus the formula, too)
y ~ a + sin(x+b)
where y and x are vectors, and a and b are (yet) unknown values.
The data sets (vectors x and y) are OK, and I can do a simple lm fitting
lm(y~x), or lm(y~I(sin(2*pi*x/360))), succesfully My issue is that I'm not
able to do the optional linear shift in x (e.g. x+b). What other
possibilities should I use instead of lm? I looked searched the R-seek for
terms: fit, sine, lm, and combinations, but I could not find anything
useful. Anybody would be so kind and point me to the right direction where
I
can find other fitting possibilities?
Thank you for listening and kind answers upfront.
Regards,
Milan
[[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