В этом примере показано, как фильтровать состояния инвариантной во времени модели «состояние-пространство», содержащей компонент регрессии.
Предположим, что интерес представляет линейная зависимость между изменением уровня безработицы и номинальным темпом роста валового национального продукта (нВНП). Предположим далее, что первой разницей уровня безработицы является серия ARMA (1,1). Символично и в форме state-space модель
tyt-βZt = x1, t + startδ t,
где:
t - изменение уровня безработицы в момент времени t.
t - фиктивное состояние для эффекта MA (1).
t - наблюдаемое изменение уровня безработицы, сдуваемое темпами роста nGNP Zt).
t - гауссова серия возмущений состояния, имеющих среднее значение 0 и стандартное отклонение 1.
- гауссова серия инноваций в области наблюдений, имеющих среднее значение 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')

estimate | filter | smooth | ssm