Реализуйте, казалось бы, несвязанную регрессию

Этот пример показывает, как включить экзогенные данные для нескольких, казалось бы, несвязанных регрессионых (SUR) анализов. Ответ и экзогенный ряд являются случайными путями из стандартного Гауссова распределения.

В, казалось бы, несвязанной регрессии (SUR) каждая переменная отклика является функцией подмножества экзогенного ряда, но не какой-либо эндогенной переменной. То есть, для j=1,..,n и t=1,...,T, модель для отклика j в период t является

yjt=aj+bj1xk1t+bj2xk2t+...+bjkjxkjt+εjt

Индексы коэффициентов регрессии и экзогенных предикторов указывают, что:

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

  • Серия ответов может не иметь общих точек пересечения или коэффициентов регрессии.

SUR учитывает внутрипериодическую инновационную корреляцию, но межпериодическую инновационную независимость, т.е.,

E(εitεjs|X)={0;ts,ijσij;ij,t=sσi2>0;i=j,t=s.

Симулируйте данные из истинной модели

Предположим, что истинная модель является

y1t=1+2x1t-1.5x2t+0.5x3t+0.75x4t+ε1ty2t=-1+4x1t+2.5x2t-1.75x3t-0.05x4t+ε2ty3t=0.5-2x1t+0.5x2t-1.5x3t+0.7x4t+ε3t,

где εjt, j=1,...,n являются многомерными Гауссовыми случайными переменными, каждая из которых имеет среднее значение нуля и совместно имеет ковариационную матрицу

Σ=[10.5-0.050.510.25-0.050.251]

Предположим, что пути представляют различные эконометрические измерения, например, возвраты запаса.

Симулируйте четыре экзогенных пути предиктора из стандартного Гауссова распределения.

rng(1);   % For reproducibility
n = 3;    % Number of response series 
nExo = 4; % Number of exogenous series
T = 100;
X = randn(100,nExo);

mvregress, рабочая лошадка estimate, требует, чтобы вы вводили экзогенные данные в T-by-1 вектор камеры. Камера t вектор камеры является матрицей проекта, указывающей линейное соотношение экзогенных переменных с каждой последовательностью откликов в периоде t. Однако estimate связывает каждый предиктор с каждым ответом. В результате estimate требует данные предиктора в матрице.

Создайте объект модели VAR, который характеризует истинную модель. Симулируйте путь 100 длины от модели.

aTrue = [1; -1; 0.5];
bTrue = [[2; 4; -2] [-1.5; 2.5; 0.5] [0.5; -1.75; -1.5] [0.75; -0.05; 0.7]];
InnovCov = [1 0.5 -0.05; 0.5 1 0.25; -0.05 0.25 1];
TrueMdl = varm('Beta',bTrue,'Constant',aTrue,'Covariance',InnovCov)
TrueMdl = 
  varm with properties:

     Description: "3-Dimensional VARX(0) Model with 4 Predictors"
     SeriesNames: "Y1"  "Y2"  "Y3" 
       NumSeries: 3
               P: 0
        Constant: [1 -1 0.5]'
              AR: {}
           Trend: [3×1 vector of zeros]
            Beta: [3×4 matrix]
      Covariance: [3×3 matrix]
Y = simulate(TrueMdl,T,'X',X);

SUR, использующий все предикторы для каждой серии ответов

Создайте модель VAR, подходящую для SUR, используя краткий синтаксис varm.

Mdl1 = varm(n,0);

Mdl1 является varm шаблон объекта модели, представляющий трехмерную модель VAR (0). В отличие от TrueMdl, ни один из коэффициентов, точек пересечения и внутрипериодической ковариационной матрицы не имеет значений. Поэтому Mdl1 подходит для оценки.

Оцените коэффициенты регрессии, используя estimate. Извлеките невязки. Отобразите предполагаемую модель с помощью summarize.

[EstMdl1,~,~,E] = estimate(Mdl1,Y,'X',X);
summarize(EstMdl1)
 
   3-Dimensional VARX(0) Model with 4 Predictors
 
    Effective Sample Size: 100
    Number of Estimated Parameters: 15
    LogLikelihood: -412.026
    AIC: 854.052
    BIC: 893.129
 
                     Value      StandardError    TStatistic      PValue   
                   _________    _____________    __________    ___________

    Constant(1)      0.97898       0.11953          8.1902      2.6084e-16
    Constant(2)      -1.0644       0.10019         -10.623      2.3199e-26
    Constant(3)      0.45323       0.10123          4.4772      7.5611e-06
    Beta(1,1)         1.7686       0.11994          14.745      3.2948e-49
    Beta(2,1)         3.8576       0.10054           38.37     4.1502e-322
    Beta(3,1)        -2.2009       0.10158         -21.667     4.1715e-104
    Beta(1,2)        -1.5508       0.12345         -12.563      3.3861e-36
    Beta(2,2)         2.4407       0.10348          23.587     5.2666e-123
    Beta(3,2)        0.46414       0.10455          4.4395      9.0156e-06
    Beta(1,3)        0.69588       0.13491          5.1583      2.4922e-07
    Beta(2,3)        -1.7139       0.11308         -15.156      6.8911e-52
    Beta(3,3)        -1.6414       0.11425         -14.367      8.3713e-47
    Beta(1,4)        0.67036       0.12731          5.2654       1.399e-07
    Beta(2,4)      -0.056437       0.10672        -0.52885         0.59691
    Beta(3,4)        0.56581       0.10782          5.2476      1.5406e-07

 
   Innovations Covariance Matrix:
    1.3850    0.6673   -0.1591
    0.6673    0.9731    0.2165
   -0.1591    0.2165    0.9934

 
   Innovations Correlation Matrix:
    1.0000    0.5748   -0.1357
    0.5748    1.0000    0.2202
   -0.1357    0.2202    1.0000

EstMdl является varm объект модели, содержащий предполагаемые параметры. E является Tоколо- n матрица невязок.

Кроме того, и в этом случае можно использовать оператор обратной косой черты на X и Y. Однако необходимо включить столбец с таковыми в X для точек пересечения.

coeff = ([ones(T,1) X]\Y)
coeff = 5×3

    0.9790   -1.0644    0.4532
    1.7686    3.8576   -2.2009
   -1.5508    2.4407    0.4641
    0.6959   -1.7139   -1.6414
    0.6704   -0.0564    0.5658

coeff является n-by- nExo + 1 матрица предполагаемых коэффициентов регрессии и точек пересечения. Предполагаемые точки пересечения находятся в первом столбце, а остальная часть матрицы содержит предполагаемые коэффициенты регрессии

Сравните все оценки с их истинными значениями.

InterceptsTbl = table(aTrue,EstMdl1.Constant,coeff(1,:)',...
    'VariableNames',["True" "estimate" "backslash"])
InterceptsTbl=3×3 table
    True    estimate    backslash
    ____    ________    _________

      1     0.97898      0.97898 
     -1     -1.0644      -1.0644 
    0.5     0.45323      0.45323 

cB = coeff';
cB = cB(:);
CoefficientsTbl = table(bTrue(:),EstMdl1.Beta(:),cB((n + 1):end),...
    'VariableNames',["True" "estimate" "backslash"])
CoefficientsTbl=12×3 table
    True     estimate     backslash
    _____    _________    _________

        2       1.7686       1.7686
        4       3.8576       3.8576
       -2      -2.2009      -2.2009
     -1.5      -1.5508      -1.5508
      2.5       2.4407       2.4407
      0.5      0.46414      0.46414
      0.5      0.69588      0.69588
    -1.75      -1.7139      -1.7139
     -1.5      -1.6414      -1.6414
     0.75      0.67036      0.67036
    -0.05    -0.056437    -0.056437
      0.7      0.56581      0.56581

InnovCovTbl = table(InnovCov,EstMdl1.Covariance,...
    'VariableNames',["True" "estimate"])
InnovCovTbl=3×2 table
             True                          estimate            
    _______________________    ________________________________

        1      0.5    -0.05       1.385      0.6673    -0.15914
      0.5        1     0.25      0.6673     0.97312     0.21649
    -0.05     0.25        1    -0.15914     0.21649     0.99338

Смета от осуществления estimate и оператор обратной косой черты одинаковы и довольно близки к соответствующим им истинным значениям.

Один из способов проверить силу отношений между предикторами и откликами - вычислить коэффициент детерминации (то есть долю изменений, объясненную предикторами), который является

R2=1-jnσˆεj2jnσˆYj2,

где σˆεj2 - предполагаемое отклонение остаточных рядов j, и σˆYj2 - предполагаемое отклонение рядов откликов j.

R2 = 1 - sum(diag(cov(E)))/sum(diag(cov(Y)))
R2 = 0.9118

Модель SUR и данные предиктора объясняют приблизительно 93% изменения данных отклика.

См. также

Объекты

Функции

Похожие темы