IExponentialSmoothingBestTrialMethod.InitialApproximation

Fore Syntax

InitialApproximation: IExponentialSmoothingParameters;

Fore.NET Syntax

InitialApproximation: Prognoz.Platform.Interop.Stat.IExponentialSmoothingParameters;

Description

The InitialApproximation property determines initial approximation of parameters.

Comments

To determine the maximum number of iterations (n) of the best trial method for searching parameters, use the IExponentialSmoothingBestTrialMethod.MaxIteration property.

Fore Example

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

Sub UserProc;
Var
    Method: SmExponentialSmoothing;
    serie: Array[15Of Double;
    status: Integer;
    Seasonal: ISeasonal;
    Auto: IExponentialSmoothingAutoSearch;
    BTM: IExponentialSmoothingBestTrialMethod;
Begin
    Method := New SmExponentialSmoothing.Create;
    // Explained series:
    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;
    // Forecasting series parameters:
    Method.Forecast.LastPoint := 30;
    // Parameters of seasonal component:
    Seasonal := Method.SeasonalComponent;
    Seasonal.Mode := SeasonalityType.Additive;
    Seasonal.Cycle := 4;
    // Trend line type:
    Method.TrendComponent := TrendType.Damped;
    // Parameter autoselection settings:
    Auto := Method.AutoSearch;
    Auto.Criterion := CriterionType.MeanError;
    Auto.Mode := SearchType.Optimal;
    // Parameter autoselection settings for exponential smoothing
    BTM := Auto.BestTrialMethod;
    // Constant in the best trial method:
    BTM.MethodConstant := 0.5;
    // The number of implementations in one iteration of the best trial method:
    BTM.Order := 7;
    // The number of iterations of the best trial method:
    BTM.MaxIteration := 10;
    // Initial approximations of parameters:
    BTM.InitialApproximation.Alpha := 0.03;
    BTM.InitialApproximation.Delta := 0.03;
    BTM.InitialApproximation.Gamma := 0.02;
    BTM.InitialApproximation.Phi := 0.02;
    // Calculate model:
    status := Method.Execute;
    If status <> 0 Then
        Debug.WriteLine(Method.Errors);
        Else
            Debug.WriteLine("=== Parameter values ===");
            Debug.WriteLine("Alpha " + Method.BestModelCoefficients.Alpha.ToString);
            Debug.WriteLine("Delta " + Method.BestModelCoefficients.Delta.ToString);
            Debug.WriteLine("Gamma " + Method.BestModelCoefficients.Gamma.ToString);
            Debug.WriteLine("Phi " + Method.BestModelCoefficients.Phi.ToString);
    End If;
End Sub UserProc;

After executing the example the console window displays the following data:

=== Parameter values ===

Alpha 0,1

Delta 0,1

Gamma 0,02

Phi 0,1

Fore.NET Example

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
    Method: SmExponentialSmoothing;
    serie: Array[15Of double;
    status: integer;
    Seasonal: ISeasonal;
    Auto: IExponentialSmoothingAutoSearch;
    BTM: IExponentialSmoothingBestTrialMethod;
Begin
    Method := New SmExponentialSmoothing.Create();
    // Explained series:
    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;
    // Forecasting series parameters:
    Method.Forecast.LastPoint := 30;
    // Parameters of seasonal component:
    Seasonal := Method.SeasonalComponent;
    Seasonal.Mode := SeasonalityType.sstAdditive;
    Seasonal.Cycle := 4;
    // Trend line type:
    Method.TrendComponent := TrendType.tdtDamped;
    // Parameter autoselection settings:
    Auto := Method.AutoSearch;
    Auto.Criterion := CriterionType.ctMeanError;
    Auto.Mode := SearchType.stOptimal;
    // Parameter autoselection settings for exponential smoothing
    BTM := Auto.BestTrialMethod;
    // Constant in the best trial method:
    BTM.MethodConstant := 0.5;
    // The number of implementations in one iteration of the best trial method:
    BTM.Order := 7;
    // The number of iterations of the best trial method:
    BTM.MaxIteration := 10;
    // Initial approximations of parameters:
    BTM.InitialApproximation.Alpha := 0.03;
    BTM.InitialApproximation.Delta := 0.03;
    BTM.InitialApproximation.Gamma := 0.02;
    BTM.InitialApproximation.Phi := 0.02;
    // Calculate model:
    status := Method.Execute();
    If status <> 0 Then
        System.Diagnostics.Debug.WriteLine(Method.Errors);
        Else
            System.Diagnostics.Debug.WriteLine("=== Parameter values ===");
            System.Diagnostics.Debug.WriteLine("Alpha " + Method.BestModelCoefficients.Alpha.ToString());
            System.Diagnostics.Debug.WriteLine("Delta " + Method.BestModelCoefficients.Delta.ToString());
            System.Diagnostics.Debug.WriteLine("Gamma " + Method.BestModelCoefficients.Gamma.ToString());
            System.Diagnostics.Debug.WriteLine("Phi " + Method.BestModelCoefficients.Phi.ToString());
    End If;
End Sub;

See also:

IExponentialSmoothingBestTrialMethod