Тест ADF для проверки стационарности ряда

Расширенный тест Дики – Фуллера (Augmented Dickey-Fuller test, ADF) используется для проверки временного ряда на стационарность (см. раздел Стационарность).

В качестве нулевой гипотезы рассматривается наличие единичного корня (unit root, один из корней характеристического полинома лежит на единичной окружности), т.е. нестационарность ряда. Тест ADF является односторонним: в качестве альтернативной гипотезы по умолчанию считается гипотеза о стационарности ряда (все корни характеристического полинома лежат вне единичного круга); другой (редкий для эконометрических рядов) вариант — наличие корней внутри единичного круга (взрывной рост элементов ряда).

Тест ADF на модельных данных

Откроем RStudio и выполним простую программу:

library(tseries)  # Библиотека для работы с временными рядами.
x <- rnorm(1000)  # Сгенерировали стационарный ряд (1000 случайных чисел, распределённых по нормальному закону).
adf.test(x, alternative="stationary")  # Тест ADF.

Получим результат:

Augmented Dickey-Fuller Test
data:  x
Dickey-Fuller = -11.3533, Lag order = 9, p-value = 0.01
alternative hypothesis: stationary

Warning message:
In adf.test(x) : p-value smaller than printed p-value

Поскольку p-значение (p-value) мало, то с уровнем значимости 0.01 данный ряд можно считать стационарным (отвергнута гипотеза о наличии единичного корня).

Теперь проверим заведомо нестационарный ряд:

y <- diffinv(x)  # Нестационарный ряд.
adf.test(y, alternative="stationary")

Получим:

Augmented Dickey-Fuller Test
data:  y
Dickey-Fuller = -2.4271, Lag order = 9, p-value = 0.3975
alternative hypothesis: stationary

Поскольку значение p-value велико, то нет оснований отвергать гипотезу о наличии единичного корня (ряд можно считать нестационарным).

Тест ADF для дневных цен закрытия валютной пары EUR/USD

Проверим, является ли стационарным ряд дневных цен закрытия валютной пары EUR/USD на рынке FOREX:

library(rusquant)  # Библиотека для скачивания котировок с сайта finam.ru.
ts1 <- getSymbols("EURUSD", src="Finam", from='2014-01-01', to ='2014-12-31', auto.assign=FALSE)
head(ts1)                                    # Вывели 5 первых строк.
adf.test(ts1[,4], alternative="stationary")  # Тест ADF.

Результат:

           EURUSD.Open EURUSD.High EURUSD.Low EURUSD.Close EURUSD.Volume
2014-01-01      1.3744      1.3767     1.3738       1.3754             0
2014-01-02      1.3755      1.3775     1.3627       1.3651             0
2014-01-03      1.3652      1.3673     1.3591       1.3598             0
2014-01-04      1.3599      1.3599     1.3580       1.3586             0
2014-01-05      1.3588      1.3594     1.3585       1.3591             0
2014-01-06      1.3590      1.3653     1.3569       1.3634             0

Augmented Dickey-Fuller Test
data:  ts1[, 4]
Dickey-Fuller = -1.732, Lag order = 7, p-value = 0.69
alternative hypothesis: stationary

Дневные цены закрытия валютной пары EUR/USD можно считать нестационарным временным рядом (гипотеза о наличии единичного корня не опровергнута).

Тест ADF для относительных приращений дневных цен закрытия валютной пары EUR/USD

Теперь проверим ряд относительных приращений дневных цен закрытия той же самой валютной пары EUR/USD:

ts2 <- ROC(Cl(ts1), type="discrete")  # Относительные приращения цен закрытия.
head(ts2)                  # Вывели 5 первых строк; в первой строке видим NA.
ts2 <- ts2[-1,]                           # Удалили первую строку.
adf.test(ts2, alternative="stationary")   # Тест ADF.

Результат:

            EURUSD.Close
2014-01-01            NA
2014-01-02 -0.0074887306
2014-01-03 -0.0038824995
2014-01-04 -0.0008824827
2014-01-05  0.0003680259
2014-01-06  0.0031638584

Augmented Dickey-Fuller Test
data:  ts2
Dickey-Fuller = -8.6884, Lag order = 7, p-value = 0.01
alternative hypothesis: stationary

Поскольку для самой первой даты приращение цены не определено, мы удалили первый элемент из ряда данных.

Вывод: гипотеза о наличии единичного корня опровергнута; ряд относительных приращений цен закрытия валютной пары EUR/USD является стационарным.

Таким образом, мы выяснили, что ряд цен закрытия валютной пары EUR/USD является интегрированным 1-го порядка.


Теги: Язык R, Математическая статистика, Временные ряды




Комментарии

Комментариев пока нет.

* Обязательные поля
(Не публикуется)
 
Жирный Курсив Подчеркнутый Перечеркнутый Степень Индекс Код PHP Код Кавычки Вставить линию Вставить маркированный список Вставить нумерованный список Вставить ссылку Вставить e-mail Вставить изображение Вставить видео
 
Улыбка Печаль Удивление Смех Злость Язык Возмущение Ухмылка Подмигнуть Испуг Круто Скука Смущение Несерьёзно Шокирован
 
1000
Captcha
Refresh
 
Введите код:
 
Запомнить информацию введенную в поля формы.