Как я могу включить диагональную матрицу перехода в структуру State-Space Model (SSM)? - PullRequest
0 голосов
/ 22 мая 2019

Я использую систему SSM для оценки модели кривой доходности Diebold-Li, аналогично, как в https://nl.mathworks.com/help/econ/examples/using-the-kalman-filter-to-estimate-and-forecast-the-diebold-li-model.html

Однако в приведенной выше ссылке используется матрица VAR (1) для матрицы перехода A, тогда как я хочу ограничить диагональ A (три отдельных процесса AR (1)). Есть ли умный способ включить это ограничение в предоставленный код:

%% State-Space Estimation of the DNS-model with Kalman filter 
Mdl = ssm(@(params)Example_DieboldLi(params,yields,maturities));
% Initialisation 
A0 = EstMdlVAR.AR{1};      % Get the VAR(1) matrix (stored as a cell array)
A0 = A0(:);                % Stack it columnwise
options = optimoptions('fminunc','MaxFunEvals',25000,'algorithm','quasi-newton', ...
    'TolFun' ,1e-8,'TolX',1e-8,'MaxIter',1000,'Display','off');
[EstMdlSSM,params] = estimate(Mdl,yields,param0,'Display','off', ...
    'options',options,'Univariate',true);

Я подозреваю, что мне нужно изменить процедуру оптимизации с 'fminunc' на 'fmincon', но я не знаю, как добавить ограничения, учитывая способ написания кода.

Я попытался инициализировать недиагональные элементы от A до 0 и сохранил процедуру оптимизации на «fminunc», но в итоге я получил полную матрицу VAR (1).

A0 = zeros(3);               % AR(1) version
A0(1,1) = EstMdlAR_beta1.AR{1,1};
A0(2,2) = EstMdlAR_beta2.AR{1,1};
A0(3,3) = EstMdlAR_beta3.AR{1,1};
A0_column = A0(:);           % Stack it columnwise

Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...