Jestem nowy w R i analizie szeregów czasowych. Próbuję znaleźć trend w długim (40 lat) dziennym szeregu czasowym temperatur i próbowałem różnych przybliżeń. Pierwszy to po prostu prosta regresja liniowa, a drugi to Sezonowy rozkład szeregów czasowych według Loessa.
W tym ostatnim wydaje się, że składnik sezonowy jest większy niż trend. Ale jak mam zmierzyć trend? Chciałbym tylko powiedzieć, jak silny jest ten trend.
Call: stl(x = tsdata, s.window = "periodic")
Time.series components:
seasonal trend remainder
Min. :-8.482470191 Min. :20.76670 Min. :-11.863290365
1st Qu.:-5.799037090 1st Qu.:22.17939 1st Qu.: -1.661246674
Median :-0.756729578 Median :22.56694 Median : 0.026579468
Mean :-0.005442784 Mean :22.53063 Mean : -0.003716813
3rd Qu.:5.695720249 3rd Qu.:22.91756 3rd Qu.: 1.700826647
Max. :9.919315613 Max. :24.98834 Max. : 12.305103891
IQR:
STL.seasonal STL.trend STL.remainder data
11.4948 0.7382 3.3621 10.8051
% 106.4 6.8 31.1 100.0
Weights: all == 1
Other components: List of 5
$ win : Named num [1:3] 153411 549 365
$ deg : Named int [1:3] 0 1 1
$ jump : Named num [1:3] 15342 55 37
$ inner: int 2
$ outer: int 0
źródło
gls()
w pakiecie nlme). Ale jak pokazano powyżej dla Kairu i STL sugeruje dla twoich danych, trend nie jest liniowy. Jako taki trend liniowy nie byłby odpowiedni, ponieważ nie opisuje poprawnie danych. Musisz wypróbować to na swoich danych, ale AM, taki jak ja, pokazałby się jako trend liniowy, gdyby najlepiej pasował do danych.Gavin pod warunkiem bardzo dokładną odpowiedź, ale na łatwiejszą i szybszą rozwiązania, zalecam ustawienie STL funkcji t.window parametr do wartości, która jest wielokrotnością częstotliwości z ts danych. Użyłbym wywnioskowanej okresowości odsetek (np. Wartość 3660 dla trendów dekadalnych z dobowymi danymi rozdzielczości). Może Cię również zainteresować pakiet stl2 opisany w rozprawie autora . Zastosowałem metodę Gavina do własnych danych i jest ona również bardzo skuteczna.
źródło