NbbTools > Use cases

Estimation of the generalized airline model

The library provides an implementation of the generalized airline model as described in [1].

Using the usual notation, the generalized airline model for a monthly series is defined by (type I, 3 parameters)

where all the except n ones  () .

where all the  are the same except n ones ().

 

For a given GeneralizedAirlineSpecification, the GeneralizedAirlineMonitor estimates the different GeneralizedAirlineModels and computes their corresponding criterion (AIC/BIC).
The decomposition of the series using the Kalman smoother can be obtained, for the best model as well as for each of the other models, through GeneralizedAirlineSA entities. Those features are illustrated in the example below.

The main available specifications are:

It should be noted that the GeneralizedAirlineMonitor always estimates the usual airline model (first estimated model).
The form of the GeneralizedAirlineModel can be retrieved following different ways:

C#:

References:

Code:

using Nbb.TimeSeries.SimpleTS;
using Nbb.GeneralAirline;

double[] data =
{
    9568.3,9920.3,11353.5,9247.5,10114.2,10763.1,8456.1,8071.6,10328,10551.4,10186.1,8821.6,
    9841.3,10233.6,10794.6,10289.3,10513.4,10607.6,9707.4,8103.5,10982.6,11836.9,10517.5,9810.5,
    10374.8,10855.3,11671.3,11901.2,10846.4,11917.5,11362.8,9314.5,12605.9,12815.1,11254.5,11111.8,
    11282.9,11554.5,12935.6,12146.3,11615.3,13214.8,11735.5,9522.3,12694.8,12317.6,11450,11380.9,
    10604.6,10972.2,13331.5,11733.1,11284.7,13295.8,11881.4,10374.2,13828,13490.5,13092.2,13184.4,
    12398.4,13882.3,15861.5,13286.1,15634.9,14211,13646.8,12224.6,15916.4,16535.9,15796,14418.6,
    15044.5,14944.2,16754.8,14254,15454.9,15644.8,14568.3,12520.2,14803,15873.2,14755.3,12875.1,
    14291.1,14205.3,15859.4,15258.9,15498.6,15106.5,15023.6,12083,15761.3,16943,15070.3,13659.6,
    14768.9,14725.1,15998.1,15370.6,14956.9,15469.7,15101.8,11703.7,16283.6,16726.5,14968.9,14861,
    14583.3,15305.8,17903.9,16379.4,15420.3,17870.5,15912.8,13866.5,17823.2,17872,17420.4,16704.4,
    15991.5,16583.6,19123.4,17838.8,17335.3,19026.9,16428.6,15337.4,19379.8,18070.5,19563,18190.6,
    17658,18437.9,21510.4,17111,19732.7,20221.8
};

TS series = new TS(TSFrequency.Monthly, 1995, 0, data);

// Default specification (5-1 (3) models. No calendar effects, no log transformation)
GeneralizedAirlineSpecification spec = new GeneralizedAirlineSpecification();

// Monitoring object
GeneralizedAirlineMonitor monitor = new GeneralizedAirlineMonitor();

monitor.Specification = spec;
if (monitor.Process(series))
{
    // The best model, based on the criterion defined in the specification (AIC by default)
    GeneralizedAirline model = monitor.BestResult.Model;

    // The decomposition of the series, based on the chosen model, estimated by means of the Kalman smoother.
    GeneralizedAirlineSA sa = monitor.BestSAResult;
    TS saseries = sa.Component(Nbb.Eco.TSComponent.SeasonallyAdjusted);

    // The decompositions of the series following the other models.
    TSCollection allseries = new TSCollection();
    int nrslts = monitor.Results.Length;
    for (int i = 0; i < nrslts; ++i)
    {
        GeneralizedAirlineSA cursa = monitor.SAResult(i);
        if (cursa != null)
        {
            TS cursaseries = cursa.Component(Nbb.Eco.TSComponent.SeasonallyAdjusted);
            cursaseries.Description = monitor.Results[i].Model.ModelType;
            allseries.Add(cursaseries);
        }
    }

    // Link with the equation of the model
   
double[] coeff = monitor.BestResult.Model.Coefficients();
    int[] c = monitor.BestResult.Model.C;

    if (c[1] >= 0)
// type I equation
    {
        double theta = coeff[0];
        double c0 = coeff[c[1]];
        double c1 = coeff[c[2]];
        double c2 = coeff[c[3]];
        double c3 = coeff[c[4]];
        double c4 = coeff[c[5]];
        double c5 = coeff[c[6]];
        double c6 = coeff[c[7]];
    }
    else
// type II equation
    {
        double a = coeff[0];
        double b = coeff[1];
        double c1 = coeff[c[2]];
        double c2 = coeff[c[3]];
        double c3 = coeff[c[4]];
        double c4 = coeff[c[5]];
        double c5 = coeff[c[6]];
        double c6 = coeff[c[7]];
    }
}

Remark: the series used in this example contains significant calendar effects that are partly captured by the 5-1(3) / 4 model; the adding of trading days variables provide a better result.

 

Bibliography

[1] John A. D. Aston, David F. Findley, Kellie C. Wills, and Donald E. K. Martin (2004), "Generalizations of the Box-Jenkins Airline Model with Frequency-Specific Seasonal Coefficients and a Generalizaton of Akaike’s MAIC", presented at 2004 NBER/NSF Time Series Conference.

A special thank-you to J. Aston for its Ox implementation.