forecast

Класс: ssm

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

Описание

пример

[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).

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

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

Стандартная модель пространства состояний, заданная как ssm объект модели, возвращенный ssm или 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.

Примеры

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

Предположим, что латентный процесс является AR (1). Уравнение состояния

xt=0.5xt-1+ut,

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

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

T = 100;
ARMdl = arima('AR',0.5,'Constant',0,'Variance',1);
x0 = 1.5;
rng(1); % For reproducibility
x = simulate(ARMdl,T,'Y0',x0);

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

yt=xt+εt,

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

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

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

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

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

Задайте модель пространства состояний, используя матрицы коэффициентов.

Mdl = ssm(A,B,C,D)
Mdl = 
State-space model type: ssm

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) = (0.50)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  1.33 

State types
     x1     
 Stationary 

Mdl является ssm модель. Проверьте, что модель правильно задана, используя отображение в Командном окне. Программное обеспечение делает вывод, что процесс состояния является стационарным. Впоследствии программное обеспечение устанавливает среднее значение начального состояния и ковариацию в среднее значение и отклонение стационарного распределения модели AR (1).

Спрогнозируйте наблюдения на 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.

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

[x1,tx2,t]=[ϕθ00][x1,t-1x2,t-1]+[11]u1,tyt-βZt=x1,t+σεt,

где:

  • x1,t - изменение уровня безработицы в момент t.

  • x2,t является фиктивным состоянием для эффекта MA (1).

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

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

  • εt - гауссов ряд инноваций наблюдений, имеющих среднее 0 и стандартное отклонение σ.

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

load Data_NelsonPlosser

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

isNaN = any(ismissing(DataTable),2);       % Flag periods containing NaNs
gnpn = DataTable.GNPN(~isNaN);
u = DataTable.UR(~isNaN);
T = size(gnpn,1);                          % Sample size
Z = [ones(T-1,1) diff(log(gnpn))];
y = diff(u);

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

Чтобы определить, насколько хорошо модель прогнозирует наблюдения, удалите последние 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 NaN; 0 0];
B = [1; 1];
C = [1 0];
D = NaN;

Задайте модель пространства состояний используя ssm.

Mdl = ssm(A,B,C,D);

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

params0 = [0.3 0.2 0.1]; % Chosen arbitrarily
[EstMdl,estParams] = estimate(Mdl,isY,params0,'Predictors',ISZ,...
    'Beta0',[0.1 0.2],'lb',[-Inf,-Inf,0,-Inf,-Inf],'CovMethod','hessian');
Method: Maximum likelihood (fmincon)
Sample size: 51
Logarithmic  likelihood:     -87.2409
Akaike   info criterion:      184.482
Bayesian info criterion:      194.141
           |      Coeff       Std Err    t Stat     Prob  
----------------------------------------------------------
 c(1)      |  -0.31780       0.19429    -1.63572  0.10190 
 c(2)      |   1.21242       0.48882     2.48031  0.01313 
 c(3)      |   0.45583       0.63930     0.71301  0.47584 
 y <- z(1) |   1.32407       0.26313     5.03201   0      
 y <- z(2) | -24.48733       1.90115   -12.88024   0      
           |                                              
           |    Final State   Std Dev     t Stat    Prob  
 x(1)      |  -0.38117       0.42842    -0.88971  0.37363 
 x(2)      |   0.23402       0.66222     0.35339  0.72380 

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

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

[fY,yMSE] = forecast(EstMdl,numPeriods,isY,'Predictors0',ISZ,...
    'PredictorsF',OOSZ,'Beta',estParams(end-1: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(3,1),[oosY(1);ForecastIntervals(1,:)']],':k',...
    'LineWidth',2);
xlabel('Period')
ylabel('Change in the 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 8 objects of type line. These objects represent Observations, Forecasted responses, 95% forecast intervals.

Эта модель, по-видимому, хорошо прогнозирует изменения уровня безработицы.

Предположим, что латентный процесс является AR (1). Уравнение состояния

xt=0.5xt-1+ut,

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

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

T = 100;
ARMdl = arima('AR',0.5,'Constant',0,'Variance',1);
x0 = 1.5;
rng(1); % For reproducibility
x = simulate(ARMdl,T,'Y0',x0);

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

yt=xt+εt,

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

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

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

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

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

Задайте модель пространства состояний, используя матрицы коэффициентов.

Mdl = ssm(A,B,C,D);

Mdl является ssm модель.

Спрогнозируйте состояния на 10 периодов в будущее и оцените их отклонения.

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

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

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

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

Figure contains an axes. The axes with title Smoothed and Forecasted States contains 7 objects of type line. These objects represent Smoothed states, Forecasted states, 95% forecast intervals.

Совет

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

Алгоритмы

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

Ссылки

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