Saya ingin berasumsi bahwa suhu permukaan laut dari Laut Baltik adalah tahun yang sama tahun demi tahun, dan kemudian menggambarkannya dengan model fungsi / linier. Gagasan yang saya miliki adalah hanya memasukkan tahun sebagai angka desimal (atau num_months / 12) dan keluar berapa suhu yang seharusnya sekitar waktu itu. Melemparkannya ke fungsi lm () di R, itu tidak mengenali data sinusoidal sehingga hanya menghasilkan garis lurus. Jadi saya meletakkan fungsi sin () dalam braket I () dan mencoba beberapa nilai agar sesuai dengan fungsi tersebut, dan itu mendekati apa yang saya inginkan. Tetapi laut semakin cepat memanas di musim panas dan kemudian mendingin lebih lambat di musim gugur ... Jadi modelnya salah pada tahun pertama, kemudian menjadi lebih benar setelah beberapa tahun, dan kemudian di masa depan saya kira itu menjadi lebih dan lebih salah lagi.
Bagaimana saya bisa mendapatkan R untuk memperkirakan model untuk saya, jadi saya tidak perlu menebak angka sendiri? Kuncinya di sini adalah bahwa saya ingin menghasilkan nilai yang sama tahun demi tahun, tidak hanya benar untuk satu tahun. Jika saya tahu lebih banyak tentang matematika, mungkin saya bisa menebaknya sebagai sesuatu seperti Poisson atau Gaussian alih-alih dosa (), tapi saya juga tidak tahu bagaimana melakukannya. Setiap bantuan untuk mendekati jawaban yang baik akan sangat dihargai.
Berikut adalah data yang saya gunakan, dan kode untuk menunjukkan hasil sejauh ini:
# 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))