exponenta event banner

фильтр

Отфильтрованный вывод оперативных скрытых состояний в данных динамической регрессии с коммутацией Маркова

Описание

пример

FS = filter(Mdl,Y) возвращает вероятности отфильтрованного состояния FS от проведения оптимального условного вывода вероятностей оперативных скрытых состояний в данных переключения режимов Y. Модель динамической регрессии с коммутацией Маркова Mdl моделирует данные. filter использует рекурсивное применение правила Байеса, как в Гамильтоне [3].

пример

FS = filter(Mdl,Y,Name,Value) использует дополнительные параметры, заданные одним или несколькими аргументами пары имя-значение. Например, 'Y0',Y0 инициализирует динамический компонент каждой подмодели с помощью данных ответа предварительной выборки Y0.

пример

[FS,logL] = filter(___) также возвращает предполагаемый источник средств к существованию logL используя любую из комбинаций входных аргументов в предыдущих синтаксисах.

Примеры

свернуть все

Вычислить вероятности отфильтрованного состояния из модели динамической регрессии с переключением по Маркову с двумя состояниями для процесса 1-D отклика. В этом примере для процесса генерации данных (DGP) используются произвольные значения параметров.

Создание полностью заданной модели для DGP

Создайте двухстатную дискретно-временную модель цепи Маркова для механизма переключения.

P = [0.9 0.1; 0.2 0.8];
mc = dtmc(P);

mc является полностью указанным dtmc объект.

Для каждого состояния создайте модель AR (0) (только константа) для процесса ответа. Сохраните модели в векторе.

mdl1 = arima('Constant',2,'Variance',3);
mdl2 = arima('Constant',-2,'Variance',1);
mdl = [mdl1; mdl2];

mdl1 и mdl2 полностью указаны arima объекты.

Создание модели динамической регрессии с коммутацией Маркова из механизма коммутации mc и вектор подмоделей mdl.

Mdl = msVAR(mc,mdl);

Mdl является полностью указанным msVAR объект.

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

filter требует ответов для вычисления вероятности отфильтрованного состояния. Генерируют один случайный отклик и путь состояния, оба длиной 30, из DGP.

rng(1000); % For reproducibility
[y,~,sp] = simulate(Mdl,30);

Вероятности вычисленного состояния

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

fs = filter(Mdl,y);
ss = smooth(Mdl,y);

fs и ss представляют собой матрицы 30 на 2 вероятности отфильтрованного и сглаженного состояния соответственно для каждого периода в горизонте моделирования. Хотя вероятность отфильтрованного состояния в момент времени t (fs(t,:)) основаны на данных ответа в течение времени t (y(1:t)), сглаженные вероятности состояния в момент времени t (ss(t,:)) основаны на всех наблюдениях.

Постройте график моделируемого пути состояния и вероятности отфильтрованного и сглаженного состояния на одном и том же графике.

figure
plot(sp,'m')
hold on
plot(fs(:,2),'r')
plot(ss(:,2),'g')
yticks([0 1 2])
xlabel("Time")
title("Observed States with Estimated State Probabilities")
legend({'Simulated states','Filtered probability: state 2',...
    'Smoothed probability: state 2'})
hold off

Figure contains an axes. The axes with title Observed States with Estimated State Probabilities contains 3 objects of type line. These objects represent Simulated states, Filtered probability: state 2, Smoothed probability: state 2.

Рассмотрим модель динамической регрессии послевоенного реального роста ВВП США с переключением на два государства. Модель имеет оценки параметров, представленные в [1].

Создание модели динамической регрессии с коммутацией Маркова

Создайте полностью заданную дискретную модель цепи Маркова, описывающую механизм переключения режимов. Маркировать режимы.

P = [0.92 0.08; 0.26 0.74];
mc = dtmc(P,'StateNames',["Expansion" "Recession"]);

Создайте отдельные, полностью определенные модели AR (0) для двух режимов .

sigma = 3.34; % Homoscedastic models across states
mdl1 = arima('Constant',4.62,'Variance',sigma^2);
mdl2 = arima('Constant',-0.48,'Variance',sigma^2);
mdl = [mdl1 mdl2];

Создание модели динамической регрессии с коммутацией Маркова из механизма коммутации mc и подмодели, зависящие от состояния mdl.

Mdl = msVAR(mc,mdl);

Mdl является полностью указанным msVAR объект.

Загрузка и предварительная обработка данных

Загрузите набор данных ВВП США.

load Data_GDP

Data содержит квартальные измерения реального ВВП США в период 1947: Q1-2005: Q2. Период интереса в [1] - 1947:Q2-2004:Q2. Для получения дополнительной информации о наборе данных введитеDescription в командной строке.

Преобразуйте данные в годовой ряд скоростей, выполнив следующие действия:

  1. Преобразование данных в квартальную ставку в течение расчетного периода

  2. Ежегодное исчисление квартальных ставок

qrate = diff(Data(2:230))./Data(2:229); % Quarterly rate
arate = 100*((1 + qrate).^4 - 1);       % Annualized rate

Преобразование отбрасывает первое наблюдение.

Вероятности отфильтрованного состояния вычислений

Вычислить вероятности отфильтрованного состояния для данных и модели.

FS = filter(Mdl,arate);
FS(end,:)
ans = 1×2

    0.9396    0.0604

FS является матрицей вероятности отфильтрованного состояния 228 на 2. Строки соответствуют периодам в данных arate, и столбцы соответствуют режимам.

Постройте график отфильтрованных вероятностей рецессии, как показано на [1], рис. 6.

figure;
plot(dates(3:230),FS(:,2),'r')
datetick('x')
title('Current Filter Probabilities and NBER Recessions')
recessionplot

Figure contains an axes. The axes with title Current Filter Probabilities and NBER Recessions contains 12 objects of type line, patch.

Вычислить вероятности сглаженного состояния

Вычислите сглаженные вероятности состояния, а затем постройте график сглаженных вероятностей рецессии, как показано на [1], рис. 6.

SS = smooth(Mdl,arate);

figure
plot(dates(3:230),SS(:,2),'r')
datetick('x')
recessionplot
title('Full-Sample Smoothed Probabilities and NBER Recessions')

Figure contains an axes. The axes with title Full-Sample Smoothed Probabilities and NBER Recessions contains 12 objects of type line, patch.

Вычислите вероятности отфильтрованного состояния из модели динамической регрессии с коммутацией по Маркову с тремя состояниями для 2-D процесса отклика VARX. В этом примере для DGP используются произвольные значения параметров.

Создание полностью заданной модели для DGP

Создайте модель цепи Маркова с тремя состояниями дискретного времени для механизма переключения.

P = [5 1 1; 1 5 1; 1 1 5];
mc = dtmc(P);

mc является полностью указанным dtmc объект. dtmc нормализует строки P чтобы они суммировали 1.

Для каждого состояния создайте полностью заданную модель VARX (0) (только константа и матрица коэффициентов регрессии) для процесса отклика. Укажите различные векторы констант в моделях. Задайте один и тот же коэффициент регрессии для двух регрессоров и укажите одну и ту же ковариационную матрицу. Сохраните модели VARX в векторе.

% Constants
C1 = [1;-1];
C2 = [3;-3];
C3 = [5;-5];

% Regression coefficient
Beta = [0.2 0.1;0 -0.3];

% Covariance matrix
Sigma = [1.8 -0.4; -0.4 1.8];

% VARX submodels
mdl1 = varm('Constant',C1,'Beta',Beta,...
    'Covariance',Sigma);
mdl2 = varm('Constant',C2,'Beta',Beta,...
    'Covariance',Sigma);
mdl3 = varm('Constant',C3,'Beta',Beta,...
    'Covariance',Sigma);

mdl = [mdl1; mdl2; mdl3];

mdl содержит три полностью указанных varm объекты модели.

Для DGP создайте полностью заданную модель динамической регрессии с коммутацией Маркова из механизма коммутации mc и подмодели mdl.

Mdl = msVAR(mc,mdl);

Mdl является полностью указанным msVAR модель.

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

Моделирование данных для двух экзогенных рядов путем генерации 30 наблюдений из стандартного 2-D гауссова распределения.

rng(1) % For reproducibility
X = randn(30,2);

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

[Y,~,SP] = simulate(Mdl,30,'X',X);

Y является матрицей 30 на 2 одного моделируемого пути отклика. SP является вектором 30 на 1 одного моделируемого тракта состояния.

Вероятности вычисленного состояния

Вычислить отфильтрованные и сглаженные вероятности состояния из DGP с учетом смоделированных данных ответа.

FS = filter(Mdl,Y,'X',X);
SS = smooth(Mdl,Y,'X',X);

FS и SS представляют собой матрицы 30 на 2 вероятности отфильтрованного и сглаженного состояния соответственно для каждого периода в горизонте моделирования.

Постройте график траектории моделируемого состояния и вероятности отфильтрованного и сглаженного состояния на вложенных графиках на том же рисунке.

figure
subplot(3,1,1)
plot(SP,'m')
yticks([1 2 3])
legend({'Simulated states'})
subplot(3,1,2)
plot(FS,'--')
legend({'Filtered s1','Filtered s2','Filtered s3'})
subplot(3,1,3)
plot(SS,'-')
legend({'Smoothed s1','Smoothed s2','Smoothed s3'})

Figure contains 3 axes. Axes 1 contains an object of type line. This object represents Simulated states. Axes 2 contains 3 objects of type line. These objects represent Filtered s1, Filtered s2, Filtered s3. Axes 3 contains 3 objects of type line. These objects represent Smoothed s1, Smoothed s2, Smoothed s3.

Рассмотрим данные в Вычислить отфильтрованные вероятности рецессии, но предположим, что период интереса является 1960:Q1-2004:Q2. Также рассмотрите возможность добавления авторегрессионного члена в каждую подмодель.

Создание частично заданной модели для оценки

Создайте частично заданную модель динамической регрессии с коммутацией Маркова для оценки. Укажите подмодели AR (1).

P = NaN(2);
mc = dtmc(P,'StateNames',["Expansion" "Recession"]);
mdl = arima(1,0,0);
Mdl = msVAR(mc,[mdl; mdl]);

Поскольку подмоделями являются AR (1), для каждой из них требуется одно предварительное наблюдение, чтобы инициализировать свой динамический компонент для оценки .

Создание полностью заданной модели, содержащей начальные значения

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

mc0 = dtmc(0.5*ones(2),'StateNames',["Expansion" "Recession"]);
submdl01 = arima('Constant',1,'Variance',1,'AR',0.001);
submdl02 = arima('Constant',-1,'Variance',1,'AR',0.001);
Mdl0 = msVAR(mc0,[submdl01; submdl02]);

Загрузка и предварительная обработка данных

Загрузите данные. Преобразуйте весь набор в годовой ряд скоростей.

load Data_GDP
qrate = diff(Data)./Data(1:(end - 1)); 
arate = 100*((1 + qrate).^4 - 1);

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

dates = datetime(dates(2:end),'ConvertFrom','datenum',...
    'Format','yyyy:QQQ','Locale','en_US');
estPrd = datetime(["1960:Q2" "2004:Q2"],'InputFormat','yyyy:QQQ',...
    'Format','yyyy:QQQ','Locale','en_US');
idxEst = isbetween(dates,estPrd(1),estPrd(2));
idxPre = dates < (estPrd(1)); 

Модель оценки

Подгонка модели к данным выборки оценки. Укажите предварительное измерение.

arate0 = arate(idxPre);
arateEst = arate(idxEst);
EstMdl = estimate(Mdl,Mdl0,arateEst,'Y0',arate0);

EstMdl является полностью указанным msVAR объект.

Вероятности вычисленного состояния

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

FS = filter(EstMdl,arateEst,'Y0',arate0);
SS = smooth(EstMdl,arateEst,'Y0',arate0);

figure;
subplot(2,1,1)
plot(dates(idxEst),FS(:,2),'r')
title("Current Filter Probabilities and NBER Recessions")
recessionplot
subplot(2,1,2)
plot(dates(idxEst),SS(:,2),'r')
title("Full-Sample Smoothed Probabilities and NBER Recessions")
recessionplot

Figure contains 2 axes. Axes 1 with title Current Filter Probabilities and NBER Recessions contains 8 objects of type line, patch. Axes 2 with title Full-Sample Smoothed Probabilities and NBER Recessions contains 8 objects of type line, patch.

Рассмотрим модель и данные в разделе Вычислить отфильтрованные вероятности рецессии.

Создайте полностью заданную модель переключения Маркова.

P = [0.92 0.08; 0.26 0.74];
mc = dtmc(P,'StateNames',["Expansion" "Recession"]);

sigma = 3.34;
mdl1 = arima('Constant',4.62,'Variance',sigma^2);
mdl2 = arima('Constant',-0.48,'Variance',sigma^2);
mdl = [mdl1; mdl2];

Mdl = msVAR(mc,mdl);

Загрузка и предварительная обработка данных.

load Data_GDP

qrate = diff(Data(2:230))./Data(2:229); 
arate = 100*((1 + qrate).^4 - 1);       

Вычислите вероятности отфильтрованного состояния и логику для данных и модели.

[FS,logL] = filter(Mdl,arate);
logL
logL = -640.3016

Входные аргументы

свернуть все

Полностью заданная модель динамической регрессии с коммутацией Маркова, заданная как msVAR объект модели, возвращенный msVAR или estimate. Свойства полностью указанного объекта модели не содержат NaN значения.

Наблюдаемые данные ответа, указанные как numObsоколо-numSeries числовая матрица.

numObs - размер выборки. numSeries - количество переменных ответа (Mdl.NumSeries).

Строки соответствуют наблюдениям, а последняя строка содержит последнее наблюдение. Столбцы соответствуют отдельным переменным ответа.

Y представляет продолжение последовательности ответов предварительной выборки в Y0.

Типы данных: double

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: 'Y0',Y0,'X',X инициализирует динамический компонент каждой подмодели в Mdl с использованием данных предварительного примера ответа Y0и включает компонент линейной регрессии в каждой подмодели, состоящей из данных предиктора в X и заданные коэффициенты регрессии.

Предварительные данные ответа, указанные как пара, разделенная запятыми, состоящая из 'Y0' и numPreSampleObsоколо-numSeries числовая матрица.

Количество предварительных наблюдений numPreSampleObs должно быть достаточным для инициализации членов AR всех подмоделей. Если numPreSampleObs превышает порядок AR любого состояния, filter использует последние наблюдения. По умолчанию Y0 - начальный сегмент Y, что снижает эффективный размер выборки.

Типы данных: double

Вероятности начального состояния, указанные как пара, разделенная запятыми, состоящая из 'S0' и неотрицательный числовой вектор длины numStates.

filter нормализует S0 для создания дистрибутива.

По умолчанию S0 является стационарным распределением, вычисленным asymptotics.

Пример: 'S0',[0.2 0.2 0.6]

Пример: 'S0',[0 1] задает состояние 2 в качестве начального состояния.

Типы данных: double

Данные предиктора, используемые для оценки регрессионных компонентов во всех подмоделях Mdl, указанная как пара, разделенная запятыми, состоящая из 'X' и числовую матрицу или вектор ячейки из цифровых матриц.

Чтобы использовать подмножество одинаковых предикторов в каждом состоянии, укажите X в виде матрицы с numPreds столбцы и по крайней мере numObs строк. Столбцы соответствуют различным переменным предиктора. Подмодели используют начальные столбцы связанной матрицы по порядку вплоть до числа предикторов подмодели. Количество столбцов в Beta имущество Mdl.SubModels(j) определяет количество экзогенных переменных в компоненте регрессии подмодели j. Если число строк превышает numObs, то filter использует последние наблюдения.

Для использования различных предикторов в каждом состоянии укажите вектор ячейки таких матриц длиной numStates.

По умолчанию filter игнорирует компоненты регрессии в Mdl.

Типы данных: double

Выходные аргументы

свернуть все

Вероятности отфильтрованного состояния, возвращенные как numObsоколо-numStates неотрицательная числовая матрица.

Предполагаемый источник данных ответа Y, возвращается в виде числового скаляра.

Алгоритмы

filter итеративно исходит из начальной оценки распределения состояний S0 к оценкам в FS используя прогнозы из текущей истории данных на каждом временном шаге. smooth уточнение текущих оценок распределения состояний, которые filter создается путем итерации назад из полной истории образца Y.

Ссылки

[1] Chauvet, M. и Дж. Д. Гамильтон. «Переломные моменты бизнес-цикла знакомств». В нелинейном анализе бизнес-циклов (вклад в экономический анализ, том 276). (К. Милас, П. Ротман и Д. ван Дийк, ред.). Амстердам: Emerald Group Publishing Limited, 2006.

[2] Гамильтон, Дж. Д. «Новый подход к экономическому анализу нестационарных временных рядов и бизнес-цикла». Эконометрика. Том 57, 1989, стр. 357-384.

[3] Гамильтон, Дж. Д. «Анализ временных рядов, подверженных изменениям в режиме». Журнал эконометрики. Том 45, 1990, стр. 39-70.

[4] Гамильтон, Джеймс Д. Анализ временных рядов. Принстон, Нью-Джерси: Princeton University Press, 1994.

См. также

Объекты

Функции

Представлен в R2019b