[R] fitting cosine curve

lily li chocold12 at gmail.com
Wed Jun 21 01:17:59 CEST 2017


Hi R users,

I have a question about fitting a cosine curve. I don't know how to set the
approximate starting values. Besides, does the method work for sine curve
as well? Thanks.

Part of the dataset is in the following:
y=c(16.82, 16.72, 16.63, 16.47, 16.84, 16.25, 16.15, 16.83, 17.41, 17.67,
17.62, 17.81, 17.91, 17.85, 17.70, 17.67, 17.45, 17.58, 16.99, 17.10)
t=c(7,  37,  58,  79,  96, 110, 114, 127, 146, 156, 161, 169, 176, 182,
190, 197, 209, 218, 232, 240)

I use the method to fit a curve, but it is different from the real curve,
which can be seen in the figure.
linFit  <- lm(y ~ cos(t))
fullFit <- nls(y ~ A*cos(omega*t+C) + B,
start=list(A=coef(linFit)[1],B=coef(linFit)[2],C=0,omega=.4)) #omega cannot
be set to 1, don't know why.
co <- coef(fullFit)
fit <- function(x, a, b, c, d) {a*cos(b*x+c)+d}
plot(x=t, y=y)
curve(fit(x, a=co['A'], b=co['omega'], c=co['C'],d=co['B']), add=TRUE
,lwd=2, col="steelblue")
-------------- next part --------------
A non-text attachment was scrubbed...
Name: curve1.pdf
Type: application/pdf
Size: 29634 bytes
Desc: not available
URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20170620/a99f7d8f/attachment.pdf>


More information about the R-help mailing list