exponenta event banner

Прогнозирование космической модели с использованием методов Монте-Карло

В этом примере показано, как прогнозировать пространственно-государственную модель с помощью методов Монте-Карло и сравнивать прогнозы Монте-Карло с теоретическими прогнозами.

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

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

  • ε2, t является Гауссовской серией инноваций наблюдения, имеющих средний 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 значения. Однако, используя структуру фильтра Калмана, программное обеспечение может разместить серии, содержащие отсутствующие значения.

Чтобы определить, насколько хорошо модель прогнозирует наблюдения, удалите последние 10 наблюдений для сравнения.

numPeriods = 10;                   % Forecast horizon
isY = y(1:end-numPeriods,:);       % In-sample observations
oosY = y(end-numPeriods+1:end,:);  % Out-of-sample observations

Укажите матрицы коэффициентов.

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,isY,params0,...
    'lb',[-Inf -Inf -Inf -Inf -Inf -Inf 0 0],'CovMethod','hessian');
Method: Maximum likelihood (fmincon)
Sample size: 51
Logarithmic  likelihood:      -170.92
Akaike   info criterion:       357.84
Bayesian info criterion:      373.295
      |     Coeff       Std Err    t Stat     Prob  
----------------------------------------------------
 c(1) |  0.06750       0.16548     0.40791  0.68334 
 c(2) | -0.01372       0.05887    -0.23302  0.81575 
 c(3) |  2.71201       0.27039    10.03006   0      
 c(4) |  0.83815       2.84585     0.29452  0.76836 
 c(5) |  0.06273       2.83473     0.02213  0.98235 
 c(6) |  0.05197       2.56875     0.02023  0.98386 
 c(7) |  0.00273       2.40763     0.00113  0.99910 
 c(8) |  0.00016       0.13942     0.00113  0.99910 
      |                                             
      |   Final State   Std Dev     t Stat    Prob  
 x(1) | -0.00000       0.00273    -0.00033  0.99973 
 x(2) |  0.12237       0.92954     0.13164  0.89527 
 x(3) |  0.04049       0.00016   256.76330   0      
 x(4) |  0.01183       0.00016    72.51366   0      

EstMdl является ssm и доступ к его свойствам можно получить с помощью точечной нотации.

Фильтрация расчетной модели пространства состояний и извлечение отфильтрованных состояний и их отклонений из конечного периода.

[~,~,Output] = filter(EstMdl,isY);

Измените расчетную модель «состояние-пространство» таким образом, чтобы средства начального состояния и ковариации были отфильтрованными состояниями и их ковариациями конечного периода. Таким образом, выполняется моделирование на горизонте прогноза.

EstMdl1 = EstMdl;
EstMdl1.Mean0 = Output(end).FilteredStates;
EstMdl1.Cov0 = Output(end).FilteredStatesCov;

Моделировать 5e5 пути наблюдений из установленной модели состояния-пространства EstMdl. Укажите, чтобы моделировать наблюдения для каждого периода.

numPaths = 5e5;
SimY = simulate(EstMdl1,10,'NumPaths',numPaths);

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

Оцените прогнозируемые наблюдения и их 95% доверительные интервалы в горизонте прогноза.

MCFY = mean(SimY,3);
CIFY = quantile(SimY,[0.025 0.975],3);

Оценка теоретических диапазонов прогноза.

[Y,YMSE] = forecast(EstMdl,10,isY);
Lb = Y - sqrt(YMSE)*1.96;
Ub = Y + sqrt(YMSE)*1.96;

Постройте график прогнозируемых наблюдений с их истинными значениями и интервалами прогноза.

figure
h = plot(dates(end-numPeriods-9:end),[isY(end-9:end,1);oosY(:,1)],'-k',...
    dates(end-numPeriods+1:end),MCFY(end-numPeriods+1:end,1),'.-r',...
    dates(end-numPeriods+1:end),CIFY(end-numPeriods+1:end,1,1),'-b',...
    dates(end-numPeriods+1:end),CIFY(end-numPeriods+1:end,1,2),'-b',...
    dates(end-numPeriods+1:end),Y(:,1),':c',...
    dates(end-numPeriods+1:end),Lb(:,1),':m',...
    dates(end-numPeriods+1:end),Ub(:,1),':m',...
    'LineWidth',3);
xlabel('Period')
ylabel('Change in the unemployment rate')
legend(h([1,2,4:6]),{'Observations','MC forecasts',...
    '95% forecast intervals','Theoretical forecasts',...
    '95% theoretical intervals'},'Location','Best')
title('Observed and Forecasted Changes in the Unemployment Rate')

Figure contains an axes. The axes with title Observed and Forecasted Changes in the Unemployment Rate contains 7 objects of type line. These objects represent Observations, MC forecasts, 95% forecast intervals, Theoretical forecasts, 95% theoretical intervals.

figure
h = plot(dates(end-numPeriods-9:end),[isY(end-9:end,2);oosY(:,2)],'-k',...
    dates(end-numPeriods+1:end),MCFY(end-numPeriods+1:end,2),'.-r',...
    dates(end-numPeriods+1:end),CIFY(end-numPeriods+1:end,2,1),'-b',...
    dates(end-numPeriods+1:end),CIFY(end-numPeriods+1:end,2,2),'-b',...
    dates(end-numPeriods+1:end),Y(:,2),':c',...
    dates(end-numPeriods+1:end),Lb(:,2),':m',...
    dates(end-numPeriods+1:end),Ub(:,2),':m',...
    'LineWidth',3);
xlabel('Period')
ylabel('nGNP growth rate')
legend(h([1,2,4:6]),{'Observations','MC forecasts',...
    '95% MC intervals','Theoretical forecasts','95% theoretical intervals'},...
    'Location','Best')
title('Observed and Forecasted nGNP Growth Rates')

Figure contains an axes. The axes with title Observed and Forecasted nGNP Growth Rates contains 7 objects of type line. These objects represent Observations, MC forecasts, 95% MC intervals, Theoretical forecasts, 95% theoretical intervals.

См. также

| | | |

Связанные примеры

Подробнее