R sezonowe szeregi czasowe

9

Korzystam z decomposefunkcji Ri wymyślam 3 składniki moich miesięcznych szeregów czasowych (trend, sezonowość i losowość). Jeśli wykreślę wykres lub spojrzę na tabelę, wyraźnie widzę, że na szereg czasowy ma wpływ sezonowość.

Jednak kiedy regresuję szeregi czasowe do 11 zmiennych sezonowych, wszystkie współczynniki nie są istotne statystycznie, co sugeruje brak sezonowości.

Nie rozumiem, dlaczego wpadłem na dwa bardzo różne wyniki. Czy stało się to komuś? czy robię coś źle?


Dodaję tutaj kilka użytecznych szczegółów.

To jest mój szereg czasowy i odpowiednia miesięczna zmiana. Na obu wykresach widać sezonowość (lub to właśnie chciałbym ocenić). Szczególnie na drugim wykresie (który jest miesięczną zmianą serii) widzę powtarzający się wzorzec (wysokie i niskie punkty w tych samych miesiącach roku).

Szereg czasowy

MonthlyChange

Poniżej znajduje się wynik działania decomposefunkcji. Doceniam to, jak powiedział @RichardHardy, funkcja nie sprawdza, czy istnieje rzeczywista sezonowość. Ale rozkład wydaje się potwierdzać to, co myślę.

Rozkładać się

Kiedy jednak regresuję szeregi czasowe dla 11 zmiennych zmiennych sezonowych (od stycznia do listopada, z wyjątkiem grudnia), znajduję:

    Coefficients:
                  Estimate Std. Error t value Pr(>|t|)    
    (Intercept) 5144454056  372840549  13.798   <2e-16 ***
    Jan     -616669492  527276161  -1.170    0.248    
    Feb     -586884419  527276161  -1.113    0.271    
    Mar     -461990149  527276161  -0.876    0.385    
    Apr     -407860396  527276161  -0.774    0.443    
    May     -395942771  527276161  -0.751    0.456    
    Jun     -382312331  527276161  -0.725    0.472    
    Jul     -342137426  527276161  -0.649    0.520    
    Aug     -308931830  527276161  -0.586    0.561    
    Sep     -275129629  527276161  -0.522    0.604    
    Oct     -218035419  527276161  -0.414    0.681    
    Nov     -159814080  527276161  -0.303    0.763

Zasadniczo wszystkie współczynniki sezonowości nie są istotne statystycznie.

Aby uruchomić regresję liniową, używam następującej funkcji:

lm.r = lm(Yvar~Var$Jan+Var$Feb+Var$Mar+Var$Apr+Var$May+Var$Jun+Var$Jul+Var$Aug+Var$Sep+Var$Oct+Var$Nov)

gdzie ustawiłem Yvar jako zmienną szeregów czasowych z częstotliwością miesięczną (częstotliwość = 12).

Staram się również brać pod uwagę składową trendu szeregu czasowego, w tym zmienną trendu do regresji. Jednak wynik się nie zmienia.

                  Estimate Std. Error t value Pr(>|t|)    
    (Intercept) 3600646404   96286811  37.395   <2e-16 ***
    Jan     -144950487  117138294  -1.237    0.222    
    Feb     -158048960  116963281  -1.351    0.183    
    Mar      -76038236  116804709  -0.651    0.518    
    Apr      -64792029  116662646  -0.555    0.581    
    May      -95757949  116537153  -0.822    0.415    
    Jun     -125011055  116428283  -1.074    0.288    
    Jul     -127719697  116336082  -1.098    0.278    
    Aug     -137397646  116260591  -1.182    0.243    
    Sep     -146478991  116201842  -1.261    0.214    
    Oct     -132268327  116159860  -1.139    0.261    
    Nov     -116930534  116134664  -1.007    0.319    
    trend     42883546    1396782  30.702   <2e-16 ***

Dlatego moje pytanie brzmi: czy robię coś złego w analizie regresji?

mattiace
źródło
1
@forecaster, oto odpowiedź na twoje pytanie (OP mówi, że decomposefunkcja Rjest używana).
Richard Hardy,
1
Po odczytaniu pliku pomocy decomposefunkcji wydaje się, że funkcja nie sprawdza, czy występuje sezonowość. Zamiast tego po prostu uzyskuje średnie dla każdego sezonu, odejmuje średnią i nazywa to składnikiem sezonowym. Tak więc wytworzyłby składnik sezonowy, niezależnie od tego, czy istnieje prawdziwy składnik sezonowy, czy tylko hałas. Niemniej jednak nie wyjaśnia to, dlaczego twoje manekiny są nieistotne, chociaż mówisz, że sezonowość jest widoczna z wykresu danych. Czy to możliwe, że twoja próbka jest zbyt mała, aby uzyskać znaczące sezonowe manekiny? Czy są one wspólnie znaczące?
Richard Hardy,
3
Trzeba spojrzeć na skale, wykres sezonowy pokazuje wahania sezonowe od -0,02 do +0,04, podczas gdy rzeczywiste wartości wynoszą od 4 do 6 miliardów. Funkcja dekompozycji zmusza dane do wykazania pewnej sezonowości, dlatego pokazuje wartość, która jest nieistotna. Dane nie zawierają sezonowości.
prezenter
1
Myślałem, że sezonowość dotyczy bardziej ruchów z pewną „stałą” częstotliwością niż wielkością ruchu. Skale są różne, ponieważ pierwszy wykres pokazuje saldo (w funtach), a drugi to zmiana (wyrażona w procentach). Właśnie próbowałem ponownie uruchomić regresję: jeśli weźmiemy pod uwagę trend wielomianowy, jakiś współczynnik zaczyna być znaczący. Myślę, że jak sugerował @danno, trend jest bardzo znaczący.
mattiace
1
Test Canova i Hansen może dostarczyć dodatkowych informacji na temat obecności i stabilności sezonowego wzorca danych. W przypadku niektórych zastosowań tego testu zobacz na przykład ten post , który zawiera również link do oryginalnej pracy i przykładowego kodu.
javlacalle

Odpowiedzi:

1

Czy regresujesz dane po usunięciu trendu? Masz pozytywny trend, a Twoja sygnatura sezonowa jest prawdopodobnie zamaskowana w regresji (wariancja z powodu trendu lub błędu, jest większa niż z powodu miesiąca), chyba że uwzględniłeś trend w Yvar ...

Poza tym nie jestem zbyt pewny szeregów czasowych, ale czy nie należy przypisywać każdej obserwacji na miesiąc, a regresja wygląda mniej więcej tak?

lm(Yvar ~ Time + Month)

Przepraszam, jeśli to nie ma sensu ... Czy regresja ma tutaj sens?

Danno
źródło
Przeczytałem w podręczniku Econometrics (Wooldridge), że jeśli wprowadzisz czynnik „regresu” do regresji, będzie to jak usunięcie z trendów oryginalnej serii szeregów czasowych. Dla czynnika „czasowego” rozumiem wektor, taki jak [1, 2, ..., n], przy czym n = do liczby obserwacji. Naprawdę nie rozumiem twojego drugiego punktu. Moja druga regresja wygląda następująco: lm.r = lm (Yvar ~ VarTime+VarJan + VarFeb+...+VarListopad). Czy o to ci chodziło?
mattiace
Pomoże to zobaczyć kilka wierszy twoich danych. Ale wyobrażam sobie, że masz trzy kolumny, Time, Yvar, Month. Rzędy są obserwacjami. Myślę więc, że czynnikami w twojej lm () będą Czas i Miesiąc (a nie poziomy czynników Miesiąc). Myślę też, że istnieją pewne problemy z lm () w szeregach czasowych ... obserwacje nie są niezależne - czasowo autokorelowane.
Danno
1

W graficznym przedstawieniu szeregów czasowych oczywiste jest, że „trend” - liniowy komponent w czasie - jest najbardziej znaczącym czynnikiem przyczyniającym się do realizacji. Komentujemy, że najważniejszym aspektem tego szeregu czasowego jest stabilny wzrost każdego miesiąca.

Następnie chciałbym skomentować, że zmiana sezonowa jest niewielka w porównaniu z innymi. Nic więc dziwnego, że przy miesięcznych pomiarach podejmowanych w ciągu 6 lat (łącznie tylko 72 obserwacje) model regresji liniowej nie ma precyzji w identyfikowaniu któregokolwiek z 11-miesięcznych kontrastów jako statystycznie znaczących. Jest ponadto nie jest zaskakujące, że wpływ czasu nie osiągnęła istotności statystycznej, bo to jest taki sam w przybliżeniu zgodny wzrost liniowy występujący na wszystkie 72 uwag, uzależnione od ich efektu sezonowego.

Brak istotności statystycznej dla któregokolwiek z 11-miesięcznych kontrastów nie oznacza, że ​​nie występują efekty sezonowe. W rzeczywistości, jeśli użyjesz modelu regresji do ustalenia, czy występuje jakaś sezonowość, odpowiednim testem jest test zagnieżdżony o 11 stopniach swobody, który jednocześnie ocenia istotność statystyczną kontrastu każdego miesiąca. Taki test można uzyskać, przeprowadzając ANOVA, test współczynnika wiarygodności lub solidny test Walda. Na przykład:

library(lmtest) model.mt <- lm(outcome ~ time + month) model.t <- lm(outcome ~ time) aov(model.mt, model.t) lrtest(model.mt, model.t) library(sandwich) ## autoregressive consistent robust standard errors waldtest(lrtest, lmtest, vcov.=function(x)vcovHAC(x))

AdamO
źródło
0

Nie wiem, czy to twój przypadek, ale zdarzyło mi się to, kiedy zacząłem analizować szeregi czasowe w R, a problem polegał na tym, że nie podałem poprawnie okresu szeregów czasowych podczas tworzenia obiektu szeregu czasowego, aby go rozłożyć. W funkcji szeregów czasowych znajduje się parametr, który pozwala określić jego częstotliwość. W ten sposób prawidłowo rozkłada swoje sezonowe trendy.

jmnavarro
źródło
jmnavarro, poprawnie zdefiniowałem częstotliwość w funkcji dekompozycji (= 12, ponieważ mam dane miesięczne). W rzeczywistości jestem zadowolony z wyniku tej funkcji. Moje pytanie brzmi: dlaczego nie znajduję tego samego wyniku (sezonowość jest znacząca), gdy wykonuję regresję liniową przy użyciu zmiennych fikcyjnych. Zrobiłem to zarówno z R, jak i Excel, a wyniki są takie same: współczynniki pozorne nieistotne statystycznie. Jest to sprzeczne z tym, co wcześniej znalazłem w funkcji dekompozycji. Nie rozumiem, czy czegoś mi brakuje
mattiace
Przepraszam, nie do końca zrozumiałem twoje pytanie. Pomoże Ci to opublikować kod, abyśmy mogli spróbować go odtworzyć.
jmnavarro