InitialValueS: Double;
The InitialValueS property determines the initial point of seasonal component.
If this value is not set manually, it is calculated automatically. Calculation formula depends on the selected model parameters.
Sub Main;
Var
Method: SmExponentialSmoothing;
serie: Array Of Double;
status: Integer;
Params: IExponentialSmoothingParameters;
Seasonal: ISeasonal;
Sub Print(Data: Array Of Double);
Var
i: Integer;
CI: ICultureInfo;
Begin
CI := CultureInfo.Current;
Debug.WriteLine("---Begin---");
For i := 0 To Data.Length - 1 Do
If Double.IsNan(Data[i]) Then
Debug.WriteLine("---empty---");
Else
Debug.WriteLine(CI.FormatDoublePrec(Data[i], 4));
End If;
End For;
Debug.WriteLine("---End---");
End Sub Print;
Begin
Method := New SmExponentialSmoothing.Create;
serie := New Double[15];
serie[0] := 670.2000183;
serie[1] := 576.0680563;
serie[2] := 717.6484268;
serie[3] := 856.9105808;
serie[4] := 885.4609516;
serie[5] := 1011.846431;
serie[6] := 995.4496292;
serie[7] := 1064.74221;
serie[8] := 1033.324656;
serie[9] := 780.8584552;
serie[10] := 657.5033113;
serie[11] := 654.5472579;
serie[12] := 678.2380139;
serie[13] := 642.4128544;
serie[14] := 751.9611194;
Method.Serie.Value := serie;
Method.Forecast.LastPoint := 40;
Seasonal := Method.SeasonalComponent;
Seasonal.Mode := SeasonalityType.Additive;
Seasonal.Cycle := 4;
Method.TrendComponent := TrendType.Damped;
Params := Method.Parameters;
Params.Alpha := 0.15;
Params.Delta := 0.2;
Params.Phi := 0.15;
status := Method.Execute;
If status <> 0 Then
Debug.WriteLine(Method.Errors);
Else
Debug.WriteLine("=== Seasonal component initial value ===");
Debug.WriteLine(Method.InitialValueS);
Debug.WriteLine("=== Trend line initial value ===");
Debug.WriteLine(Method.InitialValueT);
Debug.WriteLine("=== Modeling series ===");
Print(Method.Fitted);
End If;
End Sub Main;
After executing the example the console window displays the following results:
Module execution started
=== Seasonal component initial value ===
577,9540213
=== Trend line initial value ===
63,6263746249999
=== Modeling series ===
---Begin---
0, 619,3770
1, 579,2275
2, 566,2184
3, 679,5578
4, 742,0382
5, 721,1128
6, 818,8091
7, 944,4792
8, 985,1681
9, 956,7924
10, 897,6569
11, 888,5154
12, 810,8649
13, 694,4299
14, 662,3631
---End---
Module execution finished
See also: