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

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

Симулируйте данные

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

$$(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

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

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

Похожие темы