Предскажите демонстрационные пути из переключающей Маркова модели динамической регрессии
возвращается оптимальная точка предсказывает 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_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
Преобразование пропускает первое наблюдение.
Предскажите уровни 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
)
. Если количество строк превышает j
numPeriods
то 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.