OutliersARIMAls: ISlOutliers;
OutliersARIMAls: Prognoz.Platform.Interop.Stat.ISlOutliers;
The OutliersARIMAls property returns the list of outliers of the "level shift" type, accounted for in the ARIMA stage.
To determine whether to account for the outliers in the procedure, use the ISmx12arima.OutliersDetection prooperty.
To execute the example, add a link to the Stat system assembly.
Sub UserProc;
Var
cens: ISmX12ARIMA;
y: Array[62] Of 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 = 0) Then
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[62] Of 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 = 0) Then
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: