В этом примере показано, как создать и оценить рассеянную модель в пространстве состояний, содержащую изменяющиеся во времени параметры.
Предположим, что AR (2) и модель MA (1) включает скрытый процесс. Существует 50 периодов и MA (1), процесс выпадает из модели в течение итоговых 25 периодов. Следовательно, уравнение состояния в течение первых 25 периодов

В течение последних 25 периодов уравнение состояния

где
и
являются Гауссовыми со средним значением 0 и стандартным отклонением 1.
Сгенерируйте случайную последовательность 50 наблюдений от
и
, приняв, что ряд запускается в 1,5 и 1, соответственно.
T = 50; ARMdl = arima('AR',{0.7,-0.2},'Constant',0,'Variance',1); MAMdl = arima('MA',0.6,'Constant',0,'Variance',1); x0 = [1.5 1; 1.5 1]; rng(1); x = [simulate(ARMdl,T,'Y0',x0(:,1)),... [simulate(MAMdl,T/2,'Y0',x0(:,2));nan(T/2,1)]];
Последние 25 значений для симулированного MA (1) данные отсутствуют.
Скрытые процессы измеряются с помощью

в течение первых 25 периодов, и

в течение последних 25 периодов.
является Гауссовым со средним значением 0 и стандартным отклонением 1.
Сгенерируйте наблюдения с помощью случайного, скрытого процесса состояния (x) и уравнение наблюдения.
y = 2*nansum(x')' + randn(T,1);
Вместе, скрытые уравнения процесса и наблюдения составляют модель в пространстве состояний. Если коэффициенты являются неизвестными параметрами, модель в пространстве состояний
![$$\begin{array}{l}
\left[ {\begin{array}{*{20}{c}}
{{x_{1,t}}}\\
{{x_{2,t}}}\\
{{x_{3,t}}}\\
{{x_{4,t}}}
\end{array}} \right] = \left[ {\begin{array}{*{20}{c}}
{{\phi _1}}&{{\phi _2}}&0&0\\
1&0&0&0\\
0&0&0&{{\theta _1}}\\
0&0&0&0
\end{array}} \right]\left[ {\begin{array}{*{20}{c}}
{{x_{1,t - 1}}}\\
{{x_{2,t - 1}}}\\
{{x_{3,t - 1}}}\\
{{x_{4,t - 1}}}
\end{array}} \right] + \left[ {\begin{array}{*{20}{c}}
1&0\\
0&0\\
0&1\\
0&1
\end{array}} \right]\left[ {\begin{array}{*{20}{c}}
{{u_{1,t}}}\\
{{u_{2,t}}}
\end{array}} \right]\\
{y_t} = a({x_{1,t}} + {x_{3,t}}) + {\varepsilon _t}
\end{array}{\rm for\;}t = 1,...,25,$$](../examples/econ/win64/EstimateTimeVaryingDiffuseStateSpaceModelExample_eq00745763204054191191.png)
![$$\begin{array}{l}
\left[ {\begin{array}{*{20}{c}}
{{x_{1,t}}}\\
{{x_{2,t}}}
\end{array}} \right] = \left[ {\begin{array}{*{20}{c}}
{{\phi _1}}&{{\phi _2}}&0&0\\
1&0&0&0
\end{array}} \right]\left[ {\begin{array}{*{20}{c}}
{{x_{1,t - 1}}}\\
{{x_{2,t - 1}}}\\
{{x_{3,t - 1}}}\\
{{x_{4,t - 1}}}
\end{array}} \right] + \left[ {\begin{array}{*{20}{c}}
1\\
0
\end{array}} \right]{u_{1,t}}\\
{y_t} = b{x_{1,t}} + {\varepsilon _t}
\end{array}{\rm for\;}t = 26,$$](../examples/econ/win64/EstimateTimeVaryingDiffuseStateSpaceModelExample_eq05518269674757287990.png)
![$$\begin{array}{l}
\left[ {\begin{array}{*{20}{c}}
{{x_{1,t}}}\\
{{x_{2,t}}}
\end{array}} \right] = \left[ {\begin{array}{*{20}{c}}
{{\phi _1}}&{{\phi _2}}\\
1&0
\end{array}} \right]\left[ {\begin{array}{*{20}{c}}
{{x_{1,t - 1}}}\\
{{x_{2,t - 1}}}
\end{array}} \right] + \left[ {\begin{array}{*{20}{c}}
1\\
0
\end{array}} \right]{u_{1,t}}\\
{y_t} = b{x_{1,t}} + {\varepsilon _t}
\end{array}{\rm for\;}t = 27,...,50.$$](../examples/econ/win64/EstimateTimeVaryingDiffuseStateSpaceModelExample_eq08717328630752228422.png)
Запишите функцию, которая задает как параметры в params сопоставьте с матрицами модели в пространстве состояний, значениями начального состояния и типом состояния.
% Copyright 2015 The MathWorks, Inc. function [A,B,C,D,Mean0,Cov0,StateType] = diffuseAR2MAParamMap(params,T) %diffuseAR2MAParamMap Time-variant diffuse state-space model parameter %mapping function % % This function maps the vector params to the state-space matrices (A, B, % C, and D) and the type of state (StateType). From periods 1 to T/2, the % state model is an AR(2) and an MA(1) model, and the observation model is % the sum of the two states. From periods T/2 + 1 to T, the state model is % just the AR(2) model. The AR(2) model is diffuse. A1 = {[params(1) params(2) 0 0; 1 0 0 0; 0 0 0 params(3); 0 0 0 0]}; B1 = {[1 0; 0 0; 0 1; 0 1]}; C1 = {params(4)*[1 0 1 0]}; Mean0 = []; Cov0 = []; StateType = [2 2 0 0]; A2 = {[params(1) params(2) 0 0; 1 0 0 0]}; B2 = {[1; 0]}; A3 = {[params(1) params(2); 1 0]}; B3 = {[1; 0]}; C3 = {params(5)*[1 0]}; A = [repmat(A1,T/2,1);A2;repmat(A3,(T-2)/2,1)]; B = [repmat(B1,T/2,1);B2;repmat(B3,(T-2)/2,1)]; C = [repmat(C1,T/2,1);repmat(C3,T/2,1)]; D = 1; end
Сохраните этот код в файле с именем diffuseAR2MAParamMap на вашем пути MATLAB®.
Создайте модель в пространстве состояний путем передачи функционального diffuseAR2MAParamMap как указатель на функцию к dssm.
Mdl = dssm(@(params)diffuseAR2MAParamMap(params,T));
dssm неявно задает рассеянную модель в пространстве состояний. Обычно, вы не можете проверить рассеянные модели в пространстве состояний, которые неявно создаются.
Чтобы оценить параметры, передайте наблюдаемые ответы (y) к estimate . Задайте положительные начальные значения для неизвестных параметров.
params0 = 0.1*ones(5,1); EstMdl = estimate(Mdl,y,params0)
Method: Maximum likelihood (fminunc)
Effective Sample size: 48
Logarithmic likelihood: -110.313
Akaike info criterion: 230.626
Bayesian info criterion: 240.186
| Coeff Std Err t Stat Prob
---------------------------------------------------
c(1) | 0.44041 0.27687 1.59069 0.11168
c(2) | 0.03949 0.29585 0.13349 0.89380
c(3) | 0.78364 1.49223 0.52515 0.59948
c(4) | 1.64260 0.66736 2.46133 0.01384
c(5) | 1.90409 0.49374 3.85648 0.00012
|
| Final State Std Dev t Stat Prob
x(1) | -0.81932 0.46706 -1.75420 0.07940
x(2) | -0.29909 0.45939 -0.65107 0.51500
EstMdl =
State-space model type: <a href="matlab: doc dssm">dssm</a>
State vector length: Time-varying
Observation vector length: 1
State disturbance vector length: Time-varying
Observation innovation vector length: 1
Sample size supported by model: 50
State variables: x1, x2,...
State disturbances: u1, u2,...
Observation series: y1, y2,...
Observation innovations: e1, e2,...
State equations of period 1, 2, 3,..., 25:
x1(t) = (0.44)x1(t-1) + (0.04)x2(t-1) + u1(t)
x2(t) = x1(t-1)
x3(t) = (0.78)x4(t-1) + u2(t)
x4(t) = u2(t)
State equations of period 26:
x1(t) = (0.44)x1(t-1) + (0.04)x2(t-1) + u1(t)
x2(t) = x1(t-1)
State equations of period 27, 28, 29,..., 50:
x1(t) = (0.44)x1(t-1) + (0.04)x2(t-1) + u1(t)
x2(t) = x1(t-1)
Observation equation of period 1, 2, 3,..., 25:
y1(t) = (1.64)x1(t) + (1.64)x3(t) + e1(t)
Observation equation of period 26, 27, 28,..., 50:
y1(t) = (1.90)x1(t) + e1(t)
Initial state distribution:
Initial state means
x1 x2 x3 x4
0 0 0 0
Initial state covariance matrix
x1 x2 x3 x4
x1 Inf 0 0 0
x2 0 Inf 0 0
x3 0 0 1.61 1
x4 0 0 1 1
State types
x1 x2 x3 x4
Diffuse Diffuse Stationary Stationary
Предполагаемые параметры в одной стандартной погрешности их истинных значений, но стандартные погрешности довольно высоки. Поверхности вероятности моделей в пространстве состояний могут содержать локальные максимумы. Поэтому попробуйте несколько начальных значений параметров или рассмотрите использование refine.