Example 1: Vector Autoregression

This example fits a VAR(1) to a 2-dimensional vector time series. Then, forecasts for up to 4 steps ahead are requested, illustrating the default forecasting behavior.


import com.imsl.math.*;
import com.imsl.stat.*;

public class VectorAutoregressionEx1 {

    public static void main(String args[]) {
        double data1[] = {
            0, 0,
            -0.148105526820657, 0.0507420782620461,
            -1.13674727366735, 0.862892721126079,
            1.54366183541037, -1.13804802266371,
            -0.0923211737957721, 1.65649055346038,
            0.521764564424907, -2.11208211206815,
            0.843683397890515, 2.56656798707681,
            -2.70330819114831, -2.83452914666041,
            4.93683704766295, 3.95965377457266,
            -4.78314880243807, -2.23136673998374,
            6.24911547448071, 0.40543051970714,
            -6.76582567372196, 0.816818897274206,
            6.21142944093012, -4.247694573354,
            -5.29817270483491, 5.08246614505046,
            4.19557583927549, -5.35697380907112,
            -3.21572784971078, 7.89716072829777,
            0.485717553966479, -8.25930665413043,
            2.69490292018773, 10.9017252520684,
            -5.41090143363388, -10.400477539227,
            8.29423327234419, 9.10321370415527
        };

        TimeSeries ts = new TimeSeries();
        // Set the data for the two-dimensional time series
        ts.setSeriesValues(data1, 2);

        // Set up the vector autoregression model. Use default AR lag = 1.
        VectorAutoregression VAR1 = new VectorAutoregression(ts);

        // Get estimates of coefficient matrix A1
        double[][] coefs = VAR1.getEstimates();

        // Print estimates 
        PrintMatrix pm = new PrintMatrix("Estimated Coefficient Matrix A1");
        pm.print(coefs);

        // Get h =1, 2, 3, 4 step ahead forecasts for all time points past
        // the default presample value (nT = 6)
        double[][] forecasts = VAR1.getForecasts();

        // Print forecasts
        pm = new PrintMatrix("VAR Forecasts");
        PrintMatrixFormat pmf = new PrintMatrixFormat();
        String[] colLabels = {"(h=1,k=1)", "(h=1,k=2)", "(2,1)",
            "(2,2)", "(3,1)", "(3,2)", "(4,1)", "(4,2)"};
        pmf.setColumnLabels(colLabels);
        pmf.setNoRowLabels();
        pm.print(pmf, forecasts);
    }
}

Output

Estimated Coefficient Matrix A1
     0       1     
0  -1.017  -0.296  
1   0.273  -1.053  

                               VAR Forecasts
  (h=1,k=1)  (h=1,k=2)   (2,1)   (2,2)    (3,1)   (3,2)    (4,1)   (4,2)   
  0.094       2.366    -0.795  -2.466    1.538   2.381   -2.269  -2.088  
 -1.617      -2.473     2.377   2.163   -3.058  -1.63     3.593   0.883  
  3.589       2.248    -4.316  -1.389    4.802   0.286   -4.97    1.007  
 -6.194      -2.824     7.137   1.286   -7.642   0.592    7.6    -2.706  
  5.526       1.046    -5.932   0.405    5.916  -2.043   -5.415   3.764  
 -6.478       1.276     6.214  -3.11    -5.403   4.969    4.028  -6.705  
  6.642      -2.704    -5.959   4.659    4.685  -6.53    -2.837   8.154  
 -5.064       6.166     3.329  -7.874   -1.059   9.199   -1.642  -9.976  
  3.888      -6.796    -1.946   8.217   -0.449  -9.183    3.172   9.548  
 -2.685       6.785     0.726  -7.877    1.591   8.492   -4.129  -8.509  
  0.937      -9.193     1.765   9.936   -4.733  -9.982    7.767   9.221  
  1.948       8.83     -4.593  -8.767    7.265   7.981   -9.752  -6.424  
 -5.965     -10.746     9.247   9.69   -12.273  -7.683   14.759   4.746  
  8.58        9.477   -11.532  -7.641   13.993   4.903  -15.687  -1.349  

Link to Java source.