ISmExponentialSmoothing.InitialValueS

Syntax

InitialValueS: Double;

Description

The InitialValueS property determines the initial point of seasonal component.

Comments

If this value is not set manually, it is calculated automatically. Calculation formula depends on the selected model parameters.

Example

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

Sub UserProc;
Var 
    Method: SmExponentialSmoothing;
    serie: Array Of Double;
    status: Integer;
    Params: IExponentialSmoothingParameters;
    Seasonal: ISeasonal;
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("=== Model series ===");
        Print(Method.Fitted);
    End If;
End Sub UserProc;

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;

After executing the example the console window displays seasonal component initial value, trend line initial value, and modeling series.

See also:

ISmExponentialSmoothing