Прогнозные пути выборки из модели динамической регрессии с коммутацией Маркова
возвращает оптимальные прогнозы по точкам YF = forecast(Mdl,Y,numPeriods)YF полностью заданной модели динамической регрессии с коммутацией Маркова Mdl на горизонте прогноза длины numPeriods. Прогнозируемые ответы представляют собой продолжение данных ответов Y.
использует дополнительные параметры, заданные одним или несколькими аргументами пары имя-значение. Например, YF = forecast(Mdl,Y,numPeriods,Name,Value)'X',X указывает экзогенные данные в горизонте прогноза для оценки компонентов регрессии в модели.
Прогнозирование пути отклика на основе модели динамической регрессии с переключением по Маркову с двумя состояниями для процесса 1-D отклика. В этом примере для процесса генерации данных (DGP) используются произвольные значения параметров.
Создание полностью заданной модели для DGP
Создайте двухстатную дискретно-временную модель цепи Маркова, описывающую механизм переключения режимов. Маркировать режимы.
P = [0.9 0.1; 0.3 0.7]; mc = dtmc(P,'StateNames',["Expansion" "Recession"]);
mc является полностью указанным dtmc объект.
Для каждого режима используйте arima для создания модели AR, которая описывает процесс ответа в режиме. Сохраните подмодели в векторе.
mdl1 = arima('Constant',5,'AR',[0.3 0.2],... 'Variance',2); mdl2 = arima('Constant',-5,'AR',0.1,... 'Variance',1); mdl = [mdl1; mdl2];
mdl1 и mdl2 полностью указаны arima объекты.
Создание модели динамической регрессии с коммутацией Маркова из механизма коммутации mc и вектор подмоделей mdl.
Mdl = msVAR(mc,mdl);
Mdl является полностью указанным msVAR объект.
Моделирование данных ответа от DGP
прогноз требует достаточного количества данных до горизонта прогноза для инициализации модели. Смоделировать 120 наблюдений из DGP.
rng(1); % For reproducibility
y = simulate(Mdl,120);y - случайный путь ответов 120 на 1.
Расчет оптимальных прогнозов точек
Обработайте первые 100 наблюдений смоделированных данных ответа как предварительный образец для прогноза, а последние 20 наблюдений - как выборку с удержанием.
idx0 = 1:100; idx1 = 101:120; y0 = y(idx0); y1 = y(idx1);
Вычислите оптимальные прогнозы на 1-20 шагов вперед по модели.
yf = forecast(Mdl,y0,20);
yf является вектором оптимальных точечных прогнозов 20 на 1.
Постройте график смоделированных данных ответа и прогнозов.
figure hold on plot(idx0,y0,'b'); h = plot(idx1,y1,'b--'); h1 = plot(idx1,yf,'r'); yfill = [ylim fliplr(ylim)]; xfill = [idx0(end) idx0(end) idx1(end) idx1(end)]; fill(xfill,yfill,'k','FaceAlpha',0.05) legend([h h1],["Actual" "Optimal"],'Location','NorthWest') title('Forecasts') hold off

Рассмотрим модель в разделе Расчет прогнозов оптимальных точек.
Создание полностью заданной модели для DGP
Создайте полностью заданную модель динамической регрессии с коммутацией Маркова.
P = [0.9 0.1; 0.3 0.7]; mc = dtmc(P,'StateNames',["Expansion" "Recession"]); mdl1 = arima('Constant',5,'AR',[0.3 0.2],... 'Variance',2); mdl2 = arima('Constant',-5,'AR',0.1,... 'Variance',1); mdl = [mdl1; mdl2]; Mdl = msVAR(mc,mdl);
Моделирование данных ответа от DGP
forecast требуется достаточное количество данных до горизонта прогноза для инициализации модели. Смоделировать 120 наблюдений из DGP.
rng(10); % For reproducibility
y = simulate(Mdl,120);y - случайный путь ответов 120 на 1.
Расчет прогнозов Monte Carlo Point
Обработайте первые 100 наблюдений смоделированных данных ответа как предварительный образец для прогноза, а последние 20 наблюдений - как выборку с удержанием.
idx0 = 1:100; idx1 = 101:120; y0 = y(idx0); y1 = y(idx1);
Вычислите оптимальные прогнозы на 1-20 шагов вперед по модели.
yf1 = forecast(Mdl,y0,20);
yf2 является вектором оптимальных точечных прогнозов 20 на 1.
Вычислите прогнозы точек Монте-Карло на 1-20 шагов вперед, вернув предполагаемые отклонения ошибок прогноза.
[yf2,estVar] = forecast(Mdl,y0,20);
yf2 является вектором 20 на 1 точечных прогнозов Монте-Карло. estVAR является вектором 20 на 1 соответствующих предполагаемых отклонений ошибки прогноза.
Постройте график смоделированных данных ответа, прогнозов и 95% интервалов прогноза с использованием оценок Монте-Карло.
figure hold on plot(idx0,y0,'b'); h = plot(idx1,y1,'b--'); h1 = plot(idx1,yf1,'r'); h2 = plot(idx1,yf2,'m'); ciu = yf2 + 1.96*sqrt(estVar); % Upper 95% confidence level cil = yf2 - 1.96*sqrt(estVar); % Lower 95% confidence level plot(idx1,ciu,'m-.'); plot(idx1,cil,'m-.'); yfill = [ylim,fliplr(ylim)]; xfill = [idx0(end) idx0(end) idx1(end) idx1(end)]; fill(xfill,yfill,'k','FaceAlpha',0.05) legend([h h1 h2],["Actual" "Optimal" "Estimated"],... 'Location',"NorthWest") title("Point and Interval Forecasts") hold off

forecast оценивает прогнозы и соответствующие отклонения ошибок прогноза путем моделирования Монте-Карло. Можно настроить количество путей для выборки, указав 'NumPaths' аргумент пары имя-значение. Рассмотрим модель в разделе Расчет прогнозов оптимальных точек.
Создайте полностью заданную модель динамической регрессии с коммутацией Маркова.
P = [0.9 0.1; 0.3 0.7]; mc = dtmc(P,'StateNames',["Expansion" "Recession"]); mdl1 = arima('Constant',5,'AR',[0.3 0.2],... 'Variance',2); mdl2 = arima('Constant',-5,'AR',0.1,... 'Variance',1); mdl = [mdl1; mdl2]; Mdl = msVAR(mc,mdl);
Смоделировать 100 наблюдений из DGP.
rng(10); % For reproducibility
y = simulate(Mdl,100);Вычислите прогнозы точек Монте-Карло на 1-20 шагов вперед, вернув предполагаемые отклонения ошибок прогноза. Укажите 1000 путей для моделирования Монте-Карло. Обработка наблюдений y в качестве предварительного примера для прогноза.
[yf,estVar] = forecast(Mdl,y,20,'NumPaths',1000);yf является вектором 20 на 1 точечных прогнозов Монте-Карло. estVAR является вектором 20 на 1 соответствующих предполагаемых отклонений ошибки прогноза.
Рассмотрим модель динамической регрессии послевоенного реального роста ВВП США с переключением на два государства. Модель имеет оценки параметров, представленные в [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 объект.
Загрузка и предварительная обработка данных
forecast для инициализации модели требуются наблюдения. Загрузите набор данных ВВП США.
load Data_GDPData содержит квартальные измерения реального ВВП США в период 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
Преобразование отбрасывает первое наблюдение.
Прогнозные показатели ВВП США
Прогнозирование модели на 12-квартальный горизонт прогноза. Инициализируйте модель, предоставив годовой ряд ставок.
numPeriods = 12; yf = forecast(Mdl,arate,numPeriods);
yf является вектором прогнозов модели 12 на 1. yf(j) является j-прогноз оптимального точечного прогноза.
Постройте график наблюдаемого годового показателя ВВП от 1980 года с использованием модельных прогнозов.
dates = datetime(dates(3:230),'ConvertFrom','datenum',... 'Format','yyyy:QQQ','Locale','en_US'); dt1980Q1 = datetime("1980:Q1",'InputFormat','yyyy:QQQ',... 'Locale','en_US'); % Specify US date format for 1980:Q1. idx = dates >= dt1980Q1; figure; plot(dates(idx),arate(idx),'k',... dates(end) + calquarters(1:numPeriods),yf,'r--') xlabel("Year") ylabel("GDP (Annualized Rate)") recessionplot legend("Observations","Forecasts")

Вычислите оптимальные и оцененные прогнозы и соответствующие ковариационные матрицы ошибок прогноза из модели динамической регрессии с переключением по Маркову с тремя состояниями для 2-D процесса отклика VARX. В этом примере для DGP используются произвольные значения параметров.
Создание полностью заданной модели для DGP
Создайте модель цепи Маркова с тремя состояниями дискретного времени для механизма переключения.
P = [10 1 1; 1 10 1; 1 1 10]; mc = dtmc(P);
mc является полностью указанным dtmc объект. dtmc нормализует строки P чтобы они суммировали 1.
Для каждого режима используйте varm для создания модели VAR, описывающей процесс ответа в режиме. Укажите все значения параметров.
% Constants C1 = [1;-1]; C2 = [2;-2]; C3 = [3;-3]; % Autoregression coefficients AR1 = {}; AR2 = {[0.5 0.1; 0.5 0.5]}; AR3 = {[0.25 0; 0 0] [0 0; 0.25 0]}; % Regression coefficients Beta1 = [1;-1]; Beta2 = [2 2;-2 -2]; Beta3 = [3 3 3;-3 -3 -3]; % Innovations covariances Sigma1 = [1 -0.1; -0.1 1]; Sigma2 = [2 -0.2; -0.2 2]; Sigma3 = [3 -0.3; -0.3 3]; % VARX submodels mdl1 = varm('Constant',C1,'AR',AR1,'Beta',Beta1,'Covariance',Sigma1); mdl2 = varm('Constant',C2,'AR',AR2,'Beta',Beta2,'Covariance',Sigma2); mdl3 = varm('Constant',C3,'AR',AR3,'Beta',Beta3,'Covariance',Sigma3); mdl = [mdl1; mdl2; mdl3];
mdl содержит три полностью указанных varm объекты модели.
Для DGP создайте полностью заданную модель динамической регрессии с коммутацией Маркова из механизма коммутации mc и подмодели mdl.
Mdl = msVAR(mc,mdl);
Mdl является полностью указанным msVAR модель.
Прогнозная модель, игнорирующая компонент регрессии
Если внешние данные не предоставляются, simulate и forecast игнорировать компоненты регрессии в подмоделях. forecast требуется достаточное количество данных до горизонта прогноза для инициализации модели. Смоделировать 120 наблюдений из DGP.
rng('default'); % For reproducibility Y = simulate(Mdl,120);
Y - матрица 120 на 2 смоделированных откликов. Строки соответствуют точкам времени, а столбцы - переменным в системе.
Обработайте первые 100 наблюдений смоделированных данных ответа как предварительный образец для прогноза, а последние 20 наблюдений - как выборку с удержанием.
idx0 = 1:100; idx1 = 101:120; Y0 = Y(idx0,:); % Forecast sample Y1 = Y(idx1,:); % Holdout sample
Вычислите оптимальные и расчетные прогнозы на 1-20 шагов вперед по модели. Вычислить ковариационные матрицы ошибок прогноза, соответствующие расчетным прогнозам.
YF1 = forecast(Mdl,Y0,20); [YF2,EstCov] = forecast(Mdl,Y0,20);
YF1 и YF2 представляют собой матрицы 20 на 2 оптимального и расчетного прогнозов соответственно. EstCov множество ковариаций ошибки прогноза 2 на 2 на 20.
Извлеките отклонения ошибок прогноза для каждого ответа для каждого периода в горизонте прогноза.
estVar1(:) = EstCov(1,1,:); estVar2(:) = EstCov(2,2,:);
estVar1 и estVar2 представляют собой векторы отклонений ошибок прогноза 1 на 20.
Постройте график данных, прогнозов и 95% интервалов прогноза каждой переменной на отдельных вложенных графиках.
figure subplot(2,1,1) hold on plot(idx0,Y0(:,1),'b'); h = plot(idx1,Y1(:,1),'b--'); h1 = plot(idx1,YF1(:,1),'r'); h2 = plot(idx1,YF2(:,1),'m'); ciu = YF2(:,1) + 1.96*sqrt(estVar1'); % Upper 95% confidence level cil = YF2(:,1) - 1.96*sqrt(estVar1'); % Lower 95% confidence level plot(idx1,ciu,'m-.'); plot(idx1,cil,'m-.'); yfill = [ylim,fliplr(ylim)]; xfill = [idx0(end) idx0(end) idx1(end) idx1(end)]; fill(xfill,yfill,'k','FaceAlpha',0.05) legend([h h1 h2],["Actual" "Optimal" "Estimated"],... 'Location',"NorthWest") title("Point and Interval Forecasts: Series 1") hold off subplot(2,1,2) hold on plot(idx0,Y0(:,2),'b'); h = plot(idx1,Y1(:,2),'b--'); h1 = plot(idx1,YF1(:,2),'r'); h2 = plot(idx1,YF2(:,2),'m'); ciu = YF2(:,2) + 1.96*sqrt(estVar2'); % Upper 95% confidence level cil = YF2(:,2) - 1.96*sqrt(estVar2'); % Lower 95% confidence level plot(idx1,ciu,'m-.'); plot(idx1,cil,'m-.'); yfill = [ylim,fliplr(ylim)]; xfill = [idx0(end) idx0(end) idx1(end) idx1(end)]; fill(xfill,yfill,'k','FaceAlpha',0.05) legend([h h1 h2],["Actual" "Optimal" "Estimated"],... 'Location',"NorthWest") title("Point and Interval Forecasts: Series 2") hold off

Прогнозная модель, включающая компонент регрессии
Моделирование экзогенных данных для трех регрессоров путем генерации 120 случайных наблюдений из 3-D стандартного гауссова распределения.
X = randn(120,3);
Смоделировать 120 наблюдений из DGP. Укажите экзогенные данные для компонента регрессии.
rng('default') Y = simulate(Mdl,120,'X',X);
Обработайте первые 100 наблюдений смоделированного ответа и экзогенных данных в качестве предварительной выборки для прогноза и обработайте последние 20 наблюдений как выборку с удержанием.
idx0 = 1:100; idx1 = 101:120; Y0 = Y(idx0,:); Y1 = Y(idx1,:); X1 = X(idx1,:);
Вычислите оптимальные и расчетные прогнозы на 1-20 шагов вперед по модели. Вычислить ковариационные матрицы ошибок прогноза, соответствующие расчетным прогнозам. Укажите экзогенные данные периода прогноза для компонента регрессии.
YF1 = forecast(Mdl,Y0,20,'X',X1); [YF2,EstCov] = forecast(Mdl,Y0,20,'X',X1); estVar1(:) = EstCov(1,1,:); estVar2(:) = EstCov(2,2,:);
Постройте график данных, прогнозов и 95% интервалов прогноза каждой переменной на отдельных вложенных графиках.
figure subplot(2,1,1) hold on plot(idx0,Y0(:,1),'b'); h = plot(idx1,Y1(:,1),'b--'); h1 = plot(idx1,YF1(:,1),'r'); h2 = plot(idx1,YF2(:,1),'m'); ciu = YF2(:,1) + 1.96*sqrt(estVar1'); % Upper 95% confidence level cil = YF2(:,1) - 1.96*sqrt(estVar1'); % Lower 95% confidence level plot(idx1,ciu,'m-.'); plot(idx1,cil,'m-.'); yfill = [ylim,fliplr(ylim)]; xfill = [idx0(end) idx0(end) idx1(end) idx1(end)]; fill(xfill,yfill,'k','FaceAlpha',0.05) legend([h h1 h2],["Actual" "Optimal" "Estimated"],... 'Location',"NorthWest") title("Point and Interval Forecasts: Series 1") hold off subplot(2,1,2) hold on plot(idx0,Y0(:,2),'b'); h = plot(idx1,Y1(:,2),'b--'); h1 = plot(idx1,YF1(:,2),'r'); h2 = plot(idx1,YF2(:,2),'m'); ciu = YF2(:,2) + 1.96*sqrt(estVar2'); % Upper 95% confidence level cil = YF2(:,2) - 1.96*sqrt(estVar2'); % Lower 95% confidence level plot(idx1,ciu,'m-.'); plot(idx1,cil,'m-.'); yfill = [ylim,fliplr(ylim)]; xfill = [idx0(end) idx0(end) idx1(end) idx1(end)]; fill(xfill,yfill,'k','FaceAlpha',0.05) legend([h h1 h2],["Actual" "Optimal" "Estimated"],... 'Location',"NorthWest") title("Point and Interval Forecasts: Series 2") hold off

Mdl - Полностью заданная модель динамической регрессии с коммутацией МарковаmsVAR объект моделиY - Данные ответаДанные ответа, которые предоставляют начальные значения для прогнозов, указанные как numObsоколо-numSeries числовая матрица.
numObs - размер выборки. numSeries - количество переменных ответа (Mdl.NumSeries).
Строки соответствуют наблюдениям, а последняя строка содержит последнее наблюдение. Столбцы соответствуют отдельным переменным ответа.
Прогнозы YF представляют собой продолжение Y.
Типы данных: double
numPeriods - Горизонт прогнозаГоризонт прогноза или количество моментов времени в периоде прогноза, указанное как положительное целое число.
Типы данных: double
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
'X',X использует матрицу X как экзогенные данные в горизонте прогноза для оценки регрессионных компонентов в модели.'S0' - Вероятности начального состоянияНачальные вероятности состояния для прогнозирования, определенные как пара, разделенная запятыми, состоящая из 'S0' и неотрицательный числовой вектор длины numStates. S0 соответствует концу выборки данных ответа Y.
forecast нормализует S0 для создания дистрибутива.
По умолчанию forecast применяется smooth кому Y используя настройки по умолчанию, затем устанавливает S0 к терминальному распределению состояний в данных.
Пример: 'S0',[0.2 0.2 0.6]
Пример: 'S0',[0 1] задает состояние 2 в качестве начального состояния.
Типы данных: double
'X' - Данные предиктораДанные предиктора в горизонте прогноза, используемые для оценки регрессионных компонентов во всех подмоделях Mdl, указанная как пара, разделенная запятыми, состоящая из 'X' и числовую матрицу или вектор ячейки из цифровых матриц. Первая строка X содержит наблюдения в периоде после периода, представленного последним наблюдением в Y.
Чтобы использовать подмножество одинаковых предикторов в каждом состоянии, укажите X в виде матрицы с numPreds столбцы и по крайней мере numPeriods строк. Столбцы соответствуют различным переменным предиктора. Подмодели используют начальные столбцы связанной матрицы по порядку вплоть до числа предикторов подмодели. Количество столбцов в Beta имущество Mdl.SubModels( определяет количество экзогенных переменных в компоненте регрессии подмодели j). Если число строк превышает jnumPeriods, то forecast использует самые ранние наблюдения.
Для использования различных предикторов в каждом состоянии укажите вектор ячейки таких матриц длиной numStates.
По умолчанию forecast игнорирует компоненты регрессии в Mdl.
Типы данных: double
'NumPaths' - Количество генерируемых путей выборки100 (по умолчанию) | положительное целое числоКоличество путей выборки, генерируемых для моделирования, указанное как пара, разделенная запятыми, состоящая из 'NumPaths' и положительное целое число. Если forecast возвращает только YF, игнорирует NumPaths.
Пример: 'NumPaths',1000
Типы данных: double
YF - Точечные прогнозыТочечные прогнозы, возвращенные как numPeriodsоколо-numSeries числовая матрица.
Если forecast возвращает только YF, то точечные прогнозы оптимальны. В противном случае forecast использует моделирование Монте-Карло для оценки точечных прогнозов.
EstCov - Ковариации ошибок прогнозаКовариации ошибок прогноза, возвращаемые в виде вектора числового столбца или числового массива.
Если подмодели Mdl.SubModels представляют одномерные модели ARX, EstCov является numPeriodsвектор -by-1. Если Mdl.SubModels представляют многомерные модели VARX, EstCov является numSeriesоколо-numSeriesоколо-numPeriods массив.
forecast выполняет моделирование Монте-Карло для вычисления EstCov.
Hamilton [2] предоставляет статистически оптимальный прогноз на один шаг вперед YF для модели динамической регрессии с коммутацией Маркова. forecast вычисляет YF итеративно для горизонта прогноза при вызове с одним выводом. Нелинейность модели динамической регрессии с коммутацией Маркова приводит к нестандартным ошибкам прогноза, которые усложняют прогнозирование интервалов и плотности [3]. В результате, forecast переключается на методы Монте-Карло, когда возвращается EstCov.
[1] Chauvet, M. и Дж. Д. Гамильтон. «Переломные моменты бизнес-цикла знакомств». В нелинейном анализе бизнес-циклов (вклад в экономический анализ, том 276). (К. Милас, П. Ротман и Д. ван Дийк, ред.). Амстердам: Emerald Group Publishing Limited, 2006.
[2] Гамильтон, Дж. Д. «Анализ временных рядов, подверженных изменениям в режиме». Журнал эконометрики. Том 45, 1990, стр. 39-70.
[3] Кролциг, Х.-М. Авторегрессии вектора переключения Маркова. Берлин: Спрингер, 1997.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.