Korzystam z decompose
funkcji R
i 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).
Poniżej znajduje się wynik działania decompose
funkcji. Doceniam to, jak powiedział @RichardHardy, funkcja nie sprawdza, czy istnieje rzeczywista sezonowość. Ale rozkład wydaje się potwierdzać to, co myślę.
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?
źródło
decompose
funkcjaR
jest używana).decompose
funkcji 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?Odpowiedzi:
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?
Przepraszam, jeśli to nie ma sensu ... Czy regresja ma tutaj sens?
źródło
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))
źródło
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.
źródło