В этом примере показано, как неявно создать модель диффузного состояния и пространства, которая содержит компонент регрессии в уравнении наблюдения. Модель состояния содержит ARMA (1,1) состояние и случайную прогулку.
Запись функции, указывающей, как параметры в params сопоставить с матрицами модели «состояние-пространство», значениями начального состояния и типом состояния. Укажите компонент регрессии путем дефляции наблюдений в функции. Символично, что модель:
![$$\begin{array}{l}
\left[ {\begin{array}{*{20}{c}}
{{x_{1,t}}}\\
{{x_{2,t}}}\\
x_{3,t}
\end{array}} \right] = \left[ {\begin{array}{*{20}{c}}
{{\phi _1}}&{{\theta _1}}&0\\
0&0&0\\
0&0&1
\end{array}} \right]\left[ {\begin{array}{*{20}{c}}
{{x_{1,t - 1}}}\\
{{x_{2,t - 1}}}\\
x_{3,t - 1}
\end{array}} \right] + \left[ {\begin{array}{*{20}{c}}
{{\sigma _1}}& 0\\
1 & 0\\
0 & \sigma_3
\end{array}} \right]\left[ {\begin{array}{*{20}{c}}
{u_{1,t}}\\
{u_{3,t}}
\end{array}} \right]\\
{y_t} - \beta {z_t} = a_1{x_{1,t}} + a_2x_{3,t} + {\sigma_2}{\varepsilon _t}.
\end{array}$$](../examples/econ/win64/ImplicitlyCreateDiffuseStateSpaceModelContExample_eq09053094443394099393.png)
% Copyright 2015 The MathWorks, Inc. function [A,B,C,D,Mean0,Cov0,StateType,DeflateY] = diffuseRegressionParamMap(params,y,z) % Diffuse state-space model with a regression component parameter mapping % function example. This function maps the vector params to the state-space % matrices (A, B, C, and D) and indicates the type of states (StateType). % The state model contains an ARMA(1,1) model and a random walk. varu1 = exp(params(3)); % Positive variance constraint vare1 = exp(params(5)); A = [params(1) params(2); 0 0]; B = [sqrt(varu1) 0; 1 0]; C = [varu1 0]; D = sqrt(vare1); Mean0 = []; % Let software infer Mean0 Cov0 = []; % Let software infer Cov0 StateType = [0 0 2]; DeflateY = y - params(6)*z; end
Сохранить этот код как файл с именем diffuseRegressionParamMap.m в папку на вашем пути MATLAB ®.
Создание модели диффузного состояния-пространства путем передачи diffuseRegressionParamMap как дескриптор функции для dssm.
Mdl = dssm(@(params)diffuseRegressionParamMap(params,y,z));
dssm неявно создает модель диффузного состояния-пространства. Обычно неявно определенные модели пространства состояний проверить невозможно.
Перед созданием модели убедитесь, что переменные y и z существуют в рабочей области.