【发布时间】:2013-12-04 23:04:36
【问题描述】:
我是曲线拟合的初学者,Stackoverflow 上的几篇文章对我很有帮助。
我尝试使用 lm 和 nls 将正弦曲线拟合到我的数据中,但两种方法都显示出奇怪的拟合,如下所示。谁能指出我哪里出错了。我会怀疑与时间有关,但无法正确处理。我的数据可以从here 访问。
data <- read.table(file="900days.txt", header=TRUE, sep="")
time<-data$time
temperature<-data$temperature
#lm fitting
xc<-cos(2*pi*time/366)
xs<-sin(2*pi*time/366)
fit.lm<-lm(temperature~xc+xs)
summary(fit.lm)
plot(temp~time, data=data, xlim=c(1, 900))
par(new=TRUE)
plot(fit.lm$fitted, type="l", col="red", xlim=c(1, 900), pch=19, ann=FALSE, xaxt="n",
yaxt="n")
#nls fitting
fit.nls<-nls(temp~C+alpha*sin(W*time+phi),
start=list(C=27.63415, alpha=27.886, W=0.0652, phi=14.9286))
summary(fit.nls)
plot(fit.nls$fitted, type="l", col="red", xlim=c(1, 900), pch=19, ann=FALSE, xaxt="n",
axt="n")
【问题讨论】:
-
fit.lm属于 "lm" 类,因此有一个绘图方法。plot(fit.lm, type.....)可能是你想要的更多。 -
公式 2*pi*time/366 中的“366”有什么意义/来自哪里?
标签: r curve-fitting