Je veux supposer que la température de surface de la mer Baltique est la même année après année, puis la décrire avec un modèle fonction / linéaire. L'idée que j'avais était de simplement entrer l'année sous forme de nombre décimal (ou num_months / 12) et de déterminer la température à ce moment-là. En le lançant dans la fonction lm () dans R, il ne reconnaît pas les données sinusoïdales, il produit donc une ligne droite. J'ai donc placé la fonction sin () dans un crochet I () et essayé quelques valeurs pour l'ajuster manuellement, ce qui se rapproche de ce que je veux. Mais la mer se réchauffe plus rapidement en été et se refroidit plus lentement à l’automne ... Le modèle a donc tort la première année, puis est devenu plus correct au bout de quelques années, puis à l’avenir, il deviendra de plus en plus et plus faux encore.
Comment puis-je demander à R d'estimer le modèle pour moi, de sorte que je n'ai pas à deviner les chiffres moi-même? La clé ici est que je veux qu’il produise les mêmes valeurs année après année, et ne soit pas juste correct pour un an. Si j'en savais plus sur les mathématiques, je pourrais peut-être l'assimiler à quelque chose comme un poisson ou un gaussien au lieu de sin (), mais je ne sais pas comment le faire non plus. Toute aide pour se rapprocher d'une bonne réponse serait grandement appréciée.
Voici les données que j'utilise et le code pour afficher les résultats jusqu'à présent:
# 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))