Сравните симуляцию, более сглаженную со сглаживавшими состояниями

В этом примере показано, как результаты более сглаженной симуляции модели в пространстве состояний (simsmooth) сравните со сглаживавшими состояниями (smooth).

Предположим что отношение между изменением в уровне безработицы (x1,t) и темп роста номинального валового национального продукта (nGNP) (x3,t) может быть выражен в следующем, форме модели в пространстве состояний.

[x1,tx2,tx3,tx4,t]=[ϕ1θ1γ100000γ20ϕ2θ20000][x1,t-1x2,t-1x3,t-1x4,t-1]+[10100101][u1,tu2,t]

[y1,ty2,t]=[10000010][x1,tx2,tx3,tx4,t]+[σ100σ2][ε1,tε2,t],

где:

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

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

  • x3,t nGNP темп роста во время t.

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

  • y1,t наблюдаемое изменение в уровне безработицы.

  • y2,t наблюдаемый nGNP темп роста.

  • u1,t и u2,t серия Gaussian воздействий состояния, имеющих среднее значение 0 и стандартное отклонение 1.

  • ε1,t серия Gaussian инноваций наблюдения, имеющих среднее значение 0 и стандартное отклонение σ1.

  • ε2,t серия Gaussian инноваций наблюдения, имеющих среднее значение 0 и стандартное отклонение σ2.

Загрузите набор данных Нельсона-Плоссера, который содержит уровень безработицы и 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
y = zeros(T-1,2);                          % Preallocate
y(:,1) = diff(u);
y(:,2) = diff(log(gnpn));

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

Задайте содействующие матрицы.

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

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

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

State vector length: 4
Observation vector length: 2
State disturbance vector length: 2
Observation innovation vector length: 2
Sample size supported by model: Unlimited
Unknown parameters for estimation: 8

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

State equations:
x1(t) = (c1)x1(t-1) + (c3)x2(t-1) + (c4)x3(t-1) + u1(t)
x2(t) = u1(t)
x3(t) = (c2)x1(t-1) + (c5)x3(t-1) + (c6)x4(t-1) + u2(t)
x4(t) = u2(t)

Observation equations:
y1(t) = x1(t) + (c7)e1(t)
y2(t) = x3(t) + (c8)e2(t)

Initial state distribution:

Initial state means are not specified.
Initial state covariance matrix is not specified.
State types are not specified.

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

rng(1);
params0 = rand(8,1);
[EstMdl,estParams] = estimate(Mdl,y,params0,...
    'lb',[-Inf -Inf -Inf -Inf -Inf -Inf 0 0],'CovMethod','hessian');
Method: Maximum likelihood (fmincon)
Sample size: 61
Logarithmic  likelihood:     -199.397
Akaike   info criterion:      414.793
Bayesian info criterion:       431.68
      |     Coeff       Std Err    t Stat     Prob  
----------------------------------------------------
 c(1) |  0.03387       0.15213     0.22262  0.82383 
 c(2) | -0.01258       0.05749    -0.21876  0.82684 
 c(3) |  2.49855       0.22764    10.97571   0      
 c(4) |  0.77434       2.58645     0.29939  0.76465 
 c(5) |  0.13993       2.64364     0.05293  0.95779 
 c(6) |  0.00367       2.45476     0.00150  0.99881 
 c(7) |  0.00535       2.11324     0.00253  0.99798 
 c(8) |  0.00032       0.12685     0.00253  0.99798 
      |                                             
      |   Final State   Std Dev     t Stat    Prob  
 x(1) |  1.39999       0.00535   261.76375   0      
 x(2) |  0.21778       0.91641     0.23765  0.81216 
 x(3) |  0.04730       0.00032   147.42241   0      
 x(4) |  0.03568       0.00033   107.78050   0      

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

Симулируйте 1e4 пути наблюдений от подходящей, модели в пространстве состояний EstMdl использование более сглаженной симуляции. Задайте, чтобы симулировать наблюдения в течение каждого периода.

numPaths = 1e4;
SimX = simsmooth(EstMdl,y,'NumPaths',numPaths);

SimX T - 1- 4- numPaths матрица, содержащая симулированные состояния. Строки SimX соответствуйте периодам, столбцы соответствуют состоянию в модели, и страницы соответствуют путям.

Оцените сглаживавшие средние значения состояния, стандартные отклонения, и 95% доверительных интервалов.

SmoothBar = mean(SimX,3);
SmoothSTD = std(SimX,0,3);
SmoothCIL = SmoothBar - 1.96*SmoothSTD;
SmoothCIU = SmoothBar + 1.96*SmoothSTD;

Оцените сглаженные состояния с помощью smooth.

SmoothX = smooth(EstMdl,y);

Постройте сглаживавшие состояния и средние значения симулированных состояний и их 95% доверительных интервалов.

figure
h = plot(dates(2:T),SmoothBar(:,1),'-r',...
    dates(2:T),SmoothCIL(:,1),':b',...
    dates(2:T),SmoothCIU(:,1),':b',...
    dates(2:T),SmoothX(:,1),':k',...
    'LineWidth',3);
xlabel 'Period';
ylabel 'Unemployment rate';
legend(h([1,2,4]),{'Simulated, smoothed state mean','95% confidence interval',...
    'Smoothed states'},'Location','Best');
title 'Smoothed Unemployment Rate';
axis tight

figure
h = plot(dates(2:T),SmoothBar(:,3),'-r',...
    dates(2:T),SmoothCIL(:,3),':b',...
    dates(2:T),SmoothCIU(:,3),':b',...
    dates(2:T),SmoothX(:,3),':k',...
    'LineWidth',3);
xlabel 'Period';
ylabel 'nGNP';
legend(h([1,2,4]),{'Simulated, smoothed state mean','95% confidence interval',...
    'Smoothed states'},'Location','Best');
title 'Smoothed nGNP';
axis tight

Симулированные средние значения состояния практически идентичны сглаживавшим состояниям.

Смотрите также

| | |

Для просмотра документации необходимо авторизоваться на сайте