발트해의 해수면 온도가 해마다 동일하다고 가정하고 함수 / 선형 모델로 설명합니다. 내가 가진 아이디어는 연도를 10 진수 (또는 num_months / 12)로 입력하고 그 시간에 대한 온도를 알아내는 것이 었습니다. R의 lm () 함수에 던지면 정현파 데이터를 인식하지 않으므로 직선을 생성합니다. 그래서 sin () 함수를 I () 괄호 안에 넣고 함수에 수동으로 맞추기 위해 몇 가지 값을 시도했는데 원하는 것에 가깝습니다. 그러나 여름에는 바다가 더 빨리 따뜻해지고 가을에는 느리게 식습니다. 그래서 첫 해에 모델이 틀렸다가 몇 년 후에 더 정확 해졌다가 나중에는 더 커질 것 같아요 그리고 더 잘못.
R이 모델을 추정하도록하려면 어떻게해야합니까? 그래서 숫자를 직접 추측 할 필요는 없습니까? 여기서 핵심은 1 년 동안 정확하지 않고 매년 동일한 값을 생성하기를 원한다는 것입니다. 수학에 대해 더 많이 알고 있다면 sin () 대신 Poisson 또는 Gaussian과 같은 것으로 추측 할 수는 있지만 그 방법을 모르겠습니다. 좋은 답변에 가까워 지도록 도움을 주시면 대단히 감사하겠습니다.
여기 내가 사용하는 데이터와 지금까지 결과를 표시하는 코드가 있습니다.
# 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))