ISmx12arima.OutliersARIMAls

Syntax

OutliersARIMAls: ISlOutliers;

OutliersARIMAls: Prognoz.Platform.Interop.Stat.ISlOutliers;

Description

The OutliersARIMAls property returns the list of outliers of the "level shift" type, accounted for in the ARIMA stage.

Comments

To determine whether to account for the outliers in the procedure, use the ISmx12arima.OutliersDetection prooperty.

Example

To execute the example, add a link to the Stat system assembly.

Sub UserProc;
Var
    cens: ISmX12ARIMA;
    y: Array[62Of Double;
    outlier: ICensus2PeriodBegin;
    i, res: Integer;
Begin
    cens := New SmX12ARIMA.Create;
    // explained series values
    y[0] :=  284; y[1] := 277;  y[2] := 338;  y[3] := 363;  y[4] := 370; y[5] := 388;
    y[6] :=  407; y[7] := 427;  y[8] := 368;  y[9] := 365;  y[10] := 353; y[11] := 375;
    y[12] := 248; y[13] := 263; y[14] := 322; y[15] := 396; y[16] := 412; y[17] := 451;
    y[18] := 457; y[19] := 457; y[20] := 463; y[21] := 443; y[22] := 411; y[23] := 398;
    y[24] := 335; y[25] := 321; y[26] := 393; y[27] := 418; y[28] := 431; y[29] := 499;
    y[30] := 583; y[31] := 578; y[32] := 497; y[33] := 519; y[34] := 528; y[35] := 508;
    y[36] := 422; y[37] := 439; y[38] := 494; y[39] := 539; y[40] := 559; y[41] := 603;
    y[42] := 627; y[43] := 612; y[44] := 548; y[45] := 480; y[46] := 385; y[47] := 428;
    y[48] := 307; y[49] := 273; y[50] := 334; y[51] := 390; y[52] := 415; y[53] := 453;
    y[54] := 450; y[55] := 479; y[56] := 420; y[57] := 387; y[58] := 381; y[59] := 414;
    y[60] := 335; y[61] := 326;
    /// General settings ///
    //Calculation period
    cens.ModelPeriod.FirstPoint := 1;
    cens.ModelPeriod.LastPoint := 62;
    // Choose explained variable
    cens.Serie.Value := y;
    //Quarters or months
    cens.SeasonalComponentCycleType := SeasonalityCycleType.Month;
    cens.StartPeriod.MonthOrQuarter := 2;
    cens.StartPeriod.Year := 2000;
    /// Seasonality settings ///
    //Seasonality type
    cens.SeasonalAdjustmentMode := SeasonalityTypeX12.Additive;
    //Seasonal filter
    cens.SeasonalFilter := SeasonalFilterType.Auto;
    cens.Trendma := 13;
    /// Working day and holiday adjustments ///
    // whether there are adjustments
    cens.AdjustmentOptions := AdjustmentOptionsX12Type.None;
    // Working days adjustment
    cens.TradingDayEffects := TradingDayEffectsX12Type.None;
    /// ARIMA options ///
    // non-seasonal
    cens.ParseAR("2"True);
    cens.ParseMA("1"True);
    cens.OrderDiff := 0;
    // seasonal
    cens.ParseARSeas("2"True);
    cens.ParseMASeas("1"True);
    cens.OrderDiffSeas := 0;
    /// Outliers ///
    outlier := cens.OutliersARIMAls.Add;
    outlier.Year := 2004;
    outlier.MonthOrQuarter := 2;
    outlier := cens.OutliersARIMArpbegin.Add;
    outlier.Year := 2002;
    outlier.MonthOrQuarter := 1;
    outlier := cens.OutliersARIMArpend.Add;
    outlier.Year := 2002;
    outlier.MonthOrQuarter := 5;
    /// Diagnostics ///
    // Analysis of seasonal components stability
    cens.StabilityAnalysisofSeasonals := StabilityAnalysisofSeasonalsX12Type.None;
    /// Calculate model ///
    res := cens.Execute;
    Debug.WriteLine(cens.Errors);
    For i := 0 To cens.WarningsCount - 1 Do
        Debug.WriteLine(cens.Warnings[i]);
    End For;
    If (res = 0Then
        Debug.WriteLine("=== Trend-cyclic component ===");
        Debug.Indent;
        For i := 0 To cens.TrendCycle.Length - 1 Do
            Debug.WriteLine(cens.TrendCycle[i]);
        End For;
        Debug.Unindent;
        Debug.WriteLine("=== Irregular component ===");
        Debug.Indent;
        For i := 0 To cens.IrregularComponent.Length - 1 Do
            Debug.WriteLine(cens.IrregularComponent[i]);
        End For;
        Debug.Unindent;
    End If;
End Sub UserProc;

Imports Prognoz.Platform.Interop.Stat;

Public Shared Sub Main(Params: StartParams);
Var
    cens: ISmX12ARIMA;
    y: Array[62Of Double;
    outlier: ICensus2PeriodBegin;
    i, res: Integer;
    Warnings, TrendCycle, IrrComponent: System.Array;
Begin
    cens := New SmX12ARIMA.Create();
    // explained series values
    y[0] :=  284; y[1] := 277;  y[2] := 338;  y[3] := 363;  y[4] := 370; y[5] := 388;
    y[6] :=  407; y[7] := 427;  y[8] := 368;  y[9] := 365;  y[10] := 353; y[11] := 375;
    y[12] := 248; y[13] := 263; y[14] := 322; y[15] := 396; y[16] := 412; y[17] := 451;
    y[18] := 457; y[19] := 457; y[20] := 463; y[21] := 443; y[22] := 411; y[23] := 398;
    y[24] := 335; y[25] := 321; y[26] := 393; y[27] := 418; y[28] := 431; y[29] := 499;
    y[30] := 583; y[31] := 578; y[32] := 497; y[33] := 519; y[34] := 528; y[35] := 508;
    y[36] := 422; y[37] := 439; y[38] := 494; y[39] := 539; y[40] := 559; y[41] := 603;
    y[42] := 627; y[43] := 612; y[44] := 548; y[45] := 480; y[46] := 385; y[47] := 428;
    y[48] := 307; y[49] := 273; y[50] := 334; y[51] := 390; y[52] := 415; y[53] := 453;
    y[54] := 450; y[55] := 479; y[56] := 420; y[57] := 387; y[58] := 381; y[59] := 414;
    y[60] := 335; y[61] := 326;
    /// General settings ///
    //Calculation period
    cens.ModelPeriod.FirstPoint := 1;
    cens.ModelPeriod.LastPoint := 62;
    // Choose explained variable
    cens.Serie.Value := y;
    //Quarters or months
    cens.SeasonalComponentCycleType := SeasonalityCycleType.sctMonth;
    cens.StartPeriod.MonthOrQuarter := 2;
    cens.StartPeriod.Year := 2000;
    /// Seasonality settings ///
    //Seasonality type
    cens.SeasonalAdjustmentMode := SeasonalityTypeX12.stxAdditive;
    //Seasonal filter
    cens.SeasonalFilter := SeasonalFilterType.sftAuto;
    cens.Trendma := 13;
    /// Working day and holiday adjustments ///
    // whether there are adjustments
    cens.AdjustmentOptions := AdjustmentOptionsX12Type.aoxNone;
    // Working days adjustment
    cens.TradingDayEffects := TradingDayEffectsX12Type.tdexNone;
    /// ARIMA options ///
    // non-seasonal
    cens.ParseAR("2"True);
    cens.ParseMA("1"True);
    cens.OrderDiff := 0;
    // seasonal
    cens.ParseARSeas("2"True);
    cens.ParseMASeas("1"True);
    cens.OrderDiffSeas := 0;
    /// Outliers ///
    outlier := cens.OutliersARIMAls.Add();
    outlier.Year := 2004;
    outlier.MonthOrQuarter := 2;
    outlier := cens.OutliersARIMArpbegin.Add();
    outlier.Year := 2002;
    outlier.MonthOrQuarter := 1;
    outlier := cens.OutliersARIMArpend.Add();
    outlier.Year := 2002;
    outlier.MonthOrQuarter := 5;
    /// Diagnostics ///
    // Analysis of seasonal components stability
    cens.StabilityAnalysisofSeasonals := StabilityAnalysisofSeasonalsX12Type.sasxNone;
    /// Calculate model ///
    res := cens.Execute();
    System.Diagnostics.Debug.WriteLine(cens.Errors);
    Warnings := cens.Warnings;
    For i := 0 To cens.WarningsCount - 1 Do
        System.Diagnostics.Debug.WriteLine(Warnings[i]);
    End For;
    If (res = 0Then
        System.Diagnostics.Debug.WriteLine("=== Trend-cyclic component ===");
        System.Diagnostics.Debug.Indent();
        TrendCycle := cens.TrendCycle;
        For i := 0 To cens.TrendCycle.Length - 1 Do
            System.Diagnostics.Debug.WriteLine(TrendCycle[i]);
        End For;
        System.Diagnostics.Debug.Unindent();
        System.Diagnostics.Debug.WriteLine("=== Irregular component ===");
        System.Diagnostics.Debug.Indent();
        IrrComponent := cens.IrregularComponent;
        For i := 0 To cens.IrregularComponent.Length - 1 Do
            System.Diagnostics.Debug.WriteLine(IrrComponent[i]);
        End For;
        System.Diagnostics.Debug.Unindent();
    End If;
End Sub;

After executing the example the X12 model is created, the console window displays trend-cycle and irregular components.

See also:

ISmx12arima