Сглаживайте состояния модели пространства состояний, содержащей регрессионый компонент

Этот пример показывает, как сглаживать состояния инвариантной по времени модели пространства состояний, которая содержит регрессионый компонент.

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

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

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

A = [NaN NaN; 0 0];
B = [1; 1];
C = [1 0];
D = NaN;

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

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

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

params0 = [0.2 0.2 0.1];
[EstMdl,estParams] = estimate(Mdl,y,params0,'Predictors',Z,...
    'Beta0',[0.2 0.1],'lb',[-Inf,-Inf,0,-Inf,-Inf]);
Method: Maximum likelihood (fmincon)
Sample size: 61
Logarithmic  likelihood:     -99.7245
Akaike   info criterion:      209.449
Bayesian info criterion:      220.003
           |      Coeff       Std Err    t Stat     Prob  
----------------------------------------------------------
 c(1)      |  -0.34098       0.29608    -1.15164  0.24948 
 c(2)      |   1.05003       0.41377     2.53771  0.01116 
 c(3)      |   0.48592       0.36790     1.32079  0.18657 
 y <- z(1) |   1.36121       0.22338     6.09358   0      
 y <- z(2) | -24.46711       1.60018   -15.29024   0      
           |                                              
           |    Final State   Std Dev     t Stat    Prob  
 x(1)      |   1.01264       0.44690     2.26592  0.02346 
 x(2)      |   0.77718       0.58917     1.31912  0.18713 

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

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

SmoothedX = smooth(EstMdl,y,'Predictors',Z,'Beta',estParams(end-1:end));

figure
plot(dates(end-(T-1)+1:end),SmoothedX(:,1));
xlabel('Period')
ylabel('Change in the unemployment rate')
title('Smoothed Change in the Unemployment Rate')

Figure contains an axes. The axes with title Smoothed Change in the Unemployment Rate contains an object of type line.

См. также

| | |

Похожие темы