Прогнозируйте выборки из модели динамической регрессии переключения Маркова
возвращает оптимальные прогнозы точек 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 случайным путем откликов.
Вычисление прогнозов точек Монте-Карло
Обработайте первые 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-by- 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-by- numSeries числовая матрица.
Если forecast возвращает только YF, тогда прогнозы точек оптимальны. В противном случае, forecast использует симуляцию Монте-Карло, чтобы оценить прогнозы точек.
EstCov - Прогнозные ковариации ошибокПрогнозируйте ковариации ошибок, возвращенные как числовой вектор-столбец или числовой массив.
Если подмодели Mdl.SubModels представление одномерных моделей ARX, EstCov является numPeriods-by-1 вектор. Если Mdl.SubModels представляют многомерные модели VARX, EstCov является numSeries-by- numSeries-by- numPeriods массив.
forecast выполняет симуляцию Монте-Карло для вычисления EstCov.
Hamilton [2] обеспечивает статистически оптимальный, одноэтапный прогноз точки YF для модели динамической регрессии с переключением Маркова. forecast вычисляет YF итеративно к горизонту прогноза при вызове с одним выходом. Нелинейность модели динамической регрессии Маркова-переключения приводит к ненормальным ошибкам прогноза, которые усложняют прогнозы интервала и плотности [3]. В результате, forecast переключается на методы Монте-Карло, когда возвращается EstCov.
[1] Шове, М. и Дж. Д. Гамильтон. «Поворотные точки делового цикла знакомств». В нелинейном анализе бизнес-циклов (вклад в экономический анализ, том 276). (C. Milas, P. Rothman, and D. van Dijk, eds.). Амстердам: Emerald Group Publishing Limited, 2006.
[2] Гамильтон, Дж. Д. «Анализ временных рядов, подверженных изменениям в режиме». Журнал эконометрики. Том 45, 1990, стр. 39-70.
[3] Krolzig, H.-M. Марковско-переключательные векторные авторегрессии. Берлин: Спрингер, 1997.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.