Quiero suponer que la temperatura de la superficie marina del Mar Báltico es la misma año tras año, y, a continuación, describir con una función / modelo lineal. La idea que yo tenía era sólo la entrada de año como un número decimal (o num_months/12) y obtener lo que la temperatura debe ser de alrededor de ese tiempo. Lo arrojaba lm() en función de R, que no reconoce sinusoidal de datos, por lo que sólo se produce una línea recta. Así que me puse el pecado() función dentro de un I() soporte y trató de un par de valores para ajustar de forma manual la función, y que se acerca a lo que quiero. Pero el mar se está calentando más rápido en el verano y luego enfriamiento más lento en el otoño... Así que el modelo está mal el primer año, y luego se pone más correcto después de un par de años, y, a continuación, en el futuro, supongo que se vuelve más y más mal de nuevo.
¿Cómo puedo obtener R para estimar el modelo para mí, así que no tienes que adivinar los números de mí mismo? La clave aquí es que lo quiero para producir los mismos valores, año tras año, no sólo de ser la correcta para un año. Si supiera más acerca de las matemáticas, tal vez yo podría conjeturar que es algo como una Poisson o de Gauss en lugar de pecado(), pero no sé cómo hacer eso. Cualquier ayuda para acercarnos a una buena respuesta sería muy apreciada.
Estos son los datos que yo tengo, y el código para mostrar los resultados hasta el momento:
# 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))