forecast

Класс: dssm

Прогнозные состояния и наблюдения диффузных моделей пространства состояний

Описание

пример

[Y,YMSE] = forecast(Mdl,numPeriods,Y0) возвращает прогнозируемые наблюдения (Y) и их соответствующие отклонения (YMSE) от прогноза модели рассеянного пространства состояний Mdl использование numPeriods прогнозные и выборочные наблюдения Y0.

пример

[Y,YMSE] = forecast(Mdl,numPeriods,Y0,Name,Value) использует дополнительные опции, заданные одним или несколькими Name,Value аргументы в виде пар. Для примера, для моделей пространства состояний, которые включают линейный регрессионый компонент в модель наблюдения, включают данные предиктора в выборке, данные предиктора для прогнозируемого горизонта и коэффициент регрессии.

пример

[Y,YMSE,X,XMSE] = forecast(___) использует любой из входных параметров в предыдущих синтаксисах, чтобы дополнительно вернуть прогнозы состояния (X) и их соответствующие отклонения (XMSE).

Входные параметры

расширить все

Диффузная модель пространства состояний, заданная как dssm объект модели, возвращенный dssm или estimate.

Если Mdl не полностью задан (то есть Mdl содержит неизвестные параметры), затем задайте значения для неизвестных параметров используя 'Params' аргумент пары "имя-значение". В противном случае программа выдает ошибку. estimate возвращает полностью заданные модели пространства состояний.

Mdl не хранит наблюдаемые отклики или данные предиктора. Поставляйте данные по мере необходимости с помощью соответствующих входов или аргументов пары "имя-значение".

Горизонт прогноза, заданный как положительное целое число. То есть программное обеспечение возвращает 1,.., numPeriods прогнозы.

Типы данных: double

В выборке наблюдаемые отклики, заданные как вектор камеры числовых векторов или матрицы.

  • Если Mdl является инвариантным по времени, тогда Y0 является T -by n числовой матрицей, где каждая строка соответствует периоду, и каждый столбец соответствует конкретному наблюдению в модели. Поэтому T - размер выборки, а m - количество наблюдений за период. Последняя строка Y содержит последние наблюдения.

  • Если Mdl время изменяется относительно уравнения наблюдения, затем Y - вектор камеры T -by-1. Каждый элемент вектора камеры соответствует периоду и содержит nt-мерный вектор наблюдений для этого периода. Соответствующие размерности матриц коэффициентов в Mdl.C{t} и Mdl.D{t} должна быть согласована с матрицей в Y{t} для всех периодов. Последняя камера Y содержит последние наблюдения.

Если Mdl является оценочной моделью пространства состояний (то есть возвращается estimate), затем лучшая практика задать Y0 к тому же набору данных, который вы использовали для подгонки Mdl.

NaN элементы указывают на отсутствующие наблюдения. Для получения дополнительной информации о том, как фильтр Калмана принимает отсутствующие наблюдения, см. Алгоритмы.

Типы данных: double | cell

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: 'Beta',beta,'Predictors',Z задает отклонение наблюдений регрессионным компонентом, состоящим из данных предиктора Z и матрицу коэффициентов beta.

Прогнозирование-горизонт, переход-состояние, матрицы коэффициентов, заданные как разделенная разделенными запятой парами, состоящая из 'A' и вектор камеры из числовых матриц.

  • A должен содержать не менее numPeriods камеры. Каждая камера должна содержать матрицу, указывающую, как состояния переходят в горизонте прогноза. Если длина A больше numPeriods, затем программное обеспечение использует первую numPeriods камеры. Последняя камера указывает последний период прогнозируемого горизонта.

  • Если Mdl является инвариантным по отношению к состояниям, затем каждая камера A должен содержать m -by - m матрицу, где m - количество состояний в выборке за период. По умолчанию программное обеспечение использует Mdl.A по всему прогнозному горизонту.

  • Если Mdl - время, изменяющееся относительно состояний, затем размерности матриц в камерах A может варьироваться, но размерности каждой матрицы должны быть согласованы с матрицами в B и C в соответствующие периоды. По умолчанию программное обеспечение использует Mdl.A{end} по всему прогнозному горизонту.

Примечание

Матрицы в A не может содержать NaN значения.

Типы данных: cell

Прогноз-горизонт, состояние-возмущение-загрузка, матрицы коэффициентов, заданные как разделенная разделенными запятой парами, состоящая из 'B' и вектор камер из матриц.

  • B должен содержать не менее numPeriods камеры. Каждая камера должна содержать матрицу, указывающую, как состояния переходят в горизонте прогноза. Если длина B больше numPeriods, затем программное обеспечение использует первую numPeriods камеры. Последняя камера указывает последний период прогнозируемого горизонта.

  • Если Mdl является инвариантным по времени относительно состояний и нарушений порядка, затем каждая камера B должен содержать m -by - k матрицу, где m - количество состояний в выборке за период, и k - количество нарушений порядка в выборке за период. По умолчанию программное обеспечение использует Mdl.B по всему прогнозному горизонту.

  • Если Mdl изменяется ли время, тогда размерности матриц в камерах B может варьироваться, но размерности каждой матрицы должны быть согласованы с матрицами в A в соответствующие периоды. По умолчанию программное обеспечение использует Mdl.B{end} по всему прогнозному горизонту.

Примечание

Матрицы в B не может содержать NaN значения.

Типы данных: cell

Прогноз-горизонт, измерение-чувствительность, матрицы коэффициентов, заданные как разделенная разделенными запятой парами, состоящая из 'C' и вектор камер из матриц.

  • C должен содержать не менее numPeriods камеры. Каждая камера должна содержать матрицу, указывающую, как состояния переходят в горизонте прогноза. Если длина C больше numPeriods, затем программное обеспечение использует первую numPeriods камеры. Последняя камера указывает последний период прогнозируемого горизонта.

  • Если Mdl является инвариантным по времени относительно состояний и наблюдений, затем каждая камера C должен содержать n -by - m матрицу, где n - количество наблюдений в выборке за период, и m - количество состояний в выборке за период. По умолчанию программное обеспечение использует Mdl.C по всему прогнозному горизонту.

  • Если Mdl время, изменяющееся относительно состояний или наблюдений, затем размерности матриц в камерах C может варьироваться, но размерности каждой матрицы должны быть согласованы с матрицами в A и D в соответствующие периоды. По умолчанию программное обеспечение использует Mdl.C{end} по всему прогнозному горизонту.

Примечание

Матрицы в C не может содержать NaN значения.

Типы данных: cell

Прогнозирование-горизонт, наблюдение-инновация, матрицы коэффициентов, заданные как разделенная разделенными запятой парами, состоящая из 'D' и вектор камер из матриц.

  • D должен содержать не менее numPeriods камеры. Каждая камера должна содержать матрицу, указывающую, как состояния переходят в горизонте прогноза. Если длина D больше numPeriods, затем программное обеспечение использует первую numPeriods камеры. Последняя камера указывает последний период прогнозируемого горизонта.

  • Если Mdl является инвариантным по времени относительно наблюдений и инноваций наблюдений, затем каждая камера D должен содержать n -by - h матрицу, где n - количество наблюдений в выборке за период, и h - количество инноваций наблюдений в выборке за период. По умолчанию программное обеспечение использует Mdl.D по всему прогнозному горизонту.

  • Если Mdl время, изменяющееся относительно наблюдений или инноваций наблюдений, затем размерности матриц в камерах D может варьироваться, но размерности каждой матрицы должны быть согласованы с матрицами в C в соответствующие периоды. По умолчанию программное обеспечение использует Mdl.D{end} по всему прогнозному горизонту.

Примечание

Матрицы в D не может содержать NaN значения.

Типы данных: cell

Коэффициенты регрессии, соответствующие переменным предиктора, заданные как разделенная разделенными запятой парами, состоящая из 'Beta' и a d -by n числовой матрицей. d - количество переменных предиктора (см Predictors0 и PredictorsF) и n количество наблюдаемых серий отклика (см Y0).

  • Если вы задаете Beta, тогда вы также должны задать Predictors0 и PredictorsF.

  • Если Mdl является оценочной моделью пространства состояний, затем задает оцененные коэффициенты регрессии, сохраненные в Mdl.estParams.

По умолчанию программа исключает регрессионный компонент из модели пространства состояний.

In-sample, переменные предиктора в уравнении наблюдения модели пространства состояний, заданные как разделенная разделенными запятой парами, состоящая из 'Predictors0' и матрицу. Столбцы Predictors0 соответствуют отдельным переменным предиктора. Predictors0 должно иметь T строки, где t строка соответствует наблюдаемым предикторам в периоде t (Zt). Расширенное уравнение наблюдения

ytZtβ=Cxt+Dut.

Другими словами, программа отклоняет наблюдения, используя регрессионый компонент. β является инвариантным по времени вектором коэффициентов регрессии, которые программное обеспечение оценивает со всеми другими параметрами.

  • Если наблюдений за период n, то программа регрессирует все ряды предикторов на каждое наблюдение.

  • Если вы задаете Predictors0, затем Mdl должно быть инвариантным по времени. В противном случае программа возвращает ошибку.

  • Если вы задаете Predictors0, тогда вы также должны задать Beta и PredictorsF.

  • Если Mdl является оценочной моделью пространства состояний (то есть возвращается estimate), затем лучшая практика задать Predictors0 к тому же набору данных предиктора, который вы использовали для подгонки Mdl.

По умолчанию программа исключает регрессионный компонент из модели пространства состояний.

Типы данных: double

In-sample, переменные предиктора в уравнении наблюдения модели пространства состояний, заданные как разделенная разделенными запятой парами, состоящая из 'Predictors0' и a T -by d числовой матрицей. T - количество периодов в выборке, а d - количество переменных предиктора. Строка t соответствует наблюдаемым предикторам в периоде t (Zt). Расширенное уравнение наблюдения

ytZtβ=Cxt+Dut.

Другими словами, программа отклоняет наблюдения, используя регрессионый компонент. β является инвариантным по времени вектором коэффициентов регрессии, которые программное обеспечение оценивает со всеми другими параметрами.

  • Если наблюдений за период n, то программа регрессирует все ряды предикторов на каждое наблюдение.

  • Если вы задаете Predictors0, затем Mdl должно быть инвариантным по времени. В противном случае программа возвращает ошибку.

  • Если вы задаете Predictors0, тогда вы также должны задать Beta и PredictorsF.

  • Если Mdl является оценочной моделью пространства состояний (то есть возвращается estimate), затем лучшая практика задать Predictors0 к тому же набору данных предиктора, который вы использовали для подгонки Mdl.

По умолчанию программа исключает регрессионный компонент из модели пространства состояний.

Типы данных: double

Выходные аргументы

расширить все

Предсказанные наблюдения, возвращенные как матрица или вектор камеры числовых векторов.

Если Mdl является инвариантной по времени моделью пространства состояний относительно наблюдений, затем Y является numPeriods-by - n матрица.

Если Mdl является изменяющейся во времени моделью пространства состояний относительно наблюдений, затем Y является numPeriods-by-1 вектор камеры числовых векторов. Камера t Y содержит nt -на-1 числовой вектор прогнозируемых наблюдений для периода t.

Отклонения ошибок прогнозируемых наблюдений, возвращенные как матрица или вектор камеры числовых векторов.

Если Mdl является инвариантной по времени моделью пространства состояний относительно наблюдений, затем YMSE является numPeriods-by - n матрица.

Если Mdl является изменяющейся во времени моделью пространства состояний относительно наблюдений, затем YMSE является numPeriods-by-1 вектор камеры числовых векторов. Камера t YMSE содержит nt-на-1 численный вектор отклонений ошибок для соответствующих прогнозируемых наблюдений для периода t.

Прогнозирует состояние, возвращается как матрица или вектор камеры из числовых векторов.

Если Mdl является инвариантной по времени моделью пространства состояний относительно состояний, затем X является numPeriods-by - m матрица.

Если Mdl является изменяющейся во времени моделью пространства состояний относительно состояний, затем X является numPeriods-by-1 вектор камеры числовых векторов. Камера t X содержит mt -на-1 числовой вектор прогнозируемых наблюдений для периода t.

Отклонения ошибок прогнозов состояния, возвращенные как матрица или вектор камеры числовых векторов.

Если Mdl является инвариантной по времени моделью пространства состояний относительно состояний, затем XMSE является numPeriods-by - m матрица.

Если Mdl является изменяющейся во времени моделью пространства состояний относительно состояний, затем XMSE является numPeriods-by-1 вектор камеры числовых векторов. Камера t XMSE содержит mt-на-1 численный вектор отклонений ошибок для соответствующих прогнозируемых наблюдений для периода t.

Примеры

расширить все

Предположим, что скрытый процесс является случайной ходьбой. Уравнение состояния

xt=xt-1+ut,

где ut является Гауссовым со средним 0 и стандартным отклонением 1.

Сгенерируйте случайную серию из 100 наблюдений xt, принимая, что серия начинается с 1,5.

T = 100;
x0 = 1.5;
rng(1); % For reproducibility
u = randn(T,1);
x = cumsum([x0;u]);
x = x(2:end);

Предположим далее, что скрытый процесс подвержен аддитивной ошибке измерения. Уравнение наблюдения

yt=xt+εt,

где εt является Гауссовым со средним 0 и стандартным отклонением 0,75. Вместе латентный процесс и уравнения наблюдений составляют модель пространства состояний.

Используйте процесс случайного скрытого состояния (x) и уравнение наблюдения для генерации наблюдений.

y = x + 0.75*randn(T,1);

Задайте четыре матрицы коэффициентов.

A = 1;
B = 1;
C = 1;
D = 0.75;

Создайте модель рассеянного пространства состояний с помощью матриц коэффициентов. Задайте, что начальное распределение состояний рассеяно.

Mdl = dssm(A,B,C,D,'StateType',2)
Mdl = 
State-space model type: dssm

State vector length: 1
Observation vector length: 1
State disturbance vector length: 1
Observation innovation vector length: 1
Sample size supported by model: Unlimited

State variables: x1, x2,...
State disturbances: u1, u2,...
Observation series: y1, y2,...
Observation innovations: e1, e2,...

State equation:
x1(t) = x1(t-1) + u1(t)

Observation equation:
y1(t) = x1(t) + (0.75)e1(t)

Initial state distribution:

Initial state means
 x1 
  0 

Initial state covariance matrix
     x1  
 x1  Inf 

State types
    x1   
 Diffuse 

Mdl является dssm модель. Проверьте, что модель правильно задана, используя отображение в Командном окне.

Прогнозируйте наблюдения 10 периодов в будущее и оценивайте средние квадратичные невязки прогнозов.

numPeriods = 10;
[ForecastedY,YMSE] = forecast(Mdl,numPeriods,y);

Постройте график прогнозов с откликами в выборке и 95% интервалами прогноза типа Wald.

ForecastIntervals(:,1) = ForecastedY - 1.96*sqrt(YMSE);
ForecastIntervals(:,2) = ForecastedY + 1.96*sqrt(YMSE);

figure
plot(T-20:T,y(T-20:T),'-k',T+1:T+numPeriods,ForecastedY,'-.r',...
    T+1:T+numPeriods,ForecastIntervals,'-.b',...
    T:T+1,[y(end)*ones(3,1),[ForecastedY(1);ForecastIntervals(1,:)']],':k',...
    'LineWidth',2)
hold on
title({'Observed Responses and Their Forecasts'})
xlabel('Period')
ylabel('Responses')
legend({'Observations','Forecasted observations','95% forecast intervals'},...
    'Location','Best')
hold off

Figure contains an axes. The axes with title Observed Responses and Their Forecasts contains 7 objects of type line. These objects represent Observations, Forecasted observations, 95% forecast intervals.

Прогнозные интервалы разгораются, потому что процесс нестационарный.

Предположим, что интерес представляет линейная связь между уровнем безработицы и номинальным валовым национальным продуктом (ННП). Предположим далее, что уровень безработицы является серией AR (1). Символически, и в форме пространство состояний, модель является

xt=ϕxt-1+σutyt-βZt=xt,

где:

  • xt - уровень безработицы в момент t.

  • yt - наблюдаемое изменение уровня безработицы, отклоняемое возвратом nGNP (Zt).

  • ut - Гауссов ряд нарушений порядка состояния, имеющих среднее 0 и неизвестное стандартное отклонение σ.

Загрузите набор данных Нельсона-Плоссера, который содержит, среди прочего, уровень безработицы и серию nGNP.

load Data_NelsonPlosser

Предварительно обработайте данные, взяв естественный логарифм серии nGNP и удалив стартовую NaN значения из каждой серии.

isNaN = any(ismissing(DataTable),2);       % Flag periods containing NaNs
gnpn = DataTable.GNPN(~isNaN);
y = diff(DataTable.UR(~isNaN));
T = size(gnpn,1);                          % The sample size
Z = price2ret(gnpn);

Этот пример продолжает использовать серию без NaN значения. Однако, используя среду фильтра Калмана, программное обеспечение может включать серии, содержащие отсутствующие значения.

Определите, насколько хорошо модель прогнозирует наблюдения, удалив последние 10 наблюдений для сравнения.

numPeriods = 10;                   % Forecast horizon
isY = y(1:end-numPeriods);         % In-sample observations
oosY = y(end-numPeriods+1:end);    % Out-of-sample observations
ISZ = Z(1:end-numPeriods);         % In-sample predictors
OOSZ = Z(end-numPeriods+1:end);  % Out-of-sample predictors

Задайте матрицы коэффициентов.

A = NaN;
B = NaN;
C = 1;

Создайте модель пространства состояний с помощью dssm путем подачи матриц коэффициентов и определения, что значения состояний исходят из диффузного распределения. Спецификация диффуза указывает на полное невежество о моментах начального распределения.

StateType = 2;
Mdl = dssm(A,B,C,'StateType',StateType);

Оцените параметры. Задайте регрессионный компонент и его начальное значение для оптимизации с помощью 'Predictors' и 'Beta0' Аргументы пары "имя-значение", соответственно. Отобразите оценки и всю диагностическую информацию оптимизации. Ограничьте оценку σ ко всем положительным, вещественным числам.

params0 = [0.3 0.2]; % Initial values chosen arbitrarily
Beta0 = 0.1;
[EstMdl,estParams] = estimate(Mdl,y,params0,'Predictors',Z,'Beta0',Beta0,...
    'lb',[-Inf 0 -Inf]);
Method: Maximum likelihood (fmincon)
Effective Sample size:             60
Logarithmic  likelihood:     -110.477
Akaike   info criterion:      226.954
Bayesian info criterion:      233.287
           |      Coeff       Std Err    t Stat    Prob 
--------------------------------------------------------
 c(1)      |   0.59436       0.09408     6.31738  0     
 c(2)      |   1.52554       0.10758    14.17991  0     
 y <- z(1) | -24.26161       1.55730   -15.57930  0     
           |                                            
           |    Final State   Std Dev     t Stat   Prob 
 x(1)      |   2.54764        0           Inf     0     

EstMdl является dssm модель, и вы можете получить доступ к ее свойствам с помощью записи через точку.

Прогнозные наблюдения за прогнозным горизонтом. EstMdl не хранит набор данных, поэтому необходимо передать его в соответствующих аргументах пары "имя-значение".

[fY,yMSE] = forecast(EstMdl,numPeriods,isY,'Predictors0',ISZ,...
    'PredictorsF',OOSZ,'Beta',estParams(end));

fY вектор 10 на 1, содержащий прогнозируемые наблюдения и yMSE вектор 10 на 1, содержащий отклонения прогнозируемых наблюдений.

Получите 95% интервалы прогноза типа Wald. Постройте график прогнозируемых наблюдений с их истинными значениями и интервалами прогноза.

ForecastIntervals(:,1) = fY - 1.96*sqrt(yMSE);
ForecastIntervals(:,2) = fY + 1.96*sqrt(yMSE);

figure
h = plot(dates(end-numPeriods-9:end-numPeriods),isY(end-9:end),'-k',...
    dates(end-numPeriods+1:end),oosY,'-k',...
    dates(end-numPeriods+1:end),fY,'--r',...
    dates(end-numPeriods+1:end),ForecastIntervals,':b',...
    dates(end-numPeriods:end-numPeriods+1),...
    [isY(end)*ones(4,1),[oosY(1);ForecastIntervals(1,:)';fY(1)]],':k',...
    'LineWidth',2);
xlabel('Period')
ylabel('Change in unemployment rate')
legend(h([1,3,4]),{'Observations','Forecasted responses',...
    '95% forecast intervals'})
title('Observed and Forecasted Changes in the Unemployment Rate')

Figure contains an axes. The axes with title Observed and Forecasted Changes in the Unemployment Rate contains 9 objects of type line. These objects represent Observations, Forecasted responses, 95% forecast intervals.

Предположим, что скрытый процесс является случайной ходьбой. Уравнение состояния

xt=xt-1+ut,

где ut является Гауссовым со средним 0 и стандартным отклонением 1.

Сгенерируйте случайную серию из 100 наблюдений xt, принимая, что серия начинается с 1,5.

T = 100;
x0 = 1.5;
rng(1); % For reproducibility
u = randn(T,1);
x = cumsum([x0;u]);
x = x(2:end);

Предположим далее, что скрытый процесс подвержен аддитивной ошибке измерения. Уравнение наблюдения

yt=xt+εt,

где εt является Гауссовым со средним 0 и стандартным отклонением 0,75. Вместе латентный процесс и уравнения наблюдений составляют модель пространства состояний.

Используйте процесс случайного скрытого состояния (x) и уравнение наблюдения для генерации наблюдений.

y = x + 0.75*randn(T,1);

Задайте четыре матрицы коэффициентов.

A = 1;
B = 1;
C = 1;
D = 0.75;

Создайте модель рассеянного пространства состояний с помощью матриц коэффициентов. Задайте, что начальное распределение состояний рассеяно.

Mdl = dssm(A,B,C,D,'StateType',2)
Mdl = 
State-space model type: dssm

State vector length: 1
Observation vector length: 1
State disturbance vector length: 1
Observation innovation vector length: 1
Sample size supported by model: Unlimited

State variables: x1, x2,...
State disturbances: u1, u2,...
Observation series: y1, y2,...
Observation innovations: e1, e2,...

State equation:
x1(t) = x1(t-1) + u1(t)

Observation equation:
y1(t) = x1(t) + (0.75)e1(t)

Initial state distribution:

Initial state means
 x1 
  0 

Initial state covariance matrix
     x1  
 x1  Inf 

State types
    x1   
 Diffuse 

Mdl является dssm модель. Проверьте, что модель правильно задана, используя отображение в Командном окне.

Прогнозируйте состояния 10 периодов в будущее и оценивайте средние квадратичные невязки прогнозов.

numPeriods = 10;
[~,~,ForecastedX,XMSE] = forecast(Mdl,numPeriods,y);

Постройте график прогнозов с состояниями в выборке и 95% интервалами прогноза типа Wald.

ForecastIntervals(:,1) = ForecastedX - 1.96*sqrt(XMSE);
ForecastIntervals(:,2) = ForecastedX + 1.96*sqrt(XMSE);

figure
plot(T-20:T,x(T-20:T),'-k',T+1:T+numPeriods,ForecastedX,'-.r',...
    T+1:T+numPeriods,ForecastIntervals,'-.b',...
    T:T+1,[x(end)*ones(3,1),[ForecastedX(1);ForecastIntervals(1,:)']],':k',...
    'LineWidth',2)
hold on
title({'State Values and Their Forecasts'})
xlabel('Period')
ylabel('State value')
legend({'State Values','Forecasted states','95% forecast intervals'},...
    'Location','Best')
hold off

Figure contains an axes. The axes with title State Values and Their Forecasts contains 7 objects of type line. These objects represent State Values, Forecasted states, 95% forecast intervals.

Прогнозные интервалы разгораются, потому что процесс нестационарный.

Совет

Mdl не сохраняет данные отклика, данные предиктора и коэффициенты регрессии. Поставляйте их при необходимости с помощью соответствующих входов или аргументов пары "имя-значение".

Алгоритмы

Фильтр Калмана принимает отсутствующие данные, не обновляя фильтрованные оценки состояния, соответствующие отсутствующим наблюдениям. Другими словами, предположим, что в период t отсутствует наблюдение. Затем прогноз состояния для t периода на основе предыдущих наблюдений t-1 и отфильтрованного состояния для t периода эквивалентны.

Ссылки

[1] Дурбин Дж., и С. Дж. Копман. Анализ временных рядов по методам пространства состояний. 2nd ed. Oxford: Oxford University Press, 2012.

Введенный в R2015b