В данной статье мы посмотрим, насколько «мощны» тесты ADF и KPSS. Сгенерируем случайный процесс , у которого нет единичного корня (то есть процесс является стационарным), :
и посмотрим, насколько различные статистические тесты распознают данный процесс как стационарный, а также на каких именно будет фейлиться тест ADF.
План эксперимента
Для различных значений мы сгенерируем 1000 процессов , , где , и посчитаем количество отвергнутых гипотез.
Тест ADF: Истинной моделью является , где с нулевым средним и конечной дисперсией . Мы оцениваем модель . Критические значения для тестовой статистики , где , представлены в таблице ниже.
1% | 5% | 10% |
-2.57 | -1.94 | -1.62 |
Тест KPSS: Истинной моделью является , где , с нулевым средним и конечной дисперсией . Мы оцениваем ту же модель с . Критические значения для тестовой статистики множителей Лагранжа, где , представлены в таблице ниже.
1% | 5% | 10% |
0.74 | 0.46 | 0.35 |
Начальное значение влияет на конечное выборочное распределение и в тесте ADF, и в тесте KPSS. На реальном фондовом рынке начальное значение может варьироваться достаточно широко, например, от 0.00215 до 204 100 (в абсолютных величинах). В данной статье мы проанализируем мощность тестов ADF и KPSS для малых значений .
Генерация случайных процессов
Начнем с генерации нестационарных случайных процессов при . Во всех последующих таблицах , , а количество генерируемых случайных процессов равно 1000. Генерировать случайные процессы будем в матлабе.
T = 500; count = 1000; epsilon = zeros(T,count); for set = 1 : count epsilon(:,set) = randn(T,1); end y = zeros(T,count); y(1,:) = 0; for t = 2 : T y(t,:) = y(t - 1,:) + epsilon(t,:); end figure plot(y(:,1)) title('Simulated RW Process')
На рисунке ниже представлен 1 из 1000 сгенерированных нестационарных случайных процессов, который следует модели случайного блуждания ().
Тестирование на разных уровнях значимости
Затем протестируем каждый из сгенерированных случайных процессов тестами ADF и KPSS на различных уровнях значимости (1%, 5% и 10%).
h = zeros(count,1); for set = 1 : count h(set,1) = adftest(y(:,set),'alpha',0.01); h(set,2) = adftest(y(:,set)); h(set,3) = adftest(y(:,set),'alpha',0.1); h(set,4) = kpsstest(y(:,set),'trend',false,'alpha',0.01); h(set,5) = kpsstest(y(:,set),'trend',false); h(set,6) = kpsstest(y(:,set),'trend',false,'alpha',0.1); end
Напомню, что методологический подход теста KPSS полностью отличается от подхода теста ADF, главное различие которого следует понимать в перестановке нулевой и альтернативной гипотезой.
В тесте KPSS нулевая гипотеза утверждает, что временной ряд является стационарным, альтернативная гипотеза утверждает наличие нестационарности. Простыми словами, если тест ADF отвечает 1 (true), значит, процесс стационарный. Если тест KPSS отвечает 1 (true), значит, процесс нестационарный.
Соответственно, для того, чтобы посчитать количество рядов, которые выявлены как стационарные тем или иным тестом, нужно воспользоваться следующим кодом.
nnz(h(:,1)) nnz(h(:,2)) nnz(h(:,3)) nnz(~h(:,4)) nnz(~h(:,5)) nnz(~h(:,6))
Эксперимент для стационарных процессов
Теперь сгенерируем и протестируем стационарные случайные процессы с теми же начальными условиями, что и нестационарные процессы, сгенерированные и протестированные выше. Начнём с .
phi = 0.1; z = zeros(T,count); z(1,:) = 0; for t = 2 : T z(t,:) = phi * z(t - 1,:) + epsilon(t,:); end figure plot(z(:,1)) title('Simulated AR(1) Process')
На рисунке ниже представлен 1 из 1000 сгенерированных стационарных случайных процессов, который следует авторегрессионной модели первого порядка ().
Протестируем каждый из сгенерированных случайных процессов тестами ADF и KPSS на различных уровнях значимости (1%, 5% и 10%).
zh = zeros(count,1); for set = 1 : count zh(set,1) = adftest(z(:,set),'alpha',0.01); zh(set,2) = adftest(z(:,set)); zh(set,3) = adftest(z(:,set),'alpha',0.1); zh(set,4) = kpsstest(z(:,set),'trend',false,'alpha',0.01); zh(set,5) = kpsstest(z(:,set),'trend',false); zh(set,6) = kpsstest(z(:,set),'trend',false,'alpha',0.1); end
Затем посчитаем количество рядов, которые были выявлены как стационарные тем или иным тестом.
nnz(zh(:,1)) nnz(zh(:,2)) nnz(zh(:,3)) nnz(~zh(:,4)) nnz(~zh(:,5)) nnz(~zh(:,6))
Продолжим тестирование для других значений .
Результаты эксперимента
В таблице ниже показано, сколько раз процесс был выявлен как стационарный для различных тестов и различных значений . Для количество найденных стационарных процессов соответствует тому, что мы ожидали. Для около-нестационарных процессов мы получаем много ложно-положительных ответов от теста ADF. Для мы можем получить ложно-отрицательный ответ от теста KPSS.
Тест ADF | Тест KPSS | |||||
1% | 5% | 10% | 1% | 5% | 10% | |
0.1 | 1000 | 1000 | 1000 | 981 | 924 | 868 |
0.2 | 1000 | 1000 | 1000 | 961 | 885 | 812 |
0.3 | 1000 | 1000 | 1000 | 938 | 834 | 731 |
0.4 | 1000 | 1000 | 1000 | 893 | 758 | 642 |
0.5 | 1000 | 1000 | 1000 | 831 | 665 | 512 |
0.6 | 1000 | 1000 | 1000 | 733 | 516 | 353 |
0.7 | 1000 | 1000 | 1000 | 586 | 339 | 186 |
0.8 | 1000 | 1000 | 1000 | 349 | 145 | 66 |
0.9 | 1000 | 1000 | 1000 | 68 | 17 | 4 |
0.95 | 988 | 1000 | 1000 | 2 | 0 | 0 |
0.975 | 501 | 886 | 981 | 1 | 0 | 0 |
0.99 | 79 | 330 | 536 | 1 | 0 | 0 |
0.995 | 34 | 155 | 288 | 0 | 0 | 0 |
1 | 8 | 46 | 95 | 0 | 0 | 0 |
1.01 | 1 | 4 | 5 | 0 | 0 | 0 |
Выводы
Как мы видели, тест Дики-Фуллера не способен различить нестационарные и около-нестационарные временные ряды. Это объясняет, почему не выполняется свойство симметричности отношения коинтеграции примерно для 3% пар.
Мной были проанализированы остатки 8 несимметричных пар на Московской бирже за 2019 год: колебалась от 0.9593 до 0.9716, то есть временной ряд остатков был около-нестационарным.
На практике полезно классифицировать переменные с высокой степенью постоянства во времени (незначительный возврат к среднему) как нестационарные, а переменные со значительной склонностью возврата к среднему — как стационарные.
Однако важно подчеркнуть, что стационарность/нестационарность или, в качестве альтернативы, порядок интегрирования переменной не является в целом свойством экономической переменной, а представляет собой удобную статистическую аппроксимацию, позволяющую различать краткосрочные, среднесрочные и долгосрочные колебания данных.
Если временной ряд пересекает свой средний уровень, скажем, 10 раз, то эконометрический анализ обнаружит значительный возврат к среднему и, следовательно, сделает вывод о том, что временной ряд является стационарным.
Однако если мы расширим горизонт выборки, то можем получить противоречивые результаты. На более широком временном диапазоне эконометрический анализ может сделать вывод о нестационарности временного ряда.
Существует множество аргументов в пользу рассмотрения единичного корня (стохастического тренда) как удобной эконометрической аппроксимации, а не как глубокого структурного параметра.
Например, если временным аспектом нашего исследования является макроэкономическое поведение в среднесрочной перспективе, то большинство макроэкономических переменных проявляют значительную инерционность, согласующуюся с нестационарным, а не стационарным поведением.
Такой временной ряд не будет статистически отличаться от нестационарного процесса, и его рассмотрение в качестве стационарной переменной (на небольшой выборке), скорее всего, сделает статистический анализ невалидным и, следовательно, приведет к неверным экономическим выводам.
В связи с этим не вижу большого смысла перед исследованием на коинтеграцию проверять временной ряд на стационарность. Во-первых, мы можем получить невалидный результат. Во-вторых, даже если процесс действительно будет стационарным на некотором промежутке времени, скорее всего, выборкой мы просто поймали движение в боковике. Однако если мы расширим горизонт анализа, мы увидим в целом нестационарное поведение временного ряда.
ссылка на оригинал статьи https://habr.com/ru/post/530688/
Добавить комментарий