Próbuję przeprowadzić analizę szeregów czasowych i jestem nowy w tej dziedzinie. Codziennie liczę wydarzenie z lat 2006-2009 i chcę dopasować do niego model szeregów czasowych. Oto postęp, który poczyniłem:
timeSeriesObj = ts(x,start=c(2006,1,1),frequency=365.25)
plot.ts(timeSeriesObj)
Otrzymany wykres to:
Aby sprawdzić, czy dane zawierają sezonowość i trendy, wykonuję kroki wymienione w tym poście :
ets(x)
fit <- tbats(x)
seasonal <- !is.null(fit$seasonal)
seasonal
oraz na blogu Rob J Hyndman :
library(fma)
fit1 <- ets(x)
fit2 <- ets(x,model="ANN")
deviance <- 2*c(logLik(fit1) - logLik(fit2))
df <- attributes(logLik(fit1))$df - attributes(logLik(fit2))$df
#P value
1-pchisq(deviance,df)
Oba przypadki wskazują, że nie ma sezonowości.
Kiedy planuję ACF i PACF z tej serii, otrzymuję:
Moje pytania to:
Czy to sposób na obsługę danych z szeregów czasowych? Ta strona sugeruje, że powinienem patrzeć zarówno na schematy tygodniowe, jak i roczne, ale podejście to nie jest dla mnie jasne.
Nie wiem, jak postępować, gdy mam już wykresy ACF i PACF.
Czy mogę po prostu użyć funkcji auto.arima?
fit <- arima (mity, kolejność = c (p, d, q)
***** Zaktualizowano wyniki Auto.Arima ******
Kiedy zmieniam częstotliwość danych na 7 zgodnie z komentarzami Roba Hyndmana tutaj , auto.arima wybiera sezonowy model ARIMA i generuje:
Series: timeSeriesObj
ARIMA(1,1,2)(1,0,1)[7]
Coefficients:
ar1 ma1 ma2 sar1 sma1
0.89 -1.7877 0.7892 0.9870 -0.9278
s.e. NaN NaN NaN 0.0061 0.0162
sigma^2 estimated as 21.72: log likelihood=-4319.23
AIC=8650.46 AICc=8650.52 BIC=8682.18
****** Zaktualizowana kontrola sezonowości ******
Kiedy testuję sezonowość z częstotliwością 7, wyprowadza True, ale z sezonowością 365.25 wyprowadza false. Czy to wystarczy, aby stwierdzić brak sezonowości?
timeSeriesObj = ts(x,start=c(2006,1,1),frequency=7)
fit <- tbats(timeSeriesObj)
seasonal <- !is.null(fit$seasonal)
seasonal
zwraca:
True
podczas
timeSeriesObj = ts(x,start=c(2006,1,1),frequency=365.25)
fit <- tbats(timeSeriesObj)
seasonal <- !is.null(fit$seasonal)
seasonal
zwraca:
False
R
proste nie ma możliwości, aby sobie z tym poradzić. Poszukiwałbym rozwiązań komercyjnych, jeśli dla produktu, który próbujesz przewidzieć, wiążą się wysokie koszty zapasów / produkcji. R
ma poważne ograniczenia w prognozowaniu zadań takich jak twoje. Spójrz na pytania dotyczące codziennego prognozowania, gdzie indziej na tej stronie.
str(x)
?