バルト海の海面温度は毎年同じであると仮定し、関数/線形モデルで説明します。私が考えていたのは、年を10進数(またはnum_months / 12)として入力し、その時間についての温度を取得することでした。Rのlm()関数にそれを投げると、正弦データを認識しないため、直線を生成します。そこで、sin()関数をI()ブラケットに入れて、いくつかの値を試して関数を手動でフィットさせました。しかし、海は夏には早く暖まり、秋にはゆっくりと冷却します...ですから、最初の年はモデルが間違っていて、数年後にはより正確になり、将来的にはより多くなると思いますそしてさらに間違っています。
モデルを推定するためにRを取得するにはどうすればよいですか?したがって、自分で数値を推測する必要はありませんか?ここで重要なのは、1年間だけでなく、毎年同じ値を生成することです。数学についてもっと知っていれば、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))