corr

Подразумеваемые модели временные корреляции модели пространства состояний

Описание

corr функция возвращает подразумеваемые моделью временные корреляции и ковариации переменных состояния или измерения в стационарной, инвариантной по времени модели пространства состояний. Чтобы определить, захватывает ли модель характеристики, существующие в данных, Вы можете сравнить подразумеваемые модели ассоциации настоящих и отстающих переменных с выборкой аналогов. Другие инструменты модели пространства состояний для характеристики динамики заданной системы включают в себя следующее:

  • Функция импульсной характеристики (IRF), вычисленная irf и нанесено на график irfplot, отслеживает эффекты шока к нарушению порядка состояния на переменных измерения в системе.

  • Прогнозируемое разложение отклонений ошибок (FEVD), вычисленное fevd, предоставляет информацию об относительной важности каждого нарушения порядка состояния в влиянии на отклонение ошибки прогноза всех переменных измерения в системе.

Полностью заданная модель пространства состояний

пример

Cyy = corr(Mdl) Возвраты Corr (yt, y t - 1), подразумеваемая модель временная корреляция каждой переменной измерения полностью заданной, стандартной, стационарной модели пространства состояний Mdl.

пример

Cyy = corr(Mdl,Name,Value) использует дополнительные опции, заданные одним или несколькими аргументами в виде имя-значение. Для примера, 'Covariance',true,'NumLags',10 задает возврат временных ковариаций Cov (yt, y t - h), h = 0- 10.

пример

[Cyy,Cxx,Cyx] = corr(___) также возвраты Corr (xt, x t - h), корреляции между переменными состояния и их автолагами Cxx, и Corr (yt, x t - h), корреляции между переменными состояния и их самозатухами Cxx и перекрестные корреляции между переменными измерения и лагами переменных состояния Cyx использование любой комбинации входных аргументов в предыдущих синтаксисах. h - значение NumLags аргумент имя-значение. corr возвращает ковариации, когда значение Covariance аргумент имя-значение true.

Частично заданная модель пространства состояний

пример

[Cyy,Cxx,Cyx] = corr(___,'Params',estParams) использует частично заданную, стандартную модель пространства состояний Mdl и подставляет оценки параметров estParams для всех неизвестных параметров в модели.

Примеры

свернуть все

Явное создание модели пространства состояний

x1,t=0.9x1,t-1+0.2u1,tx2,t=0.1x1,t-1+0.3x2,t-1+u2,ty1,t=x1,ty2,t=x1,t+x2,t.

A = [0.9 0; 0.1 0.3];
B = [0.2 0; 0 1];
C = [1 0; 1 1];
Mdl = ssm(A,B,C,'StateType',[0 0])
Mdl = 
State-space model type: ssm

State vector length: 2
Observation vector length: 2
State disturbance vector length: 2
Observation innovation vector length: 0
Sample size supported by model: Unlimited

State variables: x1, x2,...
State disturbances: u1, u2,...
Observation series: y1, y2,...
Observation innovations: e1, e2,...

State equations:
x1(t) = (0.90)x1(t-1) + (0.20)u1(t)
x2(t) = (0.10)x1(t-1) + (0.30)x2(t-1) + u2(t)

Observation equations:
y1(t) = x1(t)
y2(t) = x1(t) + x2(t)

Initial state distribution:

Initial state means
 x1  x2 
  0   0 

Initial state covariance matrix
     x1    x2   
 x1  0.21  0.03 
 x2  0.03  1.10 

State types
     x1          x2     
 Stationary  Stationary 

Mdl является ssm объект модели. Поскольку все параметры имеют известные значения, объект полностью задан.

Вычислите временные корреляции переменных измерения через задержку 1.

Cyy = corr(Mdl)
Cyy = 
Cyy(:,:,1) =

    1.0000    0.4411
    0.9000    0.4072


Cyy(:,:,2) =

    0.4411    1.0000
    0.3970    0.4212

Строки соответствуют лагам, столбцы соответствуют последнему наблюдению переменной измерения в корреляции, а страницы соответствуют отстающей переменной измерения. Для примера,Corr(y1,ty2,t-1) является 0.3970.

Отобразите тепловую карту временных корреляций между последним наблюдением каждой переменной измерения и всеми лагами переменной измерения 1.

Corryy1 = Cyy(:,:,1);
hm = heatmap(Corryy1);
ylabel('h');
hm.YDisplayLabels = ["0" "1"];
xlabel('i')
hm.XDisplayLabels = ["1" "2"];
title('Corr(y_{i,t},y_{1,t - h})')

Figure contains an object of type heatmap. The chart of type heatmap has title Corr(y_{i,t},y_{1,t - h}).

Отобразите тепловую карту временных корреляций между текущим наблюдением переменной измерения 1 и всеми лагами всех переменных измерения.

Corry1y = squeeze(Cyy(:,1,:));
hm = heatmap(Corry1y);
ylabel('h');
hm.YDisplayLabels = ["0" "1"];
xlabel('j')
hm.XDisplayLabels = ["1" "2"];
title('Corr(y_{1,t},y_{j,t - h})')

Figure contains an object of type heatmap. The chart of type heatmap has title Corr(y_{1,t},y_{j,t - h}).

Отобразите тепловую карту временных корреляций между текущим наблюдением всех переменных измерения и первой задержкой всех переменных измерения.

Corryylag1 = squeeze(Cyy(2,:,:));
hm = heatmap(Corryylag1);
ylabel('i');
hm.YDisplayLabels = ["1" "2"];
xlabel('j')
hm.XDisplayLabels = ["1" "2"];
title('Corr(y_{i,t},y_{j,t - 1})')

Figure contains an object of type heatmap. The chart of type heatmap has title Corr(y_{i,t},y_{j,t - 1}).

Явное создание модели пространства состояний

x1,t=0.9x1,t-1+0.2u1,tx2,t=0.1x1,t-1-0.3x2,t-1+u2,ty1,t=x1,t+ε1,ty2,t=x1,t+x2,t+ε2,t.

A = [0.9 0; 0.1 -0.3];
B = [0.2 0; 0 1];
C = [1 0; 1 1];
D = eye(2);
Mdl = ssm(A,B,C,D,'StateType',[0 0]);

Mdl является ssm объект модели.

Вычислите временные корреляции переменных измерения с задержкой 0 до 20.

numlags = 20;
Cyy = corr(Mdl,'NumLags',numlags);

Cyy массив 21 на 2 на 2, представляющий временные корреляции с 20 периодами переменных измерения.

Отобразите Cyy(:,2,2), что является подразумеваемой моделью автокорреляцией y2,t.

acfy2 = Cyy(:,2,2)
acfy2 = 21×1

    1.0000
   -0.0466
    0.1267
    0.0634
    0.0723
    0.0605
    0.0558
    0.0498
    0.0449
    0.0404
      ⋮

Сгенерируйте случайный путь измерений длины 200 из модели.

rng(1); % For reproducibility
Y = simulate(Mdl,200);

Вычислите выборочную автокорреляционную функцию (ACF) каждой переменной для 2q0 лагов.

sacfy1 = autocorr(Y(:,1),'NumLags',numlags);
sacfy2 = autocorr(Y(:,2),'NumLags',numlags);

Визуально сравните подразумеваемые модели и выборку ACF каждой переменной измерения.

acfy1 = Cyy(:,1,1);
plot([acfy1 sacfy1])
xticklabels(0:numlags)
ylabel("Autocorrelation")
xlabel("Lags")
legend(["ACF(y_{1,t})" "Sample ACF(y_{1,t})"])
title("ACF(y_{1,t})")
axis tight

Figure contains an axes. The axes with title ACF(y_{1,t}) contains 2 objects of type line. These objects represent ACF(y_{1,t}), Sample ACF(y_{1,t}).

plot([acfy2 sacfy2])
xticklabels(0:numlags)
ylabel("Autocorrelation")
xlabel("Lags")
legend(["ACF(y_{2,t})" "Sample ACF(y_{2,t})"])
title("ACF(y_{2,t})")
axis tight

Figure contains an axes. The axes with title ACF(y_{2,t}) contains 2 objects of type line. These objects represent ACF(y_{2,t}), Sample ACF(y_{2,t}).

Явное создание модели пространства состояний

x1,t=0.9x1,t-1+0.2u1,tx2,t=0.1x1,t-1-0.3x2,t-1+u2,ty1,t=x1,t+ε1,ty2,t=x1,t+x2,t+ε2,t.

A = [0.9 0; 0.1 -0.3];
B = [0.2 0; 0 1];
C = [1 0; 1 1];
D = eye(2);
Mdl = ssm(A,B,C,D,'StateType',[0 0]);

Mdl является ssm объект модели.

Вычислите временные корреляции переменных измерения и состояния, а также их перекрестные корреляции.

[Cyy,Cxx,Cyx] = corr(Mdl);

Каждая выходная переменная - массив 2 на 2 на 2, содержащий временные корреляции от задержки от 0 до 1. Cyy содержит корреляции между переменными измерения, Cxx содержит корреляции между переменными состояния и Cyx содержит перекрестные корреляции между текущим наблюдением переменных измерения и переменными запаздывающего состояния.

Постройте тепловую карту корреляций между x1,t и лаги всех переменных состояния.

Cx1x = squeeze(Cxx(:,1,:));
hm = heatmap(Cx1x);
ylabel('h');
hm.YDisplayLabels = ["0" "1"];
xlabel('j')
hm.XDisplayLabels = ["1" "2"];
title('Corr(x_{1,t},x_{j,t - h})')

Figure contains an object of type heatmap. The chart of type heatmap has title Corr(x_{1,t},x_{j,t - h}).

Постройте тепловую карту перекрестных корреляций между всеми переменными измерения и лагами x2,t.

Cyx2 = Cyx(:,:,2);
hm = heatmap(Cyx2);
ylabel('h');
hm.YDisplayLabels = ["0" "1"];
xlabel('i')
hm.XDisplayLabels = ["1" "2"];
title('Corr(y_{i,t},x_{2,t - h})')

Figure contains an object of type heatmap. The chart of type heatmap has title Corr(y_{i,t},x_{2,t - h}).

Симулируйте данные из известной модели, подгоняйте модель к данным, а затем сравните ковариации, подразумеваемые к выборке и модели.

Моделирование данных

Явное создание модели пространства состояний

x1,t=0.9x1,t-1+0.2u1,tx2,t=0.1x1,t-1-0.3x2,t-1+u2,ty1,t=x1,t+ε1,ty2,t=x1,t+x2,t+ε2,t.

ADGP = [0.9 0; 0.1 -0.3];
BDGP = [0.2 0; 0 1];
CDGP = [1 0; 1 1];
DDGP = eye(2);
DGP = ssm(ADGP,BDGP,CDGP,DDGP,'StateType',[0 0]);

Сгенерируйте случайный путь измерений длины 500 из модели.

rng(1); % For reproducibility
numobs = 500;
Y = simulate(DGP,numobs);

Подгонка модели к данным

Создайте шаблон модели пространства состояний, чтобы соответствовать данным путем замены каждого ненулевого параметра процесса генерации данных на NaN значение.

A = [NaN 0; NaN NaN];
B = [NaN 0; 0 NaN];
Mdl = ssm(A,B,CDGP,DDGP,'StateType',[0  0]);

Подбор шаблона модели к данным. Задайте случайный набор положительных начальных значений. Верните вектор предполагаемых параметров.

[~,estParams] = estimate(Mdl,Y,abs(rand(5,1)));
Method: Maximum likelihood (fminunc)
Sample size: 500
Logarithmic  likelihood:     -1694.08
Akaike   info criterion:      3398.15
Bayesian info criterion:      3419.23
      |     Coeff       Std Err   t Stat     Prob  
---------------------------------------------------
 c(1) |  0.91506       0.04229   21.63952   0      
 c(2) | -0.25898       0.25406   -1.01936  0.30804 
 c(3) | -0.15383       0.08243   -1.86621  0.06201 
 c(4) | -0.16808       0.04926   -3.41221  0.00064 
 c(5) |  1.19275       0.06842   17.43153   0      
      |                                            
      |   Final State   Std Dev    t Stat    Prob  
 x(1) | -0.12293       0.30568   -0.40217  0.68756 
 x(2) | -0.80608       0.79263   -1.01697  0.30917 

Вычисление ковариаций

Вычислите подразумеваемые моделью временные ковариации переменных измерения путем передачи шаблона модели пространства состояний и предполагаемых параметров в corr. Верните ковариации вместо корреляций.

Covyy = corr(Mdl,'Params',estParams,'Covariance',true)
Covyy = 
Covyy(:,:,1) =

    1.1737    0.1376
    0.1589    0.1195


Covyy(:,:,2) =

    0.1376    2.5676
    0.1259   -0.1297

Covyy массив временных ковариаций переменных измерения 2 на 2 на 2.

Вычислите выборочные ковариации переменных измерения и их первые лаги.

AugData = lagmatrix(Y,[0 1]);
SCovyy = cov(AugData(2:end,:));

Сравнение ковариаций

Сравните подразумеваемые моделью временные ковариации и выборочные ковариации.

names = ["y_1t" "y_2t" "y_1t-1" "y_2t-1"];

Covy1y = squeeze(Covyy(:,1,:))';
Covy2y = squeeze(Covyy(:,2,:))';
CovyLag1 = [Covy1y(:,2) Covy2y(:,2) Covy1y(:,1) Covy2y(:,1)]';
ModelCovariances = array2table([Covy1y(:) Covy2y(:) CovyLag1],'RowNames',names,...
    'VariableNames',names)
ModelCovariances=4×4 table
               y_1t        y_2t      y_1t-1      y_2t-1 
              _______    ________    _______    ________

    y_1t       1.1737     0.13759    0.15891      0.1259
    y_2t      0.13759      2.5676    0.11949    -0.12972
    y_1t-1    0.15891     0.11949     1.1737     0.13759
    y_2t-1     0.1259    -0.12972    0.13759      2.5676

SampleCovariances = array2table(SCovyy,'RowNames',names,'VariableNames',names)
SampleCovariances=4×4 table
                y_1t        y_2t       y_1t-1      y_2t-1 
              ________    ________    ________    ________

    y_1t        1.2459     0.22058     0.11689    0.070475
    y_2t       0.22058      2.5332    0.074687    -0.17466
    y_1t-1     0.11689    0.074687      1.2437     0.22158
    y_2t-1    0.070475    -0.17466     0.22158      2.5419

Подразумеваемые и выборочные ковариации, по-видимому, аналогичны по величине. Обратите внимание, что ковариации инвариантны к ссылке времени; для примера, Cov (y1,t,y2,t) = Cov (y1,t-1,y2,t-1).

Входные параметры

свернуть все

Стандартная, стационарная модель пространства состояний, заданная как ssm объект модели, возвращенный ssm или его estimate функция.

  • Временные моменты хорошо заданы для стационарных состояний. Поэтому, corr выдает ошибку, если применяется одно или несколько из следующих условий:

    • По крайней мере, одно состояние нестационарно (Mdl.StateType содержит, по крайней мере, одно значение 2).

    • По меньшей мере, один коэффициент является изменяющимся во времени.

    • Переменная measurement или state изменяется по размерности.

  • Если Mdl частично задан (то есть содержит неизвестные параметры), задает оценки неизвестных параметров при помощи 'Params' аргумент имя-значение. В противном случае, corr выдает ошибку.

  • Начальная ковариационная матрица Mdl.Cov0 подразумевается переходным уравнением. Поэтому, corr игнорирует Mdl.Cov0 и значения, соответствующие Cov0 в значении Params.

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: 'Covariance',true,'NumLags',10 задает возврат Cov (yt, y t - 10), ковариаций само- и перекрестных лагов переменных измерения от лагов 0 до 10.

Максимальное количество состояний или переменных измерения для включения в расчет, заданное как неотрицательное целое число. corr возвращает связи от лагов 0 до NumLags.

Пример: 'NumLags',10

Типы данных: double

Оценки неизвестных параметров в частично заданной модели пространства состояний Mdl, заданный как числовой вектор.

Если Mdl частично задан (содержит неизвестные параметры, заданные NaNs), необходимо указать Params. estimate функция возвращает оценки параметров Mdl в соответствующей форме. Однако можно поставить пользовательские оценки, расположив элементы Params следующим образом:

  • Если Mdl является явно созданной моделью (Mdl.ParamMap пуст []), расположить элементы Params для соответствия попаданиям столбцового поиска NaNs в матрицах коэффициентов модели пространства состояний, начальных векторов средних значений состояний и ковариации матрице.

    • Если Mdl является инвариантным по времени, порядок A, B, C, D, Mean0, и Cov0.

    • Если Mdl изменяется ли время, порядок A{1} через A{end}, B{1} через B{end}, C{1} через C{end}, D{1} через D{end}, Mean0, и Cov0.

  • Если Mdl является неявно созданной моделью (Mdl.ParamMap является указателем на функцию), первый входной параметр функции отображения параметра в матрицу определяет порядок элементов Params.

Если Mdl полностью задан, corr игнорирует Params.

Пример: Рассмотрим модель пространства состояний Mdl с A = B = [NaN 0; 0 NaN] , C = [1; 1], D = 0, и начальное средство состояния 0 с ковариацией eye(2). Mdl частично задан и явно создан. Потому что параметры модели содержат в общей сложности четыре NaNs, Params должен быть вектором 4 на 1, где Params(1) - оценка A(1,1), Params(2) - оценка A(2,2), Params(3) - оценка B(1,1), и Params(4) - оценка B(2,2).

Типы данных: double

Флаг для возврата временных ковариаций вместо корреляций, заданный как значение в этой таблице.

ЗначениеОписание
falseВыходные аргументы представляют временные корреляции
trueВыходные аргументы представляют временные ковариации

Пример: 'Covariance',true

Типы данных: logical

Выходные аргументы

свернуть все

Временные ассоциации переменных измерения (корреляции или ковариации), возвращенные как a (NumLags + 1) -by- n -by- n числовой массив.

Ции (h + 1, i, j) - временная ассоциация между y i, t и y j, t - h, для h = 0,1,2..., NumLags, i = 1,2,..., n (количество переменных измерения) и j = 1,2..., n.

Временные ассоциации переменных состояния, возвращенные как a (NumLags + 1) -by- m -by- m числовой массив.

Cxx (h + 1, i, j) - временная ассоциация между x i, t и x j, t - h, для h = 0,1,2..., NumLags, i = 1,2,..., m (количество переменных состояния) и j = 1,2..., m.

Временные перекрестные связи между переменными измерения и состоянием, возвращенные как a (NumLags + 1) -by- n -by- m числовой массив.

Цикс (h + 1, i, j) - временная ассоциация между y i, t и x j, t - h, для h = 0,1,2..., NumLags, i = 1,2,..., n и j = 1,2..., m.

Подробнее о

свернуть все

Неявные временные ассоциации модели

Model-implied temporal correlations and covariances измеряйте связи само- и перекрестной задержки между переменными измерения и состояния в модели пространства состояний, как предписано моделью. Чтобы облегчить спецификацию модели, можно сравнить подразумеваемые моделью временные корреляции и ковариации с аналогами выборки.

Рассмотрим инвариантную по времени модель пространства состояний во времени t

xt=Axt1+Butyt=Cxt+Dεt.

Рассмотрим униженную модель пространства состояний, представленную переменными состояния и измерения x˜0,t и y˜0,t:

  1. Добавьте модель пространства состояний с вектором постоянного состояния соответствующего размера, представляющим точку пересечения.

    [x0,t1]=[A0A101][x0,t11]+[B0]utyt=[C0C1][x0,t1]+Dεt.

  2. Отключите переменные.

    x˜0,t=x0,tE(x0,t)=x0,t(IA0)1A1y˜0,t=y0,tE(y0,t)=y0,tC1C0(IA0)1A1.

  3. Ослабьте модель пространства состояний и сбросьте постоянные условия, которые не влияют на ковариацию.

    x˜0,t=A0x˜0,t1+Buty˜0,t=C0x˜0,t+Dεt.

Поскольку различие между полной моделью пространства состояний и униженной моделью является включением постоянных состояний, Cov(xt,xth)=Cov(x˜0,t,x˜0,th)=Γ0,h, что подразумевает

Cxx(1,:,:)=Γ0,0=A0Γ0,0A0+BB.

Давайте Γ˜0,0 быть решением уравнения. Используя униженное уравнение состояния,

Cxx(h+1,:,:)=Γ0,h=AoΓh1;h=1,2,....

Предыдущие результаты предполагают следующее:

  • Cyy(1,:,:)=Cov(yt,yt)=C0Γ0,0C0+DD.

  • Cyy(h+1,:,:)=Cov(yt,yth)=C0Γ0,hC0;h=1,2,....

  • Cyx(h+1:,:)=Cov(yt,xth)=C0Γ0,h;h=0,1,2....

Совет

  • Чтобы получить матрицу ассоциации лидирующих переменных из матрицы ассоциации отстающих переменных, используйте тождества

    C(at,bt+h)=C(at,bth),

    где:

    • C является функцией ассоциации, либо Corr, либо Cov.

    • at и bt являются yt или xt.

Введенный в R2021a