Определение параметров (p, d, q) для моделирования ARIMA


10

Я довольно новичок в статистике и R. Я хотел бы знать процесс определения параметров ARIMA для моего набора данных. Можете ли вы помочь мне понять то же самое, используя R и теоретически (если это возможно)?

Данные варьируются с 12 января по 14 марта и отображают ежемесячные продажи. Вот набор данных:

99 58 52 83 94 73 97 83 86 63 77 70 87 84 60 105 87 93 110 71 158 52 33 68 82 88 84

И вот тенденция:

введите описание изображения здесь

Данные не показывают тенденцию, сезонное поведение или цикличность.

Ответы:


9

В общем, изучите расширенный учебник по анализу временных рядов (как правило, вводные книги помогут вам просто доверять своему программному обеспечению), например, анализ временных рядов от Box, Jenkins & Reinsel. Вы также можете найти подробную информацию о процедуре Бокса-Дженкинса, прибегая к помощи Google. Обратите внимание, что существуют другие подходы, кроме Box-Jenkins, например, основанные на AIC.

В R вы сначала конвертируете свои данные в объект ts(временной ряд) и говорите R, что частота равна 12 (месячные данные):

require(forecast)
sales <- ts(c(99, 58, 52, 83, 94, 73, 97, 83, 86, 63, 77, 70, 87, 84, 60, 105, 87, 93, 110, 71, 158, 52, 33, 68, 82, 88, 84),frequency=12)

Вы можете построить (частичные) функции автокорреляции:

acf(sales)
pacf(sales)

Они не предполагают какого-либо поведения AR или MA.

Затем вы подбираете модель и проверяете ее:

model <- auto.arima(sales)
model

Смотрите ?auto.arimaза помощью. Как видим, auto.arimaвыбирает простую (0,0,0) модель, поскольку она не видит ни трендов, ни сезонности, ни AR или MA в ваших данных. Наконец, вы можете прогнозировать и строить временные ряды и прогноз:

plot(forecast(model))

прогноз

Посмотрите на ?forecast.Arima(обратите внимание на заглавную A!).

Этот бесплатный онлайн учебник является отличным введением в анализ временных рядов и прогнозирование с использованием R. Очень рекомендуется.


Привет, Стефан, я добавил данные и график для своего набора данных. Как вы можете видеть, у меня есть только 27 точек данных, поэтому я работаю здесь. Не могли бы вы предложить что-то здесь?
Raunak87

Я отредактировал ответ. Ваша серия не имеет большой структуры, поэтому вы мало что можете сделать. Поскольку у вас, по сути, есть шум и немного больше, вы получаете большие интервалы прогнозирования.
Стефан Коласса

4

Две вещи. Ваш временной ряд является ежемесячным, для разумной оценки ARIMA вам нужны как минимум данные за 4 года, поскольку отраженные 27 баллов не дают автокорреляционную структуру. Это также может означать, что на ваши продажи влияют некоторые внешние факторы, а не их собственная стоимость. Постарайтесь выяснить, какой фактор влияет на ваши продажи и является ли этот фактор измеряемым. Затем вы можете запустить регрессию или VAR (векторную авторегрессию) для получения прогнозов.

Если у вас нет ничего другого, кроме этих значений, ваш лучший способ - использовать метод экспоненциального сглаживания для получения наивного прогноза. Экспоненциальное сглаживание доступно в R.

Во-вторых, не рассматривайте продажи продукта отдельно, продажи двух продуктов могут быть коррелированы, например, увеличение продаж кофе может отражать снижение продаж чая. используйте другую информацию о продукте, чтобы улучшить свой прогноз.

Обычно это происходит с данными о продажах в розничной торговле или цепочке поставок. Они не показывают большую часть автокорреляционной структуры в серии. С другой стороны, такие методы, как ARIMA или GARCH, обычно работают с данными фондового рынка или экономическими индексами, где у вас обычно есть автокорреляция.


3

Это действительно комментарий, но он превышает допустимый, поэтому я публикую его как квази-ответ, поскольку он предлагает правильный способ анализа данных временных рядов. ,

Хорошо известный факт, но часто игнорируемый здесь и в других местах, заключается в том, что теоретическая ACF / PACF, которая используется для формулировки предположительной модели модели ARIMA, не содержит импульсов / сдвигов уровней / сезонных импульсов / трендов местного времени. Кроме того, он содержит постоянные параметры и постоянную погрешность во времени. В этом случае 21-е наблюдение (значение = 158) легко помечается как выброс / импульс, и предлагаемая корректировка -80 дает измененное значение 78. Результирующая ACF / PACF модифицированной серии показывает мало или не имеет признаков стохастической (ARIMA) структуры. В этом случае операция прошла успешно, но пациент умер. Выборочная АКФ основана на ковариации / дисперсии, а чрезмерно раздутая / раздутая дисперсия приводит к смещению АКФ вниз. Профессор Кит Орд однажды назвал это «эффектом Алисы в стране чудес»


2

Как отметил Стефан Коласса, в ваших данных нет особой структуры. Функции автокорреляции не предполагают структуру ARMA (см. acf(sales), pacf(sales)) И forecast::auto.arimaне выбирают порядок AR или MA.

require(forecast)
require(tsoutliers)
fit1 <- auto.arima(sales, d=0, D=0, ic="bic")
fit1
#ARIMA(0,0,0) with non-zero mean 
#Coefficients:
#      intercept
#        81.3704
#s.e.     4.4070

Тем не менее, обратите внимание, что нулевая норма в остатках отклоняется на уровне значимости 5%.

JarqueBera.test(residuals(fit1))[[1]]
#X-squared = 12.9466, df = 2, p-value = 0.001544

Примечание: JarqueBera.testосновано на функции, jarque.bera.testдоступной в пакете tseries.

Включение аддитивного выброса в наблюдении 21, которое обнаруживается с помощью tsoutliersнормальности остатков. Таким образом, отдаленные наблюдения не влияют на оценку перехвата и прогноз.

res <- tsoutliers::tso(sales, types=c("AO", "TC", "LS"), 
  args.tsmethod=list(ic="bic", d=0, D=0))
res
#ARIMA(0,0,0) with non-zero mean 
#Coefficients:
#      intercept     AO21
#        78.4231  79.5769
#s.e.     3.3885  17.6072
#sigma^2 estimated as 298.5:  log likelihood=-115.25
#AIC=236.49   AICc=237.54   BIC=240.38
#Outliers:
#  type ind time coefhat tstat
#1   AO  21 2:09   79.58  4.52
JarqueBera.test(residuals(res$fit))[[1]]
#X-squared = 1.3555, df = 2, p-value = 0.5077

1
Nзнак равно12N
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.