exponenta event banner

Фильтрация состояний модели State-Space, содержащей компонент регрессии

В этом примере показано, как фильтровать состояния инвариантной во времени модели «состояние-пространство», содержащей компонент регрессии.

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

[x1, tx2, t] = [startstart00] [x1, t-1x2, t-1] + [11] u1, tyt-βZt = x1, t + startδ 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.3 0.2 0.2];
[EstMdl,estParams] = estimate(Mdl,y,params0,'Predictors',Z,...
    'Beta0',[0.1 0.2],'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'соответственно. Постройте график расчетных отфильтрованных состояний. Напомним, что первое государство - это изменение уровня безработицы, а второе государство помогает строить первое.

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

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

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

См. также

| | |

Связанные темы