Я пытаюсь провести анализ временных рядов, и я новичок в этой области. У меня есть ежедневный подсчет событий с 2006 по 2009 год, и я хочу приспособить модель временного ряда к нему. Вот прогресс, который я сделал:
timeSeriesObj = ts(x,start=c(2006,1,1),frequency=365.25)
plot.ts(timeSeriesObj)
В результате получается сюжет:
Чтобы проверить, есть ли сезонность и тенденция в данных или нет, я следую за шагами, упомянутыми в этом посте :
ets(x)
fit <- tbats(x)
seasonal <- !is.null(fit$seasonal)
seasonal
и в блоге Роба Дж. Хиндмана :
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)
Оба случая указывают на отсутствие сезонности.
Когда я рисую ACF & PACF серии, вот что я получаю:
Мои вопросы:
Это способ обработки ежедневных данных временных рядов? На этой странице предлагается, чтобы я смотрел как на недельные, так и на годовые модели, но этот подход мне не ясен.
Я не знаю, как действовать, если у меня есть участки ACF и PACF.
Могу ли я просто использовать функцию auto.arima?
fit <- арима (мыц, порядок = c (p, d, q)
***** Обновлены результаты Auto.Arima ******
Когда я изменить частоту данных 7 согласно комментариям Роба Гайндмана здесь , auto.arima выбирает сезонные модели и выходы ARIMA:
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
****** Обновлена проверка сезонности ******
Когда я проверяю сезонность с частотой 7, он выдает True, но с сезонностью 365.25 он выдает false. Достаточно ли этого, чтобы сделать вывод об отсутствии годовой сезонности?
timeSeriesObj = ts(x,start=c(2006,1,1),frequency=7)
fit <- tbats(timeSeriesObj)
seasonal <- !is.null(fit$seasonal)
seasonal
возвращает:
True
в то время как
timeSeriesObj = ts(x,start=c(2006,1,1),frequency=365.25)
fit <- tbats(timeSeriesObj)
seasonal <- !is.null(fit$seasonal)
seasonal
возвращает:
False
R
простого нет возможности справиться с этим. Я бы искал коммерческие решения, если для продукта, который вы пытаетесь спрогнозировать, требуются большие складские / производственные затраты. R
имеет серьезные ограничения для прогнозирования, как у вас. Посмотрите на вопросы по ежедневному прогнозированию еще где-нибудь на этом сайте.
str(x)
дает?