R, Times Series, Arima Model, Prognozowanie, Dzienne dane [zamknięte]
Próbuję prognozować popyt z codziennymi danymi, od 16 stycznia 2012 r. Do 10 października 2013 r. Jednak prognozowanie po prostu daje okropne wyniki. Jakiś powód, dlaczego?
Tak wyglądają dane na wykresie: Istnieją tygodniowe i miesięczne sezonowości. Tj .: większy popyt w dni powszednie i mniejszy popyt w weekend.
Oto, jak wygląda wykres predykcyjny: gdzie czarna linia to rzeczywiste dane, a niebieska to przewidywane dane.
x = ts(data, freq=7, start=c(3,2))
fit <- auto.arima(x)
pred <- forecast(fit, h=300)
Zrobiłem wiele badań, jak dopasować codzienne dane za pomocą modelu arima. A ponieważ istnieje cotygodniowa sezonowość, wybrałem częstotliwość = 7.
Jednak ponieważ przewidywania są złe. I ktoś był na tyle miły, aby wskazać jedną z metod, które profesor Hyndman podzielił na temat dopasowania modeli z wieloma sezonowością.
https://stats.stackexchange.com/questions/74418/frequency-of-time-series-in-r/74426#74426
Wziąłem więc radę dobrych ludzi i dopasowałem modele za pomocą 2 metod z powyższego linku.
Metoda 1: Używanie funkcji tbats ().
x_new <- msts(x, seasonal.periods=c(7,7*52))
fit <- tbats(x_new)
fc <- forecast(fit, h=7*52)
Użyłem tygodniowej sezonowości 7 i rocznej sezonowości 7 * 52. Odkąd nie znalazłem łatwego sposobu na uzyskanie miesięcznej sezonowości. W oparciu o wynik prognozy również nie są dobre. Uwaga: jeśli użyję 7 * 4 jako drugiego okresu sezonowego dla miesiąca, daje to gorsze prognozy.
Metoda 2: Używanie Fouriera jako xreg.
seas1 <- fourier(x, K=1)
seas2 <- fourier(ts(x,freq=7*52), K=1)
fit <- auto.arima(x, xreg=cbind(seas1,seas2))
seas1.f <- fourierf(x, K=1, h=7*52)
seas2.f <- fourierf(ts(x,freq=7*52), K=1, h=7*52)
fc1 <- forecast(fit, xreg=cbind(seas1.f, seas2.f))
Wypróbowałem go z innym K i nie poprawia to przewidywania.
Dlatego utknąłem! Ponieważ prognozowanie jest daleko. Czy ktoś mógłby wskazać, gdzie są moje błędy? Lub jak powinienem ulepszyć swój model?
Wielkie dzięki!