Предскажите демонстрационные пути из переключающей Маркова модели динамической регрессии
возвращается оптимальная точка предсказывает YF = forecast(Mdl,Y,numPeriods)YF из полностью заданной переключающей Маркова модели Mdl динамической регрессии по горизонту прогноза длины numPeriods. Предсказанные ответы представляют продолжение данных об ответе Y.
дополнительные опции использования заданы одними или несколькими аргументами name-value. Например, 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','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")

Вычислите оптимальные и предполагаемые прогнозы и соответствующие ковариационные матрицы ошибки прогноза из переключающей Маркова модели динамической регрессии с тремя состояниями для 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

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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.