如何在R中找到一个适合半正弦模型的模型?
我想假设波罗的海的海面温度年复一年,然后用函数/线性模型对其进行描述。我的想法是只将年输入为十进制数字(或num_months / 12),然后得出当时的温度。将其扔到R中的lm()函数中,它无法识别正弦数据,因此只能产生一条直线。因此,我将sin()函数放在I()括号内,并尝试了一些值以手动适合该函数,这接近我想要的值。但是海洋在夏天变暖得更快,而在秋天变慢了……所以第一年的模型是错误的,几年后变得更正确,然后在将来我猜想它会变得更多再犯错。 如何获得R来为我估算模型,所以我不必自己猜测数字?这里的关键是我希望它年复一年地产生相同的值,而不仅仅是一年正确。如果我对数学了解更多,也许我可以将其估计为类似于Poisson或Gaussian之类的东西,而不是sin(),但我也不知道该怎么做。任何帮助您接近一个好的答案将不胜感激。 这是我使用的数据,以及到目前为止显示结果的代码: # SST from Bradtke et al 2010 ToY <- c(1/12,2/12,3/12,4/12,5/12,6/12,7/12,8/12,9/12,10/12,11/12,12/12,13/12,14/12,15/12,16/12,17/12,18/12,19/12,20/12,21/12,22/12,23/12,24/12,25/12,26/12,27/12,28/12,29/12,30/12,31/12,32/12,33/12,34/12,35/12,36/12,37/12,38/12,39/12,40/12,41/12,42/12,43/12,44/12,45/12,46/12,47/12,48/12) Degrees <- c(3,2,2.2,4,7.6,13,16,16.1,14,10.1,7,4.5,3,2,2.2,4,7.6,13,16,16.1,14,10.1,7,4.5,3,2,2.2,4,7.6,13,16,16.1,14,10.1,7,4.5,3,2,2.2,4,7.6,13,16,16.1,14,10.1,7,4.5) SST <- data.frame(ToY, Degrees) SSTlm <- lm(SST$Degrees ~ I(sin(pi*2.07*SST$ToY))) summary(SSTlm) plot(SST,xlim=c(0,4),ylim=c(0,17)) par(new=T) plot(data.frame(ToY=SST$ToY,Degrees=8.4418-6.9431*sin(2.07*pi*SST$ToY)),type="l",xlim=c(0,4),ylim=c(0,17))