Outliers11ao: ISlOutliers;
Outliers11ao: Prognoz.Platform.Interop.Stat.ISlOutliers;
The OutliersX11ao property returns the list of additive outliers, accounted for in the X11 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;
/// Working day and holiday adjustments ///
cens.AdjustmentOptions := AdjustmentOptionsX12Type.X11Step;
// Working days adjustment
cens.TradingDayEffects := TradingDayEffectsX12Type.Td;
// Holiday adjustments
cens.Easter.IsActive := True;
cens.Easter.Day := 8;
/// Outliers ///
outlier := cens.OutliersX11ao.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;
//Other
cens.SpectralPlots := True;
/// 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("=== Holiday adjustments ===");
Debug.Indent;
For i := 0 To cens.CombinedHolidayFactors.Length - 1 Do
Debug.WriteLine(cens.CombinedHolidayFactors[i]);
End For;
Debug.Unindent;
Debug.WriteLine("=== Spectral frequencies SP2 ===");
Debug.Indent;
For i := 0 To cens.SP2frequency.Length - 1 Do
Debug.WriteLine(cens.SP2frequency[i]);
End For;
Debug.Unindent;
Debug.WriteLine("=== Spectral densities SP2 ===");
Debug.Indent;
For i := 0 To cens.SP2spectr.Length - 1 Do
Debug.WriteLine(cens.SP2spectr[i]);
End For;
Debug.Unindent;
End If;
End Sub UserProc;
After executing the example the X12 model is created, the console window displays:
Holiday adjustments.
Spectral frequencies and densities SP2.
The requirements and result of the Fore.NET example execution match with those in the Fore example.
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, CHFactors, SP2F, SP2S: 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.stx12Additive;
//Seasonal filter
cens.SeasonalFilter := SeasonalFilterType.sftAuto;
/// Working day and holiday adjustments ///
cens.AdjustmentOptions := AdjustmentOptionsX12Type.aox12tX11Step;
// Working days adjustment
cens.TradingDayEffects := TradingDayEffectsX12Type.tdex12tTd;
// Holiday adjustments
cens.Easter.IsActive := True;
cens.Easter.Day := 8;
/// Outliers ///
outlier := cens.OutliersX11ao.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.sasx12tNone;
//Other
cens.SpectralPlots := True;
/// 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("=== Holiday adjustments === ");
System.Diagnostics.Debug.Indent();
CHFactors := cens.CombinedHolidayFactors;
For i := 0 To cens.CombinedHolidayFactors.Length - 1 Do
System.Diagnostics.Debug.WriteLine(CHFactors[i]);
End For;
System.Diagnostics.Debug.Unindent();
System.Diagnostics.Debug.WriteLine("=== Spectral frequencies SP2 ===");
System.Diagnostics.Debug.Indent();
SP2F := cens.SP2frequency;
For i := 0 To cens.SP2frequency.Length - 1 Do
System.Diagnostics.Debug.WriteLine(SP2F[i]);
End For;
System.Diagnostics.Debug.Unindent();
System.Diagnostics.Debug.WriteLine("=== Spectral densities SP2 ===");
System.Diagnostics.Debug.Indent();
SP2S := cens.SP2spectr;
For i := 0 To cens.SP2spectr.Length - 1 Do
System.Diagnostics.Debug.WriteLine(SP2S[i]);
End For;
System.Diagnostics.Debug.Unindent();
End If;
End Sub;
See also: