Я использую систему 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
Заранее спасибо.