Я хочу припустити, що температура поверхні Балтійського моря однакова з року в рік, а потім описати це за допомогою функціональної / лінійної моделі. У мене була ідея просто ввести рік у вигляді десяткового числа (або число_місяць / 12) і дізнатися, якою повинна бути температура в цей час. Указавши функцію lm () в R, він не розпізнає синусоїдальні дані, тому він просто створює пряму лінію. Тому я поставив функцію sin () в дужку I () і спробував кілька значень, щоб вручну підходити до функції, і це наближається до того, що я хочу. Але море влітку прогрівається швидше, а потім восени остигає повільніше ... Тож модель помиляється перший рік, потім стає правильнішою через пару років, а потім у майбутньому я думаю, що стає більше і знову не так.
Як я можу змусити R оцінити модель для мене, щоб мені не довелося самостійно вгадувати числа? Ключовим тут є те, що я хочу, щоб він давав однакові значення рік за роком, а не був правильним протягом одного року. Якби я знав більше про математику, можливо, я міг би оцінити це як щось на зразок Пуассона чи Гаусса замість гріха (), але я також не знаю, як це зробити. Будемо дуже вдячні за будь-яку допомогу наблизитися до гарної відповіді.
Ось дані, які я використовую, і код для відображення результатів поки що:
# 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))