Data Analysis Mathematics Linear Algebra Statistics
New Version 7.0!

QuickStart Samples

# ARIMA Models QuickStart Sample (Visual Basic)

Illustrates how to work with ARIMA time series models using classes in the Extreme.Statistics.TimeSeriesAnalysis namespace in Visual Basic.

```Option Infer On

Imports System.Data
Imports Extreme.Mathematics
Imports Extreme.Statistics
Imports Extreme.Statistics.TimeSeriesAnalysis

Namespace Extreme.Numerics.QuickStart.VB
' Illustrates the use of the ArimaModel class to perform
' estimation and forecasting of ARIMA time series models.
Module ArimaModels

Sub Main()
' This QuickStart Sample fits an ARMA(2,1) model and
' an ARIMA(0,1,1) model to sunspot data.

' The time series data is stored in a numerical variable:
Dim sunspots = Vector.Create(
100.8, 81.6, 66.5, 34.8, 30.6, 7, 19.8, 92.5,
154.4, 125.9, 84.8, 68.1, 38.5, 22.8, 10.2, 24.1, 82.9,
132, 130.9, 118.1, 89.9, 66.6, 60, 46.9, 41, 21.3, 16,
6.4, 4.1, 6.8, 14.5, 34, 45, 43.1, 47.5, 42.2, 28.1, 10.1,
8.1, 2.5, 0, 1.4, 5, 12.2, 13.9, 35.4, 45.8, 41.1, 30.4,
23.9, 15.7, 6.6, 4, 1.8, 8.5, 16.6, 36.3, 49.7, 62.5, 67,
71, 47.8, 27.5, 8.5, 13.2, 56.9, 121.5, 138.3, 103.2,
85.8, 63.2, 36.8, 24.2, 10.7, 15, 40.1, 61.5, 98.5, 124.3,
95.9, 66.5, 64.5, 54.2, 39, 20.6, 6.7, 4.3, 22.8, 54.8,
93.8, 95.7, 77.2, 59.1, 44, 47, 30.5, 16.3, 7.3, 37.3,
73.9)

' ARMA models (no differencing) are constructed from
' the variable containing the time series data, and the
' AR and MA orders. The following constructs an ARMA(2,1)
' model:
Dim model As New ArimaModel(sunspots, 2, 1)

' The Compute methods fits the model.
model.Compute()

' The model's Parameters collection contains the fitted values.
' For an ARIMA(p,d,q) model, the first p parameters are the
' auto-regressive parameters. The last q parametere are the
' moving average parameters.
Console.WriteLine("Variable              Value    Std.Error  t-stat  p-Value")
For Each param As Parameter In model.Parameters
' Parameter objects have the following properties:
' - Name, usually the name of the variable:
' - Estimated value of the param:
' - Standard error:
' - The value of the t statistic for the hypothesis that the param
'   is zero.
' - Probability corresponding to the t statistic.
Console.WriteLine("{0,-20}{1,10:F5}{2,10:F5}{3,8:F2} {4,7:F4}", _
param.Name, _
param.Value, _
param.StandardError, _
param.Statistic, _
param.PValue)
Next

' The log-likelihood of the computed solution is also available:
Console.WriteLine("Log-likelihood: {0:F4}", model.LogLikelihood)
' as is the Akaike Information Criterion (AIC):
Console.WriteLine("AIC: {0:F4}", model.GetAkaikeInformationCriterion())
' and the Baysian Information Criterion (BIC):
Console.WriteLine("AIC: {0:F4}", model.GetBayesianInformationCriterion())

' The Forecast method can be used to predict the next value in the series...
Dim nextValue As Double = model.Forecast()
Console.WriteLine("One step ahead forecast: {0:F3}", nextValue)

' or to predict a specified number of values:
Dim nextValues = model.Forecast(5)
Console.WriteLine("First five forecasts: {0:F3}", nextValues)

' An integrated model (with differencing) is constructed
' by supplying the degree of differencing. Note the order
' of the orders is the traditional one for an ARIMA(p,d,q)
' model (p, d, q).
' The following constructs an ARIMA(0,1,1) model:
Dim model2 As New ArimaModel(sunspots, 0, 1, 1)

' By default, the mean is assumed to be zero for an integrated model.
' We can override this by setting the EstimateMean property to true:
model2.EstimateMean = True

' The Compute methods fits the model.
model2.Compute()

' The mean shows up as one of the parameters.
Console.WriteLine("Variable              Value    Std.Error  t-stat  p-Value")
For Each param As Parameter In model2.Parameters
Console.WriteLine("{0,-20}{1,10:F5}{2,10:F5}{3,8:F2} {4,7:F4}", _
param.Name, _
param.Value, _
param.StandardError, _
param.Statistic, _
param.PValue)
Next

' We can also get the error variance:
Console.WriteLine("Error variance: {0:F4}", model2.ErrorVariance)

Console.WriteLine("Log-likelihood: {0:F4}", model2.LogLikelihood)
Console.WriteLine("AIC: {0:F4}", model2.GetAkaikeInformationCriterion())
Console.WriteLine("BIC: {0:F4}", model2.GetBayesianInformationCriterion())

Console.WriteLine("Press Enter key to continue.")