我是一個初學者,在曲線擬合和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