Преобразование из vgx Функции для объектов модели

В R2017a функции varm, arma2ar, arma2ma, и isStable замененный vgxar, vgxcount, vgxdisp, vgxget, vgxinfer, vgxloglik, vgxma, vgxplot, vgxpred, vgxproc, vgxqual, vgxset, vgxsim, и vgxvarx. Если вы используете более старые vgx многомерные функции анализа данных в релизах после R2017b, MATLAB® выдает ошибку. В этом разделе показано, как преобразовать общие задачи, которые используют vgx функций к более новой функциональности.

Примите следующие условия:

  • Вы хотите смоделировать три переменные отклика одновременно с помощью модели VARX (4). Модель содержит регрессионный компонент для двух переменных предиктора, постоянного вектора и линейного термина временного тренда.

  • Предварительный образец данных отклика находится в матрице 4 на 3 Y0.

  • Данные отклика выборки оценки находятся в матрице 100 на 3 Y.

  • Экзогенные данные находятся в матрице 100 на 2 X.

В этой таблице сравниваются старые и новые способы выполнения общих задач на основе заявленных условий.

ЗадачаСтарая функциональность или поведениеНовая функциональность или поведение
Создайте шаблон модели VAR (4) для оценки.

Mdl = vgxset('n',3,'nAR',4,'Constant',true);

Mdl = varm(3,4);
Mdl.Trend = nan(3,1);

Найдите свойства модели, такие как ковариационная матрица инноваций.
vgxget(Mdl,'Q')
Mdl.Covariance
Установите ограничения равенства для оценки; для примера установите постоянную модели в вектор таковых.
Mdl = vgxset(Mdl,'a',ones(3,1),'asolve',false(3,1));
Mdl.Constant = ones(3,1);
Подгонка неограниченной модели с временным трендом к данным. Все экзогенные предикторы происходят в каждом уравнении отклика и не разделяют коэффициенты.

Xk = [(1:100)' X];    % Include linear trend
Xk = kron(Xk,eye(3)); % Create design matrix
Xk = mat2cell(Xk,3*ones(100,1),size(Xk,2)); % Pack into 100-by-1 cell vector

Mdl.nX = size(Xk{1},2); % vgxvarx must know the number ...
                        % of exogenous variables
EstMdl = vgxvarx(Mdl,Y,Xk,Y0);
vgxvarx требует матрицу проекта, а не матрицу данных. Линейный тренд и две экзогенные переменные дают девять столбцов в матрице проекта.

EstMdl = estimate(Mdl,Y,'Y0',Y0,'X',X);
Подбор модели к данным. X(:,1) появляется во всех уравнениях, но X(:,2) появляется только в первом уравнении.
Xk = [(1:100)' X];
Xk = [kron(Xk(:,1:2),eye(3)) kron(Xk(:,3),[1; 0; 0])];
Xk = mat2cell(Xk,3*ones(100,1),size(Xk,2));
EstMdl = vgxvarx(Mdl,Y,Xk,Y0);
Mdl.Beta = nan(3,2);
Mdl.Beta(2:3,2) = 0;
EstMdl = estimate(Mdl,Y,'Y0',Y0,'X',X);
Получите оцененные коэффициенты регрессии.

EstMdl.b, вектор 9 на 1, в котором:

  • EstMdl.b(1:3) являются оцененными временными трендами для уравнений 1-3, соответственно.

  • EstMdl.b(4:6) являются оцененными коэффициентами регрессии экзогенной переменной X(:,1) для уравнений 1-3, соответственно.

  • EstMdl.b(7:9) являются оцененными коэффициентами регрессии экзогенной переменной X(:,2) для уравнений 1-3, соответственно.

EstMdl.Beta, матрица 3 на 2 с строками, соответствующими уравнениям (столбцы Y) и столбцы, соответствующие экзогенным переменным (столбцы X)

Отобразите предполагаемую модель.
vgxdisp(EstMdl)
summarize(EstMdl)
Получите количество неограниченных или оцененных параметров в модели.

[~,numactive] = vgxcount(EstMdl);
numactive включает оценочные элементы в ковариационную матрицу инноваций.

results = summarize(EstMdl);
numactive = results.NumEstimatedParameters;
numactive не включает оценочные элементы ковариационной матрицы инноваций.

Вывод невязок.
[EstMdl,~,~,E] = vgxvarx(Mdl,Y,Xk,Y0); % Method 1
E = vgxinfer(EstMdl,Y,X,Y0);           % Method 2
[EstMdl,~,~,E] = estimate(Mdl,Y,'Y0',Y0,'X',X);
E = infer(EstMdl,Y,'Y0',Y0,'X',X);
Получите статистику подгонки.
logl = vgxloglik(EstMdl,E);
[aic,bic] = aicbic(logl,numactive - 6,100) ...
            % Remove count of estimated covariance elements
logl = results.LogLikelihood;
aic = results.AIC;
bic = results.BIC;
Определите стабильность модели.
isstable = vgxqual(EstMdl);
ARLagOp = LagOp([{eye(3)} EstMdl.AR]);
isstable = isStable(ARLagOp);
Симулируйте 1000 путей откликов в течение периода оценки.
YSim = vgxproc(EstMdl,100,X,Y0,[],1000);
YSim = simulate(EstMdl,100,'Y0',Y0,...
    'X',X,'NumPaths',1000);
Спрогнозируйте модель в 8-периодический горизонт с матрицей 8 на 2 XF содержащие будущие экзогенные данные.
XFk = [(101:108)' XF];
XFk = kron(XFk,eye(3));  % Create design matrix
XFk = mat2cell(XFk,3*ones(8,1),size(XFk,2)); 
YF = vgxpred(EstMdl,8,XFk,Y);
YF = forecast(EstMdl,8,Y,'X',XF);

Некоторые заметные различия между vgx и varm функциональными возможностями являются:

  • varm не поддерживает создание моделей с несущими или MA компонентами. Однако можно выполнить некоторые задачи, используя неявную модель SVARMA. Посмотрите arma2ar, arma2ma, armairf, и armafevd.

  • estimate не поддерживает спецификацию диагональной ковариационной матрицы для оценки.

  • varm не допускает того же коэффициента регрессии в нескольких уравнениях. Каждая экзогенная переменная связана с уникальным коэффициентом регрессии для уравнений.

  • Функции в varm среда не содержит несколько путей экзогенных данных. Вместо этого, когда функция действует на нескольких путях откликов или инноваций, функция применяет одни и те же экзогенные данные ко всем путям.

См. также

Объекты

Функции

Похожие темы