В этом примере показано, как использовать скользящее окно для проверки того, являются ли параметры модели временных рядов инвариантными по времени. В этом примере анализируются два временных ряда:
Временной ряд 1: смоделированные данные из известной инвариантной по времени модели
Временной ряд 2: смоделированные данные из известной изменяющейся во времени модели
Полностью укажите эту модель AR (1) для временного ряда 1 :
+ αt
где - гауссов со средним значением 0 и дисперсией 1. Полностью укажите эту изменяющуюся во времени модель для временного ряда 2:
0.5yt-1 + αt; t = 151,..., 200,
где - гауссов со средним значением 0 и дисперсией 1.
Mdl1 = arima('AR',0.6,'Constant',0,'Variance',1); Mdl2 = cell(3,1); % Preallocate ARMdl2 = [0.2 0.75 -0.5]; for j = 1:3 Mdl2{j} = arima('AR',ARMdl2(j),'Constant',0,'Variance',1); end
Mdl1 является arima объекты модели. Доступ к его свойствам можно получить с помощью точечной нотации. Mdl2 является массивом ячеек arima объекты модели. Индексирование ячеек и точечная нотация позволяют получить доступ к свойствам моделей в пределах Mdl2. Например, для доступа к значению параметра AR третьей модели в Mdl3, введите Mdl2{3}.AR.
Моделировать T = 200 периодов данных из Mdl1 и Mdl2. Используйте предварительный пример ответа 0 для обеих серий.
rng(1); % For reproducibility T = 200; y1 = simulate(Mdl1,T,'Y0',0); timeMdl2 = [100 50 50]; % Number of observations per model in Mdl2 y2 = 0; for k = 1:numel(Mdl2) y2 = [y2; simulate(Mdl2{k},timeMdl2(k),'Y0',y2(end))]; end Y = [y1 y2(2:end)];
Укажите пустые модели AR (1) для оценки Mdl1, Mdl2, и Mdl3. Оценка всех трех моделей с использованием соответствующих наборов данных и размера скользящего окна, равного 40 периодам. Кроме того, используйте инкремент скользящего окна, равный одному периоду. Сохраните параметры авторегрессии и предполагаемую дисперсию инноваций.
Mdl = arima('ARLags',1,'Constant',0); m = 100; % Rolling window size N = T - m + 1; % Number of rolling windows EstParams = cell(2,1); % Preallocate for estimates EstParamsMat = zeros(N,2); EstParamsSE = cell(2,1); EstParamsSEMat = zeros(N,2); for j = 1:2 for k = 1:N idxRW = k:(m + k - 1); % In-sample indices [EstMdl,EstParamCov] = estimate(Mdl,Y(idxRW,j),'Display','off'); EstParamsMat(k,:) = [EstMdl.AR{1} EstMdl.Variance]; EstParamsSEMat(k,:) = sqrt([EstParamCov(2,2) EstParamCov(3,3)]); end EstParams{j} = EstParamsMat; EstParamsSE{j} = EstParamsSEMat; end
Постройте график оценок и их точечных доверительных интервалов по индексу скользящего окна.
titleMdls = {'Mdl1','Mdl2'};
for j = 1:2
figure;
subplot(2,1,1);
Estimates = EstParams{j};
SEs = EstParamsSE{j};
plot(Estimates(:,1),'LineWidth',2);
hold on;
plot(Estimates(:,1) + 2*SEs(:,1),'r:','LineWidth',2);
plot(Estimates(:,1) - 2*SEs(:,1),'r:','LineWidth',2);
title(sprintf('%s - AR at Lag 1 Estimate',titleMdls{j}));
xlabel 'Rolling window index';
axis tight;
hold off;
subplot(2,1,2);
plot(Estimates(:,2),'LineWidth',2);
hold on;
plot(Estimates (:,2) + 2*SEs(:,2),'r:','LineWidth',2);
plot(Estimates(:,2) - 2*SEs(:,2),'r:','LineWidth',2);
title(sprintf('%s - Variance Estimate',titleMdls{j}));
xlabel 'Rolling window index';
axis tight;
hold off;
end

Для Mdl1оценка AR не сильно изменяется от 0,6, и оценки существенно не отличаются друг от друга (попарно). Аналогичные результаты имеют место для дисперсии Mdl1. Оценка AR Mdl2 растет, а затем падает, что указывает на зависимость от времени. Кроме того, основываясь на доверительных интервалах, есть доказательства того, что некоторые оценки отличаются от других. Хотя дисперсия не изменилась во время моделирования, по-видимому, существует гетероскедастичность, возможно, вызванная нестабильностью модели.
В этом примере показано, как задать и оценить модель пространства состояния при выполнении анализа скользящего окна на стабильность. Анализ скользящего окна для явно определенной модели пространства состояний является простым, поэтому в этом примере основное внимание уделяется неявно определенным моделям пространства состояний.
Рассмотрим эту модель состояния-пространства:
βzt = xt + ut,
где αt и ut - гауссовский процесс со средним значением 0 и дисперсией 1. Создание функции rwParamMap.m, который указывает, как параметры в params сопоставить с матрицами модели state-space, начальными значениями состояния и типом состояния и сохранить их в рабочей папке.
function [A,B,C,D,Mean0,Cov0,StateType,deflateY] = rwParamMap(params,y,Z) %rwParamMap Parameter-to-matrix mapping function for rolling window example %using ssm and specifying an AR(1) state model % The state space model specified by rwParamMap contains a stationary % AR(1) state, the observation model includes a regression component, and % the variances of the innovation and disturbances are 1. The response y % is deflated by the regression component specified by the predictor % variables x. A = params(1); B = 1; C = 1; D = 1; Mean0 = []; Cov0 = []; StateType = 0; deflateY = y - params(2)*Z; end
Программное обеспечение не поддерживает моделирование неявных моделей, содержащих компонент регрессии. Поэтому для моделирования данных из этой модели необходимо указать все компоненты модели вплоть до компонента регрессии. Это можно сделать явно, поскольку в этом примере используется простая модель пространства состояний. В противном случае можно создать другую функцию и неявно определить другую модель состояния-пространства (например, для моделей изменяющегося во времени состояния-пространства).
Mdl2Sim = ssm(NaN,1,1,1,'StateType',1);Mdl2Sim является неявно определенным ssm объект.
Моделирование 200-периодного пути случайных стандартных гауссовых данных. Затем смоделировать ответы из Mdl2Simи завышать отклики с помощью регрессионного компонента. В этом примере следует использовать start= 0,6 и β = 2.
rng(1); % For reproducibility T = 200; Z = randn(T,1); phi = 0.6; beta = 2; deflateY = simulate(Mdl2Sim,T,'Params',phi); y = deflateY + Z*beta;
y - накачанный, смоделированный путь отклика, и Z - моделируемый ряд предикторов.
При неявном определении модели состояния-пространства и данных ответа и предиктора (т. е. y и Z) существуют в MATLAB ® Workspace, то программное обеспечение создает связь из функции отображения параметров в матрицу этих рядов. Если данные не существуют в рабочей области MATLAB, программа создает модель, но при оценке модели необходимо предоставить данные с использованием соответствующих аргументов пары имя-значение.
Поэтому для выполнения анализа скользящего окна при неявном определении модели «состояние-пространство» и наличии регрессионного компонента необходимо указать модель «состояние-пространство», указывающую индексы данных, подлежащих анализу для каждого окна. Выполните анализ скользящего окна моделируемых данных. Пусть для этого примера длина скользящего окна равна 100 периодам.
m = 100; N = T - m + 1; % Number of rolling windows EstParams = nan(N,2); % Preallocation EstParamSE = nan(N,2); for j = 1:N; idxRW = j:(m + j - 1); Mdl = ssm(@(c)rwParamMap(c,y(idxRW),Z(idxRW))); [~,EstParams(j,:),EstParamCov] = estimate(Mdl,y(idxRW),[0.5 1]',... 'Display','off'); EstParamSE(j,:) = sqrt(diag(EstParamCov)); end
Постройте график оценок и точечных доверительных интервалов для параметра AR и коэффициента регрессии.
figure; subplot(2,1,1); plot(EstParams(:,1),'LineWidth',2); hold on; plot(EstParams(:,1) + 2*EstParamSE(:,1),':r','LineWidth',2); plot(EstParams(:,1) - 2*EstParamSE(:,1),':r','LineWidth',2); title 'State AR Estimate at Lag 1'; xlabel 'Rolling window index'; axis tight; hold off; subplot(2,1,2); plot(EstParams(:,2),'LineWidth',2); hold on; plot(EstParams(:,2) + 2*EstParamSE(:,2),':r','LineWidth',2); plot(EstParams(:,2) - 2*EstParamSE(:,2),':r','LineWidth',2); title 'Regression Coefficient Estimate'; xlabel 'Rolling window index'; axis tight; hold off;

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