Ich möchte annehmen, dass die Meeresoberflächentemperatur der Ostsee Jahr für Jahr gleich ist, und dies dann mit einem Funktions- / Linearmodell beschreiben. Die Idee, die ich hatte, war, einfach das Jahr als Dezimalzahl (oder num_months / 12) einzugeben und herauszufinden, wie hoch die Temperatur zu dieser Zeit sein sollte. Wenn es in R in die Funktion lm () geworfen wird, erkennt es keine sinusförmigen Daten und erzeugt nur eine gerade Linie. Also habe ich die sin () - Funktion in eine I () - Klammer gesetzt und ein paar Werte ausprobiert, um die Funktion manuell anzupassen, und das kommt meinem Wunsch sehr nahe. Aber das Meer erwärmt sich im Sommer schneller und kühlt sich dann im Herbst langsamer ab ... Das Modell ist also im ersten Jahr falsch, wird dann nach ein paar Jahren korrekter, und in Zukunft wird es wahrscheinlich auch mehr und wieder mehr falsch.
Wie kann ich R veranlassen, das Modell für mich zu schätzen, damit ich selbst keine Zahlen erraten muss? Der Schlüssel hier ist, dass ich möchte, dass es Jahr für Jahr die gleichen Werte liefert und nicht nur für ein Jahr korrekt ist. Wenn ich mehr über Mathematik wüsste, könnte ich es vielleicht als etwas wie Poisson oder Gaußsches statt Sünde () ansehen, aber ich weiß auch nicht, wie ich das machen soll. Jede Hilfe, um einer guten Antwort näher zu kommen, wäre sehr dankbar.
Hier sind die Daten, die ich verwende, und der Code, um die bisherigen Ergebnisse anzuzeigen:
# 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))