NbbTools > Use cases

Forecasts using Tramo

Forecasting with the OO implementation of Tramo is straightforward.
After the processing of Tramo, using any TramoSpecification, a TramoForecast object can be created for any forecast horizon.

The TramoForecast object provides forecasts for the transformed series (Forecast/ForecastStdev) as well as for the original series (FinalForecast/FinalForecastStdev).
Both are the same when no log transformation is used and when the data are not rescaled.
The forecasts (corresponding to the original series) can also be obtained immediately in the form of a time series, through the ForecastSeries() method.

 

C#:

References:

Code:

            // External trade statistics: exports
            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);
            TramoSpecification spec = new TramoSpecification();
            // Fully automated processing
            spec.Transformation.Option = DataTransformation.Pretest;
            spec.OutliersDetection.All();
            spec.ModelIdentification.IsEnabled = true;
            spec.CalendarEffect.TradingDaysEffect = TradingDaysOption.Td1Pretest;
            spec.CalendarEffect.LeapYearEffect = TramoChoice.Pretest;
            spec.CalendarEffect.EasterEffect = TramoChoice.Pretest;
            Tramo tramo = new Tramo();
            tramo.Specification = spec;
            tramo.Process(series);
            // You can choose the length of the forecasts after the processing.
            int n = 12;
            TramoForecast fcast = tramo.Forecast(n);
            // check if logs are chosen (just for information)
            bool blog = fcast.IsLogTransformed; 
            for (int i = 0; i < n; ++i)
            {
                // FinalForecast/Stdev give the results corresponding to the initial data.
                // Forecast/Stdev give the results corresponding to the transformed data (possible log transformation and scaling).
                double fvalue = fcast.Forecast(i);
                double fstdev = fcast.ForecastStdev(i);
            }
            // get the forecasts in the form of a time series
            TS fcasts = tramo.ForecastSeries(3 * n);
            TS extendedseries = series.Update(fcasts);

 

The code gives the following results