Skip to contents

Generate data

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

Ordinary Least Squares

Y <- dat_p2_yx$Y
X <- dat_p2_yx$X
FitVAROLS(Y = Y, X = X)
#>           [,1]        [,2]        [,3]        [,4]        [,5]         [,6]
#> [1,] 0.7899726  0.36836768 0.008539283  0.02231498  0.11338780  0.024505442
#> [2,] 1.0001995  0.01334496 0.481949237 -0.01730029 -0.03223315  0.234373552
#> [3,] 1.0666814 -0.03022951 0.014945306  0.60741736 -0.01610408 -0.006149189
#>             [,7]
#> [1,] -0.01143384
#> [2,]  0.01815779
#> [3,]  0.29620975

Lasso Regularization

YStd <- StdMat(dat_p2_yx$Y)
XStd <- StdMat(dat_p2_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]       [,4]      [,5]      [,6]
#> [1,] 0.3429428 0.000000 0.000000 0.08487819 0.0000000 0.0000000
#> [2,] 0.0000000 0.457026 0.000000 0.00000000 0.2120426 0.0000000
#> [3,] 0.0000000 0.000000 0.588127 0.00000000 0.0000000 0.2737749

Dynr

dynr_model <- ModelVARP2Dynr(data = dat_p2)
coef(
  object = dynr_model,
  dynr_cook = FitVARDynr(model = dynr_model, hessian_flag = FALSE)
)
#> $constant
#> [1] 0.8108203 1.0385953 1.0830291
#> 
#> $coef
#>             [,1]        [,2]        [,3]         [,4]         [,5]        [,6]
#> [1,]  0.36766728 0.007391896  0.01983247  0.114497325  0.024832351 -0.01065118
#> [2,]  0.01376537 0.480781804 -0.01962650 -0.038003569  0.233819340  0.01853446
#> [3,] -0.03337367 0.013277403  0.60707078 -0.009727031 -0.004752739  0.29460604
#> 
#> $cov
#>              [,1]         [,2]         [,3]
#> [1,]  0.986841754 -0.054124215 -0.004444707
#> [2,] -0.054124215  1.007742802  0.008107844
#> [3,] -0.004444707  0.008107844  0.987783462

Multiple individuals

n <- 10 # n individuals
dat_p2_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_p2_mult)
coef(
  object = dynr_model,
  dynr_cook = FitVARDynr(model = dynr_model, hessian_flag = FALSE)
)
#> $constant
#> [1] 1.0448029 0.9746017 1.0014669
#> 
#> $coef
#>             [,1]         [,2]         [,3]         [,4]         [,5]
#> [1,]  0.40121116 -0.009609459 -0.003694735  0.104843203 -0.006740511
#> [2,] -0.00886161  0.504827496 -0.007677505  0.002317086  0.208803378
#> [3,] -0.01568661  0.004431672  0.584943385 -0.001003501  0.014681107
#>             [,6]
#> [1,] 0.004724077
#> [2,] 0.006492386
#> [3,] 0.312771409
#> 
#> $cov
#>             [,1]        [,2]         [,3]
#> [1,]  0.99995757 0.017928481 -0.016324570
#> [2,]  0.01792848 0.982177366  0.004719771
#> [3,] -0.01632457 0.004719771  0.998661138

Multiple VAR models on each individual.

dynr_cook <- FitMLVARDynr(data = dat_p2_mult, p = 2, hessian_flag = FALSE)
dynr_model <- ModelVARP2Dynr(data = dat_p2_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_p2_mult[[1]])
)
#> [[1]]
#> [[1]]$constant
#> [1] 1.1016118 0.6220082 1.0310433
#> 
#> [[1]]$coef
#>             [,1]        [,2]        [,3]         [,4]        [,5]       [,6]
#> [1,]  0.36008223 -0.01306639 -0.03304167  0.105455322 0.019978368 0.02973365
#> [2,] -0.02699569  0.51145557 -0.01623585  0.043102336 0.213956729 0.04299584
#> [3,] -0.02700385  0.05105222  0.56744250 -0.008307423 0.001164322 0.31699644
#> 
#> [[1]]$cov
#>             [,1]        [,2]       [,3]
#> [1,]  1.01177031  0.02705833 -0.0356887
#> [2,]  0.02705833  0.98613899 -0.0510453
#> [3,] -0.03568870 -0.05104530  0.9728425
#> 
#> 
#> [[2]]
#> [[2]]$constant
#> [1] 0.9087098 1.2997561 0.9708976
#> 
#> [[2]]$coef
#>              [,1]        [,2]       [,3]        [,4]         [,5]         [,6]
#> [1,]  0.421808224 -0.02868872 0.01113127  0.10547763 -0.028134757  0.007448539
#> [2,] -0.010725884  0.49607261 0.05155614 -0.01204139  0.203919613 -0.079327421
#> [3,]  0.008929565  0.02792460 0.59290782 -0.01900508  0.005532939  0.303290248
#> 
#> [[2]]$cov
#>             [,1]        [,2]       [,3]
#> [1,]  0.98586014 -0.01532868 0.02167002
#> [2,] -0.01532868  1.04271399 0.01693319
#> [3,]  0.02167002  0.01693319 0.98675364
#> 
#> 
#> [[3]]
#> [[3]]$constant
#> [1] 0.9625255 1.1617802 0.8160145
#> 
#> [[3]]$coef
#>              [,1]        [,2]         [,3]        [,4]         [,5]        [,6]
#> [1,]  0.387314489  0.03398277  0.034217985  0.10781723 -0.046571965 -0.02299568
#> [2,]  0.001779301  0.48054979 -0.001741598  0.02865702  0.205492403 -0.01080436
#> [3,] -0.017245793 -0.00786880  0.585949598 -0.00371550 -0.001581034  0.34076521
#> 
#> [[3]]$cov
#>            [,1]        [,2]        [,3]
#> [1,] 1.00731999  0.03633079  0.04965056
#> [2,] 0.03633079  0.89353130 -0.02701402
#> [3,] 0.04965056 -0.02701402  1.01764574
#> 
#> 
#> [[4]]
#> [[4]]$constant
#> [1] 1.0072154 0.7881492 1.3793954
#> 
#> [[4]]$coef
#>             [,1]        [,2]        [,3]         [,4]        [,5]        [,6]
#> [1,]  0.36758525 -0.03591149 -0.03675947 0.1448151430 0.019685886 0.039052584
#> [2,] -0.01164483  0.55576980  0.01356325 0.0009545091 0.172674735 0.001263999
#> [3,] -0.05748517  0.01461848  0.63786131 0.0062837028 0.009153765 0.221367633
#> 
#> [[4]]$cov
#>             [,1]        [,2]        [,3]
#> [1,]  0.99428428 -0.03969732 -0.01109314
#> [2,] -0.03969732  1.00684355  0.02687373
#> [3,] -0.01109314  0.02687373  0.98994616
#> 
#> 
#> [[5]]
#> [[5]]$constant
#> [1] 1.1563747 0.6489412 1.0588652
#> 
#> [[5]]$coef
#>             [,1]        [,2]       [,3]       [,4]          [,5]        [,6]
#> [1,]  0.34769124 -0.01774602 0.02370469 0.12287694 -0.0008137301 -0.02862023
#> [2,] -0.04701790  0.49252858 0.05574341 0.02032942  0.2489501465 -0.03315115
#> [3,] -0.02927806 -0.02989915 0.59606680 0.03774691  0.0264441791  0.30269867
#> 
#> [[5]]$cov
#>             [,1]        [,2]         [,3]
#> [1,] 0.967004145  0.02661108  0.007126847
#> [2,] 0.026611081  0.95755262 -0.011130767
#> [3,] 0.007126847 -0.01113077  1.017224670
#> 
#> 
#> [[6]]
#> [[6]]$constant
#> [1] 1.0122311 0.9821801 1.0640212
#> 
#> [[6]]$coef
#>              [,1]        [,2]        [,3]         [,4]         [,5]       [,6]
#> [1,]  0.422294792 -0.02173318 -0.04781544  0.102915806 0.0069815446 0.04742816
#> [2,] -0.007030334  0.50703672 -0.06449920 -0.049537626 0.2043790301 0.07221843
#> [3,]  0.026390818  0.01110491  0.56364536 -0.009568856 0.0001919468 0.32417544
#> 
#> [[6]]$cov
#>               [,1]       [,2]          [,3]
#> [1,]  1.0111198563 0.04610627 -0.0008635716
#> [2,]  0.0461062711 0.99542463  0.0538673257
#> [3,] -0.0008635716 0.05386733  0.9261752104
#> 
#> 
#> [[7]]
#> [[7]]$constant
#> [1] 1.2390079 0.9772929 0.9997870
#> 
#> [[7]]$coef
#>             [,1]          [,2]        [,3]        [,4]       [,5]        [,6]
#> [1,]  0.44903817 -0.0601045100 -0.01546071  0.05524027 0.01796034 0.005724359
#> [2,] -0.04670476  0.5299439782 -0.05048147  0.02884935 0.15330528 0.054024206
#> [3,]  0.03481530  0.0008994912  0.55615647 -0.03407587 0.03315500 0.333956146
#> 
#> [[7]]$cov
#>             [,1]        [,2]        [,3]
#> [1,]  1.02236705  0.01536160 -0.07710838
#> [2,]  0.01536160  0.92596621 -0.04101406
#> [3,] -0.07710838 -0.04101406  1.06871132
#> 
#> 
#> [[8]]
#> [[8]]$constant
#> [1] 1.431899 1.292935 1.012757
#> 
#> [[8]]$coef
#>             [,1]          [,2]         [,3]        [,4]        [,5]        [,6]
#> [1,]  0.40713790 -0.0007877583 -0.009534469 0.078319650 -0.05136826 -0.01198658
#> [2,] -0.02284324  0.4869293147  0.003511874 0.025897582  0.20356846 -0.02499286
#> [3,] -0.06726107  0.0198557174  0.569060654 0.005417727  0.01228816  0.33028598
#> 
#> [[8]]$cov
#>             [,1]       [,2]        [,3]
#> [1,]  1.01846132 0.04556160 -0.05487458
#> [2,]  0.04556160 0.92826043  0.06792138
#> [3,] -0.05487458 0.06792138  1.06185577
#> 
#> 
#> [[9]]
#> [[9]]$constant
#> [1] 0.7906723 0.9371424 1.0302616
#> 
#> [[9]]$coef
#>            [,1]        [,2]       [,3]         [,4]       [,5]         [,6]
#> [1,] 0.44248349  0.03633455 0.03452381  0.080468237 0.01352517 -0.026384462
#> [2,] 0.03957075  0.47697059 0.00204900 -0.001293086 0.21604839  0.001096854
#> [3,] 0.04026347 -0.04818074 0.56119133 -0.009810479 0.06034822  0.324471289
#> 
#> [[9]]$cov
#>              [,1]         [,2]         [,3]
#> [1,]  0.911376281  0.001190159 -0.019759492
#> [2,]  0.001190159  0.997640210 -0.002934869
#> [3,] -0.019759492 -0.002934869  0.937569755
#> 
#> 
#> [[10]]
#> [[10]]$constant
#> [1] 0.9170386 1.0921253 1.1220770
#> 
#> [[10]]$coef
#>             [,1]        [,2]        [,3]         [,4]        [,5]        [,6]
#> [1,]  0.38922120 0.005973010  0.01038857  0.094160748 -0.02232555 0.008267599
#> [2,]  0.04004084 0.480036149 -0.06276185 -0.062625067  0.21461737 0.057985062
#> [3,] -0.05361224 0.005343913  0.60051783  0.003481464  0.01078946 0.297470371
#> 
#> [[10]]$cov
#>             [,1]        [,2]         [,3]
#> [1,]  1.00247113 0.001030410 -0.053567210
#> [2,]  0.00103041 0.997905516  0.007351553
#> [3,] -0.05356721 0.007351553  0.954848521