У меня есть ежемесячные данные с 1993 по 2015 год, и я хотел бы сделать прогноз на этих данных. Я использовал пакет tsoutliers для определения выбросов, но я не знаю, как мне продолжать прогнозировать с моим набором данных.
Это мой код:
product.outlier<-tso(product,types=c("AO","LS","TC"))
plot(product.outlier)
Это мой вывод из пакета tsoutliers
ARIMA(0,1,0)(0,0,1)[12]
Coefficients:
sma1 LS46 LS51 LS61 TC133 LS181 AO183 AO184 LS185 TC186 TC193 TC200
0.1700 0.4316 0.6166 0.5793 -0.5127 0.5422 0.5138 0.9264 3.0762 0.5688 -0.4775 -0.4386
s.e. 0.0768 0.1109 0.1105 0.1106 0.1021 0.1120 0.1119 0.1567 0.1918 0.1037 0.1033 0.1040
LS207 AO237 TC248 AO260 AO266
0.4228 -0.3815 -0.4082 -0.4830 -0.5183
s.e. 0.1129 0.0782 0.1030 0.0801 0.0805
sigma^2 estimated as 0.01258: log likelihood=205.91
AIC=-375.83 AICc=-373.08 BIC=-311.19
Outliers:
type ind time coefhat tstat
1 LS 46 1996:10 0.4316 3.891
2 LS 51 1997:03 0.6166 5.579
3 LS 61 1998:01 0.5793 5.236
4 TC 133 2004:01 -0.5127 -5.019
5 LS 181 2008:01 0.5422 4.841
6 AO 183 2008:03 0.5138 4.592
7 AO 184 2008:04 0.9264 5.911
8 LS 185 2008:05 3.0762 16.038
9 TC 186 2008:06 0.5688 5.483
10 TC 193 2009:01 -0.4775 -4.624
11 TC 200 2009:08 -0.4386 -4.217
12 LS 207 2010:03 0.4228 3.746
13 AO 237 2012:09 -0.3815 -4.877
14 TC 248 2013:08 -0.4082 -3.965
15 AO 260 2014:08 -0.4830 -6.027
16 AO 266 2015:02 -0.5183 -6.442
У меня также есть эти предупреждающие сообщения.
Warning messages:
1: In locate.outliers.iloop(resid = resid, pars = pars, cval = cval, :
stopped when ‘maxit’ was reached
2: In locate.outliers.iloop(resid = resid, pars = pars, cval = cval, :
stopped when ‘maxit’ was reached
3: In locate.outliers.oloop(y = y, fit = fit, types = types, cval = cval, :
stopped when ‘maxit’ was reached
4: In arima(x, order = c(1, d, 0), xreg = xreg) :
possible convergence problem: optim gave code = 1
5: In auto.arima(x = c(5.77, 5.79, 5.79, 5.79, 5.79, 5.79, 5.78, 5.78, :
Unable to fit final model using maximum likelihood. AIC value approximated
Сомнения:
- Если я не ошибаюсь, пакет tsoutliers удалит обнаруженные выбросы и, используя набор данных с удаленными выбросами, даст нам лучшую модель аримы, подходящую для набора данных, правильно?
- Из-за устранения сдвига уровня и т. Д. Набор корректирующих рядов значительно смещается вниз. Не означает ли это, что если прогнозирование выполняется для скорректированных рядов, результат прогноза будет очень неточным, поскольку более свежие данные уже превышают 12, а скорректированные данные сдвигают его примерно до 7-8.
- Что означает предупреждение 4 и 5? Означает ли это, что он не может делать auto.arima, используя скорректированные серии?
- Что означает [12] в ARIMA (0,1,0) (0,0,1) [12]? Это просто моя частота / периодичность моего набора данных, который я устанавливаю ежемесячно? И означает ли это, что мой ряд данных также является сезонным?
- Как определить сезонность в моем наборе данных? Что касается визуализации графика временного ряда, я не вижу какой-либо очевидной тенденции, и если я использую функцию разложения, она будет предполагать, что существует сезонная тенденция? Так что я просто верю тому, что говорят мне цутеры, где есть сезонный тренд, поскольку существует МА порядка 1?
- Как мне продолжить делать прогнозирование с этими данными после выявления этих выбросов?
- Как включить эти выбросы в другие модели прогнозирования - экспоненциальное сглаживание, ARIMA, структурную модель, случайное блуждание, тета? Я уверен, что не смогу удалить выбросы, так как есть сдвиг уровня, и если я возьму только скорректированные данные серии, значения будут слишком маленькими, так что мне делать?
Нужно ли добавлять эти выбросы в качестве регрессора в auto.arima для прогнозирования? Как это работает тогда?
Пакет 'tsoutliers' реализует процедуру, описанную в Chen и Liu (1993) [1]. Описание пакета и процедуры также приведены в этом документе .
Вкратце, процедура состоит из двух основных этапов:
Затем ряды корректируются для обнаруженных выбросов, и этапы (1) и (2) повторяются до тех пор, пока выбросы не будут обнаружены или пока не будет достигнуто максимальное количество итераций.
Первый этап (обнаружение выбросов) также является итеративным процессом. В конце каждой итерации остатки из модели ARIMA корректируются с учетом выбросов, обнаруженных на этом этапе. Процесс повторяется до тех пор, пока не будет найдено больше выбросов или пока не будет достигнуто максимальное количество итераций (по умолчанию 4 итерации). Первые три предупреждения, которые вы получаете, относятся к этому внутреннему циклу, то есть этап завершается после четырех итераций.
Вы можете увеличить это максимальное количество итераций через аргумент
maxit.iloop
в функцииtso
. Желательно не устанавливать большое количество итераций на первом этапе и позволить процессу переходить ко второму этапу, где модель ARIMA переоборудуется или выбирается снова.Предупреждения 4 и 5 связаны с процессом подгонки модели ARIMA и выбора модели соответственно для функций
stats::arima
иforecast:auto.arima
. Алгоритм, который максимизирует функцию правдоподобия, не всегда сходится к решению. Вы можете найти некоторые детали, связанные с этими вопросами, например, в этом посте и в этом посте.[1] Чунг Чен и Лон-Му Лю (1993) «Совместная оценка параметров модели и выбросов в динамическом ряду », журнал Американской статистической ассоциации , 88 (421), стр. 284-297. DOI: 10.1080 / 01621459.1993.10594321 .
источник