Фильтрованный вывод действующих скрытых состояний в переключающих Маркова данных о динамической регрессии
возвращает отфильтрованные вероятности состояния FS
= filter(Mdl
,Y
)FS
от проведения оптимального условного вывода вероятностей действующих скрытых состояний в переключающих режим данных Y
. Переключающая Маркова модель Mdl
динамической регрессии моделирует данные.
filter
использует рекурсивное приложение правила Бейеса, как в Гамильтоне [3].
дополнительные опции использования заданы одним или несколькими аргументами пары "имя-значение". Например, FS
= filter(Mdl
,Y
,Name,Value
)'Y0',Y0
инициализирует динамический компонент каждой подмодели при помощи преддемонстрационных данных об ответе Y0
.
Вычислите отфильтрованные вероятности состояния из переключающей Маркова модели динамической регрессии с двумя состояниями для 1D процесса ответа. Этот пример использует произвольные значения параметров для генерирующего данные процесса (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
Считайте переключающую Маркова модель динамической регрессии с двумя состояниями послевоенных США действительным темпом роста GDP. Модели представили оценки параметра в [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
объект.
Загрузите и предварительно обработайте данные
Загрузите набор данных GDP США.
load Data_GDP
Data
содержит ежеквартальные измерения США действительный GDP в период 1947:Q1–2005:Q2. Период интереса в [1] является 1947:Q2–2004:Q2. Для получения дополнительной информации о наборе данных введите Description
в командной строке.
Преобразуйте данные к ряду годового показателя:
Преобразование данных к ежеквартальному уровню в период оценки
Пересчитывание на год ежеквартальных уровней
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
Вычислите сглаживавшие вероятности состояния
Вычислите сглаживавшие вероятности состояния, и затем постройте сглаживавшие вероятности рецессии как в [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')
Вычислите отфильтрованные вероятности состояния из переключающей Маркова модели динамической регрессии с тремя состояниями для 2D процесса ответа 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 наблюдений от стандартного 2D Распределения Гаусса.
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'})
Полагайте, что данные в Вычисляют Фильтрованные Вероятности Рецессии, но принимают, что период интереса является 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
Рассмотрите модель, и данные в Вычисляют Фильтрованные Вероятности Рецессии.
Создайте полностью заданную переключающую Маркова модель.
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
Y
— Наблюдаемые данные об ответеНаблюдаемые данные об ответе в виде 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'
— Преддемонстрационные данные об ответеПреддемонстрационные данные об ответе в виде разделенной запятой пары, состоящей из 'Y0'
и numPreSampleObs
- numSeries
числовая матрица.
Количество преддемонстрационных наблюдений numPreSampleObs
должно быть достаточным, чтобы инициализировать условия AR всех подмоделей. Если numPreSampleObs
превышает порядок AR любого состояния, filter
использует последние наблюдения. По умолчанию, Y0
начальный сегмент Y
, который уменьшает эффективный объем выборки.
Типы данных: double
'S0'
— Вероятности начального состоянияВероятности начального состояния в виде разделенной запятой пары, состоящей из 'S0'
и неотрицательный числовой вектор из длины numStates
.
filter
нормирует S0
произвести распределение.
По умолчанию, S0
установившееся распределение, вычисленное asymptotics
.
Пример: 'S0',[0.2 0.2 0.6]
Пример: 'S0',[0 1]
задает состояние 2 как начальное состояние.
Типы данных: double
'X'
— Данные о предиктореДанные о предикторе раньше оценивали компоненты регрессии во всех подмоделях Mdl
В виде разделенной запятой пары, состоящей из 'X'
и числовая матрица или вектор ячейки из числовых матриц.
Чтобы использовать подмножество тех же предикторов в каждом состоянии, задайте X
как матрица с numPreds
столбцы и по крайней мере numObs
'Строки' . Столбцы соответствуют отличным переменным предикторам. Подмодели используют первоначальные столбцы связанной матрицы, в порядке, до количества предикторов подмодели. Количество столбцов в Beta
свойство Mdl. SubModels (
определяет количество внешних переменных в компоненте регрессии подмодели j
)
. Если количество строк превышает j
numObs
то filter
использует последние наблюдения.
Чтобы использовать различные предикторы в каждом состоянии, задайте вектор ячейки из таких матриц с длиной numStates
.
По умолчанию, filter
игнорирует компоненты регрессии в Mdl
.
Типы данных: double
FS
— Фильтрованные вероятности состоянияФильтрованные вероятности состояния, возвращенные как numObs
- numStates
неотрицательная числовая матрица.
logL
— Предполагаемая логарифмическая правдоподобностьПредполагаемая логарифмическая правдоподобность данных об ответе Y
, возвращенный в виде числа.
filter
доходы итеративно от первоначальной оценки распределенности S0
к оценкам в FS
при помощи прогнозов из текущей истории данных на каждом временном шаге. smooth
совершенствовал текущие оценки распределенности это filter
производит путем итерации назад от полной демонстрационной истории Y
.
[1] Chauvet, M. и Дж. Д. Гамильтон. "Датируя Поворотные моменты Делового цикла". В Нелинейном Анализе Деловых циклов (Вклады в Экономический анализ, Объем 276). C. Милас, П. Ротмен, и Д. ван Дейк, редакторы). Амстердам: Emerald Group Publishing Limited, 2006.
[2] Гамильтон, J. D. "Новый Подход к Экономическому анализу Неустановившихся Временных рядов и Делового цикла". Econometrica. Издание 57, 1989, стр 357–384.
[3] Гамильтон, J. D. "Анализ Временных рядов Согласно Изменениям в Режиме". Журнал Эконометрики. Издание 45, 1990, стр 39–70.
[4] Гамильтон, Джеймс. D. Анализ Временных Рядов. Принстон, NJ: Издательство Принстонского университета, 1994.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.