Оценка стационарности временных рядов

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

Моделирование данных

Предположим, что истинная модель для линейных временных рядов

$$(1 - 0.2L)(1 - L)y_t = (1 - 0.5L)\varepsilon_t$$

где инновационная серия$\varepsilon_t$ является iid со средним 0 и отклонением 1,5. Моделируйте данные этой модели. Эта модель является модулем корневым процессом, потому что полином задержки правой стороны имеет характерный корень 1.

Mdl = arima('AR',0.2,'MA',-0.5,'D',1,'Constant',0,...
'Variance',1.5);
T = 30;
rng(5);
Y = simulate(Mdl,T);

Статистическая оценка стационарности

Econometrics Toolbox™ имеет четыре формальных теста, из которых можно проверить, являются ли временные ряды нестационарным: adftest, kpsstest, pptest, и vratiotest. Использование adftest для выполнения теста Дикки-Фуллера на данных, которые вы моделировали на предыдущих шагах.

adftest(Y)
ans =

  logical

   0

Результат теста указывает, что вы не должны отклонять нулевую гипотезу о том, что серия является модулем корневым процессом.

Визуальная оценка стационарности

Предположим, у вас нет модели временных рядов, но у вас есть данные. Смотрите график данных. Кроме того, смотрите графики функции автокорреляции выборки (ACF) и функции частичной автокорреляции выборки (PACF).

plot(Y);
title('Simulated Time Series')
xlabel('t')
ylabel('Y')

subplot(2,1,1)
autocorr(Y)
subplot(2,1,2)
parcorr(Y)

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

Алгебраически оцените стационарность

Предположим, у вас есть модель в стандартной форме:

$$y_t = 1.2y_{t - 1} - 0.2y_{t - 2} + \varepsilon_t - 0.5\varepsilon_{t - 1}.$$

Напишите уравнение в обозначения оператора задержки и решите для$y_t$, чтобы получить

$$y_t = \frac{1 - 0.5L}{1 - 1.2L + 0.2L^2}\varepsilon_t.$$

Использование LagOp для преобразования рационального полинома в полином. Кроме того, используйте isStable для проверки характерных корней знаменателя.

num = LagOp([1 -0.5]);
denom = LagOp([1 -1.2 0.2]);
quot = mrdivide(num,denom);

[r1,r2] = isStable(denom)
Warning: Termination window not currently open and coefficients
         are not below tolerance. 

r1 =

  logical

   0


r2 =

    1.0000
    0.2000

Это предупреждение указывает, что полученный частный имеет степень, большую 1001, например, может не быть конечной степени. Это указывает на нестабильность. r1 = 0 указывает, что знаменатель нестабильен. r2 является вектором характеристик корней, один из корней равен 1. Поэтому это модуль корневой процесс.

isStable является численной стандартной программой, которая вычисляет значения характеристик полинома. Если вы используете quot как аргумент к isStable, тогда выход может указать, что полином является стабильным (т.е. все значения характеристики немного меньше 1). Возможно, потребуется настроить опции допуска isStable чтобы получить более точные результаты.

Похожие темы