Как кодировать векторную авторегрессивную модель в matlab?
Модель VAR обобщает одномерную авторегрессивную (AR) модель для нескольких временных рядов. Я хотел бы реализовать модель векторной авторегрессии, которая описывает следующую формулу на основе наблюдения времени t:
x (t) = c + (t-1) ∑ (i = t + T) * a (i) x (i) + € (t)
a (i) = параметры модели €(t) = гауссов шум
Данные, которые я использую, очень большие, поэтому я не буду их публиковать, но одна из вещей, в которых мне нужна помощь, - это вывод матрицы смежности для любых синтетических данных. Вот что у меня есть:
function [ beta, adj,results ] = granger( id, t, X, lambda, lag, param )
%GRANGER Graphical Granger Modeling
% INPUTS: id = Column with n elements of unique subject identifiers used to indicate
% measurements from the same subjects.
% t = Column with n elements of measurement times corresponding to id.
% NB: AT THE MOMENT ASSUMING EQUISPACED DATA.
% X = n-by-(p+1) Matrix of covariates corresponding to id and t.
% lambda = tunning parameter for the penalty terms.
% param = Struct of any other parameters you want to pass to your
% code.
% lag = value of time lag to look backward from current time.
% OUTPUTS: bhat = estimated effects parameters corresponding to X.
% adj = adjacency matrix among the columns of X.
% results = Struct of any other results you want to send out
% from your code.
if nargin<5; param={}; end;
% if ~isfield(param,'maxIt'); param.maxIt = 1000; end %For example, set max iterations as 1000.
% if ~isfield(param,'tol'); param.tol = 0.00001; end; % Convergence tolerance;
a = ucf.x;
b = ucf.y;
end