Resources

Time Series: VAR Estimation

 /****************************************************************/
 /*          S A S   S A M P L E   L I B R A R Y                 */
 /*                                                              */
 /*    NAME: TIMSEX51                                            */
 /*   TITLE: Time Series: VAR Estimation                         */
 /* PRODUCT: IML                                                 */
 /*  SYSTEM: ALL                                                 */
 /*    KEYS:                                                     */
 /*   PROCS:                                                     */
 /*    DATA:                                                     */
 /*                                                              */
 /* SUPPORT: GJW                         UPDATE: APRIL 1996      */
 /*     REF:                                                     */
 /*    MISC:                                                     */
 /****************************************************************/
title 'VAR Estimation and Variance Decomposition';
data one;
   input invest income consum @@;
cards;
 180 451  415  179 465  421   185 485  434   192 493  448
 211 509  459  202 520  458   207 521  479   214 540  487
 231 548  497  229 558  510   234 574  516   237 583  525
 206 591  529  250 599  538   259 610  546   263 627  555
 264 642  574  280 653  574   282 660  586   292 694  602
 286 709  617  302 734  639   304 751  653   307 763  668
 317 766  679  314 779  686   306 808  697   304 785  688
 292 794  704  275 799  699   273 799  709   301 812  715
 280 837  724  289 853  746   303 876  758   322 897  779
 315 922  798  339 949  816   364 979  837   371 988  858
 375 1025 881  432 1063 905   453 1104 934   460 1131 968
 475 1137 983  496 1178 1013  494 1211 1034  498 1256 1064
 526 1290 1101 519 1314 1102  516 1346 1145  531 1385 1173
 573 1416 1216 551 1436 1229  538 1462 1242  532 1493 1267
 558 1516 1295 524 1557 1317  525 1613 1355  519 1642 1371
 526 1690 1402 510 1759 1452  519 1756 1485  538 1780 1516
 549 1807 1549 570 1831 1567  559 1873 1588  584 1897 1631
 611 1910 1650 597 1943 1685  603 1976 1722  619 2018 1752
 635 2040 1774 658 2070 1807  675 2121 1831  700 2132 1842
 692 2199 1890 759 2253 1958  782 2276 1948  816 2318 1994
 844 2369 2061 830 2423 2056  853 2457 2102  852 2470 2121
 833 2521 2145 860 2545 2164  870 2580 2206  830 2620 2225
 801 2639 2235 824 2618 2237  831 2628 2250  830 2651 2271
;
proc iml;
   use one;
   read all into y var{invest income consum};
   mdel  = 1;
   maice = 0;
   misw  = 0;  /*-- instantaneous modeling ? --*/
   call tsmulmar(arcoef,ev,nar,aic) data=y maxlag=3
        opt=(mdel || maice || misw) print=1;

   misw = 1;
   call tsmulmar(arcoef,ev,nar,aic) data=y maxlag=3
        opt=(mdel || maice || misw) print=1;
   print ev;

   mdel  = 1;
   maice = 0;
   misw  = 0;
   call tsmulmar(arcoef,ev,nar,aic) data=y maxlag=3
        opt=(mdel || maice || misw);
   call tspred(forecast,impulse,mse,y,arcoef,nar,0,ev)
        npred=10 start=nrow(y) constant=mdel;
   print impulse;

   call tsmulmar(arcoef,ev,nar,aic) data=y maxlag=3
        opt={1 0 1};
   lmtx = inv(ev[2:nrow(ev),]);
   orth_imp = impulse * lmtx;
   print orth_imp;

   mse1  = j(3,3,0);
   mse2  = j(3,3,0);
   mse3  = j(3,3,0);
   do i = 1 to 10;
      psi = impulse[(i-1)*3+1:3*i,];
      mse1 = mse1 + psi*lmtx[,1]*lmtx[,1]`*psi`;
      mse2 = mse2 + psi*lmtx[,2]*lmtx[,2]`*psi`;
      mse3 = mse3 + psi*lmtx[,3]*lmtx[,3]`*psi`;
   end;
   mse1 = ev[1,1]#mse1;
   mse2 = ev[1,2]#mse2;
   mse3 = ev[1,3]#mse3;
   contrib = vecdiag(mse1) || vecdiag(mse2) || vecdiag(mse3);
   var  = vecdiag(mse[28:30,]);
   print contrib var;

   account = contrib * 100 / (var@j(1,3,1));
   print account;

title;