В этом примере показано, как результаты более сглаженной симуляции модели в пространстве состояний (simsmooth) сравните со сглаживавшими состояниями (smooth).
Предположим что отношение между изменением в уровне безработицы () и темп роста номинального валового национального продукта (nGNP) () может быть выражен в следующем, форме модели в пространстве состояний.
где:
изменение в уровне безработицы во время t.
фиктивное состояние для MA (1) эффект на .
nGNP темп роста во время t.
фиктивное состояние для MA (1) эффект на .
наблюдаемое изменение в уровне безработицы.
наблюдаемый nGNP темп роста.
и серия Gaussian воздействий состояния, имеющих среднее значение 0 и стандартное отклонение 1.
серия Gaussian инноваций наблюдения, имеющих среднее значение 0 и стандартное отклонение .
серия Gaussian инноваций наблюдения, имеющих среднее значение 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 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.
Оцените параметры модели и используйте случайный набор начальных значений параметров для оптимизации. Ограничьте оценку и ко всем положительным, вещественным числам с помощью '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

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