Предскажите демонстрационные пути из переключающей Маркова модели динамической регрессии
возвращается оптимальная точка предсказывает YF = forecast(Mdl,Y,numPeriods)YF из полностью заданной переключающей Маркова модели Mdl динамической регрессии по горизонту прогноза длины numPeriods. Предсказанные ответы представляют продолжение данных об ответе Y.
дополнительные опции использования заданы одним или несколькими аргументами пары "имя-значение". Например, YF = forecast(Mdl,Y,numPeriods,Name,Value)'X',X задает внешние данные в горизонте прогноза, чтобы оценить компоненты регрессии в модели.
Предскажите путь к ответу из переключающей Маркова модели динамической регрессии с двумя состояниями для 1D процесса ответа. Этот пример использует произвольные значения параметров в генерирующем данные процессе (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 шагов вперед прогнозы точки Монте-Карло путем возвращения предполагаемых дисперсий ошибки прогноза. Задайте 1 000 демонстрационных путей для симуляции Монте-Карло. Обработайте наблюдения y как предварительная выборка для прогноза.
[yf,estVar] = forecast(Mdl,y,20,'NumPaths',1000);yf 20 1 вектор прогнозов точки Монте-Карло. estVAR 20 1 вектор соответствующих предполагаемых отклонений ошибки прогноза.
Считайте переключающую Маркова модель динамической регрессии с двумя состояниями послевоенных США действительным темпом роста 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 объект.
Загрузите и предварительно обработайте данные
forecast требует, чтобы наблюдения инициализировали модель. Загрузите набор данных GDP США.
load Data_GDPData содержит ежеквартальные измерения США действительный 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
Преобразование пропускает первое наблюдение.
Предскажите уровни GDP США
Предскажите модель по 12 горизонтам прогноза четверти. Инициализируйте модель путем предоставления ряда годового показателя.
numPeriods = 12; yf = forecast(Mdl,arate,numPeriods);
yf 12 1 вектор прогнозов модели. yf(j) j- неродной вперед оптимальная точка предсказана.
Постройте наблюдаемый пересчитанный на год уровень GDP от 1 980 с прогнозами модели.
dates = datetime(dates(3:230),'ConvertFrom','datenum',... "Format",'yyyy:QQQ'); idx = dates >= "1980:Q1"; figure; plot(dates(idx),arate(idx),'k',... dates(end) + calquarters(1:numPeriods),yf,'r--') xlabel("Year") ylabel("GDP (Annualized Rate)") recessionplot legend("Observations","Forecasts")

Вычислите оптимальные и предполагаемые прогнозы и соответствующие ковариационные матрицы ошибки прогноза из переключающей Маркова модели динамической регрессии с тремя состояниями для 2D процесса ответа 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' — Количество демонстрационных путей, чтобы сгенерировать (значение по умолчанию) | положительное целое числоКоличество демонстрационных путей, чтобы сгенерировать для симуляции, заданной как разделенная запятой пара, состоящая из 'NumPaths' и положительное целое число. Если forecast возвращает только YF, это игнорирует NumPaths.
Пример: 'NumPaths',1000
Типы данных: double
YF — Укажите прогнозыУкажите прогнозы, возвращенные как numPeriods- numSeries числовая матрица.
Если forecast возвращает только YF, затем укажите, что прогнозы оптимальны. В противном случае, forecast симуляция Монте-Карло использования, чтобы оценить прогнозы точки.
EstCov — Ковариации ошибки прогнозаКовариации ошибки прогноза, возвращенные как числовой вектор-столбец или числовой массив.
Если подмодели Mdl.SubModels представляйте одномерные модели ARX, EstCov numPeriods- 1 вектор. Если Mdl.SubModels представляйте многомерные модели VARX, EstCov numSeries- numSeries- numPeriods массив.
forecast выполняет симуляцию Монте-Карло, чтобы вычислить EstCov.
Гамильтон [2] обеспечивает статистически оптимальный, прогноз точки "один шаг вперед" YF для переключающей Маркова модели динамической регрессии. forecast вычисляет YF итеративно к горизонту прогноза, когда названо одним выходом. Нелинейность переключающей Маркова модели динамической регрессии приводит к ненормальным ошибкам прогноза, которые усложняют интервал и прогнозы плотности [3]. В результате forecast переключатели к Методам Монте-Карло, когда это возвращает EstCov.
[1] Chauvet, M. и Дж. Д. Гамильтон. "Датируя Поворотные моменты Делового цикла". В Нелинейном Анализе Деловых циклов (Вклады в Экономический анализ, Объем 276). C. Милас, П. Ротмен, и Д. ван Дейк, редакторы). Амстердам: Emerald Group Publishing Limited, 2006.
[2] Гамильтон, J. D. "Анализ Временных рядов Согласно Изменениям в Режиме". Журнал Эконометрики. Издание 45, 1990, стр 39–70.
[3] Krolzig, H.-M. Переключающие Маркова векторные авторегрессии. Берлин: Спрингер, 1997.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.