我是一个初学者,在曲线拟合和Stackoverflow上的几个帖子真的帮助了我。在R中使用lm和nls的正弦曲线拟合
我试图使用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 .....)'可能更符合你的要求。 –
“366”来自公式2 * pi * time/366的意义是什么? – Vinterwoo