Introduction
This example estimates and predicts an VAR(2) model in GAUSS using simulated data. It demonstrates usage of varmaFit
and varmaPredict
.
Step 1: Load data
This example loads the data using the GAUSS function loadd
. The function loadd
utilizes the GAUSS formula string syntax and allows users to load and transform specific variables directly from the dataset.
new;
library tsmt;
// Load data
// Create file name with full path
fname = getGAUSSHome() $+ "pkgs/tsmt/examples/mink.csv";
// Load two variables from dataset
y = loadd(fname, "LogMink + LogMusk");
// Difference the data
y = vmdiffmt(y, 1);
Step 2: Estimate The Model
Because this model is strictly a VAR model, the only additional input after the data matrix is the AR order.
// Declare 'vout' to be a varmamtOut structure
// to hold the return values from 'vout'
struct varmamtOut vout;
// Estimate the parameters of the VAR(2) model
// and print diagnostic information
vout = varmaFit(y, 2);
Step 3: Estimation Output
The coefficient estimates read:
=============================================================================== VARMAX Version 3.0.0
=============================================================================== Phi Plane [1,.,.] -0.12309 0.57672 -0.67611 0.34425 Plane [2,.,.] 0.26190 -0.12894 -0.26000 -0.044378
Step 4: Predict Model
The final step is to predict the model using varmaPredict
// Forecast 25 periods
f = varmaPredict(vout, y, 0, 25);
Plotted Output
Below is the full code to produce the graph of the forecasts shown at the top of this page.
/*
** Plot differenced data and forecast
*/
// Declare 'myPlot' to be a plotControl structure
// and fill with default values
struct plotControl myPlot;
myPlot = plotGetDefaults("xy");
// Turn grid off
plotSetGrid(&myPlot, "off");
// Font settings
font_name = "Helvetica Neue";
font_color = "black";
plotSetTitle(&myPlot, "Differenced data and VAR(2) model forecast",
font_name, 18, font_color);
// Add a tick label every 10 years, starting at 1860
plotSetXTicInterval(&myPlot, 10, 1860);
// Legend
plotSetLegend(&myPlot, "Y1 Obs." $| "Y2 Obs.");
plotSetLegendFont(&myPlot, font_name, 14, font_color);
// Plot differenced 'y' data
plotTS(myPlot, 1850, 1, y);
// Set line style to dots for forecasted data
plotSetLineStyle(&myPlot, 3);
// Legend
plotSetLegend(&myPlot, "Y1 Forecasts"$|"Y2 Forecasts");
plotSetLegendFont(&myPlot, font_name, 14, font_color);
// Add forecasts to plot
plotAddTS(myPlot, 1910, 1, f[.,2:3]);