Skip to contents

Generate data

set.seed(42)
time <- 1000L
burn_in <- 200L
k <- 3
p <- 1
constant <- c(1, 1, 1)
coef <- matrix(
  data = c(
    0.4, 0.0, 0.0,
    0.0, 0.5, 0.0,
    0.0, 0.0, 0.6
  ),
  nrow = k,
  byrow = TRUE
)
chol_cov <- chol(diag(3))
dat_p1 <- SimVAR(
  time = time,
  burn_in = burn_in,
  constant = constant,
  coef = coef,
  chol_cov = chol_cov
)

Ordinary Least Squares

Y <- dat_p1_yx$Y
X <- dat_p1_yx$X
FitVAROLS(Y = Y, X = X)
#>           [,1]         [,2]       [,3]        [,4]
#> [1,] 0.9084572  0.376670213 0.03481382 0.015427806
#> [2,] 0.9952570  0.002299374 0.51052755 0.002902186
#> [3,] 1.0653119 -0.041211382 0.02013807 0.601902383

Lasso Regularization

YStd <- StdMat(dat_p1_yx$Y)
XStd <- StdMat(dat_p1_yx$X[, -1])
lambdas <- LambdaSeq(YStd = YStd, XStd = XStd, n_lambdas = 100)
FitVARLassoSearch(YStd = YStd, XStd = XStd, lambdas = lambdas,
  crit = "ebic", max_iter = 1000, tol = 1e-5)
#>           [,1]      [,2]      [,3]
#> [1,] 0.3372619 0.0000000 0.0000000
#> [2,] 0.0000000 0.4718716 0.0000000
#> [3,] 0.0000000 0.0000000 0.5638745

Dynr

dynr_model <- ModelVARP1Dynr(data = dat_p1)
coef(
  object = dynr_model,
  dynr_cook = FitVARDynr(model = dynr_model, hessian_flag = FALSE)
)
#> $constant
#> [1] 0.9099447 0.9914348 1.0581366
#> 
#> $coef
#>             [,1]       [,2]        [,3]
#> [1,]  0.37660403 0.03434456 0.015729610
#> [2,]  0.00325585 0.51111108 0.003139214
#> [3,] -0.03962967 0.02120156 0.602733814
#> 
#> $cov
#>              [,1]         [,2]         [,3]
#> [1,]  0.990292758 -0.054644587 -0.005531848
#> [2,] -0.054644587  1.010813947  0.006040567
#> [3,] -0.005531848  0.006040567  0.984040302

Multiple individuals

n <- 10 # n individuals
dat_p1_mult <- lapply(
  X = seq_len(n),
  FUN = function(i) {
    return(
      SimVAR(
        time = 1000L,
        burn_in = 10,
        constant = constant,
        coef = coef,
        chol_cov = chol_cov
      )
    )
  }
)

Single VAR model on the entire data set.

dynr_model <- ModelVARP2Dynr(data = dat_p1_mult)
coef(
  object = dynr_model,
  dynr_cook = FitVARDynr(model = dynr_model, hessian_flag = FALSE)
)
#> $constant
#> [1] 1.0462309 0.9953261 1.0179085
#> 
#> $coef
#>             [,1]         [,2]         [,3]         [,4]         [,5]
#> [1,]  0.40217196 -0.012849009 -0.007795745  0.006281066 -0.006239730
#> [2,] -0.00682165  0.505751441 -0.011788660 -0.003103103  0.008279539
#> [3,] -0.01854566  0.006197221  0.583717514 -0.001061644  0.017521378
#>             [,6]
#> [1,] 0.003882397
#> [2,] 0.007311607
#> [3,] 0.006326369
#> 
#> $cov
#>             [,1]        [,2]         [,3]
#> [1,]  0.99881717 0.017241274 -0.016248986
#> [2,]  0.01724127 0.982213749  0.004933834
#> [3,] -0.01624899 0.004933834  0.998348889

Multiple VAR models on each individual.

dynr_cook <- FitMLVARDynr(data = dat_p1_mult, p = 2, hessian_flag = FALSE)
dynr_model <- ModelVARP2Dynr(data = dat_p1_mult[[1]])
lapply(
  X = dynr_cook,
  FUN = function(dynr_cook,
                 dynr_model) {
    coef(
      object = dynr_model,
      dynr_cook = dynr_cook
    )
  },
  dynr_model = ModelVARP2Dynr(data = dat_p1_mult[[1]])
)
#> [[1]]
#> [[1]]$constant
#> [1] 1.1017634 0.7634997 0.9670509
#> 
#> [[1]]$coef
#>             [,1]        [,2]         [,3]         [,4]        [,5]
#> [1,]  0.36097118 -0.01713410 -0.042502492  0.004367851 0.020536307
#> [2,] -0.01903862  0.51109857 -0.002247776  0.044978193 0.009195141
#> [3,] -0.02660230  0.05839538  0.567272983 -0.005447317 0.017287901
#>               [,6]
#> [1,]  0.0310427870
#> [2,]  0.0638127797
#> [3,] -0.0000542151
#> 
#> [[1]]$cov
#>            [,1]        [,2]        [,3]
#> [1,]  1.0114534  0.02528320 -0.03518680
#> [2,]  0.0252832  0.98699864 -0.05133939
#> [3,] -0.0351868 -0.05133939  0.97359100
#> 
#> 
#> [[2]]
#> [[2]]$constant
#> [1] 1.0033993 1.0993408 0.9661149
#> 
#> [[2]]$coef
#>              [,1]        [,2]         [,3]        [,4]         [,5]
#> [1,]  0.423513702 -0.03411393 -0.003712766  0.01439074 -0.031420978
#> [2,] -0.016955314  0.49429593  0.047977376 -0.01516280  0.005647594
#> [3,]  0.005422916  0.03998445  0.588044675 -0.02085193  0.004753246
#>              [,6]
#> [1,]  0.014931860
#> [2,] -0.078030388
#> [3,]  0.009803849
#> 
#> [[2]]$cov
#>             [,1]        [,2]       [,3]
#> [1,]  0.99019460 -0.01599217 0.02035365
#> [2,] -0.01599217  1.04791966 0.01537336
#> [3,]  0.02035365  0.01537336 0.98573510
#> 
#> 
#> [[3]]
#> [[3]]$constant
#> [1] 1.0731253 1.0464261 0.9749728
#> 
#> [[3]]$coef
#>             [,1]         [,2]        [,3]         [,4]         [,5]        [,6]
#> [1,]  0.39419898  0.034788587  0.03524879  0.012620809 -0.055239557 -0.04472302
#> [2,]  0.00139402  0.494954867 -0.00108530  0.023029403  0.009304307 -0.01789489
#> [3,] -0.02312133 -0.008491763  0.57661567 -0.001305735  0.009584453  0.05267844
#> 
#> [[3]]$cov
#>            [,1]        [,2]        [,3]
#> [1,] 1.01208388  0.03615487  0.05255972
#> [2,] 0.03615487  0.89524687 -0.02744158
#> [3,] 0.05255972 -0.02744158  1.01995676
#> 
#> 
#> [[4]]
#> [[4]]$constant
#> [1] 1.0955841 0.9579219 1.0467878
#> 
#> [[4]]$coef
#>              [,1]        [,2]         [,3]         [,4]        [,5]
#> [1,]  0.368264301 -0.03008492 -0.046526228  0.046489811  0.01530563
#> [2,] -0.006035298  0.55316094  0.001634817 -0.004088443 -0.01188639
#> [3,] -0.054025422  0.02373566  0.644006040  0.002229737  0.01291562
#>              [,6]
#> [1,]  0.008204661
#> [2,] -0.009020526
#> [3,] -0.074439688
#> 
#> [[4]]$cov
#>             [,1]        [,2]        [,3]
#> [1,]  0.99267950 -0.03601439 -0.01794346
#> [2,] -0.03601439  1.01118746  0.02512984
#> [3,] -0.01794346  0.02512984  0.99203419
#> 
#> 
#> [[5]]
#> [[5]]$constant
#> [1] 1.1230098 0.7289445 1.0865834
#> 
#> [[5]]$coef
#>             [,1]        [,2]        [,3]       [,4]        [,5]        [,6]
#> [1,]  0.34186273 -0.01996166 0.000643558 0.02548298 0.003957283 -0.01763780
#> [2,] -0.04690538  0.48565824 0.062845154 0.01772940 0.051965057  0.01774022
#> [3,] -0.03399898 -0.02831650 0.583773014 0.03688310 0.014221099  0.01482605
#> 
#> [[5]]$cov
#>              [,1]         [,2]         [,3]
#> [1,]  0.960677731  0.029510426 -0.002992873
#> [2,]  0.029510426  0.958748159 -0.006688382
#> [3,] -0.002992873 -0.006688382  1.007289048
#> 
#> 
#> [[6]]
#> [[6]]$constant
#> [1] 1.014797 1.081760 1.083911
#> 
#> [[6]]$coef
#>              [,1]         [,2]        [,3]         [,4]          [,5]
#> [1,] 0.4270817750 -0.013844690 -0.05401948  0.006247747  0.0068312325
#> [2,] 0.0008373405  0.503101991 -0.04041253 -0.053687015  0.0005065333
#> [3,] 0.0113947394  0.006774978  0.56378127  0.002470871 -0.0094547169
#>               [,6]
#> [1,]  0.0381364536
#> [2,]  0.0348464113
#> [3,] -0.0003432213
#> 
#> [[6]]$cov
#>            [,1]       [,2]       [,3]
#> [1,] 1.00148500 0.04037216 0.01237155
#> [2,] 0.04037216 0.99416513 0.06312744
#> [3,] 0.01237155 0.06312744 0.94311670
#> 
#> 
#> [[7]]
#> [[7]]$constant
#> [1] 1.120327 1.013401 1.070235
#> 
#> [[7]]$coef
#>             [,1]         [,2]        [,3]        [,4]        [,5]        [,6]
#> [1,]  0.44542334 -0.064948349 -0.03353735 -0.04088164  0.02144546 0.016597991
#> [2,] -0.04873178  0.536953103 -0.06295188  0.03588696 -0.05182605 0.046229692
#> [3,]  0.02251002  0.003835118  0.53665477 -0.01522878  0.03173580 0.004814226
#> 
#> [[7]]$cov
#>             [,1]        [,2]        [,3]
#> [1,]  1.01830405  0.02442761 -0.07415982
#> [2,]  0.02442761  0.93594437 -0.03664068
#> [3,] -0.07415982 -0.03664068  1.04095910
#> 
#> 
#> [[8]]
#> [[8]]$constant
#> [1] 1.137525 1.159089 0.913251
#> 
#> [[8]]$coef
#>             [,1]          [,2]          [,3]        [,4]        [,5]
#> [1,]  0.40596772 -7.396216e-05  0.0006065739 -0.01335477 -0.06008688
#> [2,] -0.02245395  4.878523e-01 -0.0010421956  0.03225741  0.00246128
#> [3,] -0.07338679  4.072094e-02  0.5872724646  0.01117234  0.01085849
#>              [,6]
#> [1,]  0.003266138
#> [2,] -0.040259607
#> [3,]  0.041918749
#> 
#> [[8]]$cov
#>             [,1]       [,2]        [,3]
#> [1,]  1.01682009 0.04521949 -0.05258184
#> [2,]  0.04521949 0.93295083  0.06997025
#> [3,] -0.05258184 0.06997025  1.06046751
#> 
#> 
#> [[9]]
#> [[9]]$constant
#> [1] 0.8758778 1.0062131 0.9663398
#> 
#> [[9]]$coef
#>            [,1]        [,2]        [,3]         [,4]       [,5]         [,6]
#> [1,] 0.44219424  0.03190391  0.03581911 -0.017126780 0.01901798 -0.015252033
#> [2,] 0.03762391  0.48711062 -0.02146374 -0.001368921 0.01465021 -0.001774324
#> [3,] 0.03877865 -0.06090510  0.56843929 -0.009729191 0.05944676  0.017721509
#> 
#> [[9]]$cov
#>             [,1]         [,2]         [,3]
#> [1,]  0.92184464  0.011662072 -0.020721780
#> [2,]  0.01166207  0.988356978 -0.005038639
#> [3,] -0.02072178 -0.005038639  0.941584282
#> 
#> 
#> [[10]]
#> [[10]]$constant
#> [1] 0.9422027 1.1603150 1.2124984
#> 
#> [[10]]$coef
#>             [,1]          [,2]        [,3]         [,4]         [,5]
#> [1,]  0.39001207 -0.0067921960  0.02245800  0.003084543 -0.016418828
#> [2,]  0.03611882  0.4857168804 -0.08228752 -0.067336573  0.007828595
#> [3,] -0.05581702  0.0006361164  0.59962708 -0.003292977 -0.002587081
#>             [,6]
#> [1,]  0.03019795
#> [2,]  0.03830022
#> [3,] -0.02244364
#> 
#> [[10]]$cov
#>              [,1]        [,2]         [,3]
#> [1,]  1.001435739 0.005841893 -0.041826836
#> [2,]  0.005841893 0.987409552  0.008731475
#> [3,] -0.041826836 0.008731475  0.957445319