IExponentialSmoothingBestTrialMethod.InitialApproximation

Syntax

InitialApproximation: IExponentialSmoothingParameters;

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

Description

The InitialApproximation property determines initial approximation of parameters.

Comments

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

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;
    
// Explanatory 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;
    
// Last forecast point:
    Method.Forecast.LastPoint := 30;
    
// Seasonal component parameters:
    Seasonal := Method.SeasonalComponent;
    Seasonal.Mode := SeasonalityType.Additive;
    Seasonal.Cycle := 
4;
    
// Trend line type:
    Method.TrendComponent := TrendType.Damped;
    
// Parameters 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;
    
// Model calculation and output of results:
    status := Method.Execute;
    
If status <> 0 Then
        Debug.WriteLine(Method.Errors);
        
Else
            Debug.WriteLine(
"=== Parameters 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;

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();
    
// Explanatory 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;
    
// Last forecast point:
    Method.Forecast.LastPoint := 30;
    
// Seasonal component parameters:
    Seasonal := Method.SeasonalComponent;
    Seasonal.Mode := SeasonalityType.sstAdditive;
    Seasonal.Cycle := 
4;
    
// Trend line type:
    Method.TrendComponent := TrendType.tdtDamped;
    
// Parameters 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;
    
// Model calculation:
    status := Method.Execute();
    
If status <> 0 Then
        System.Diagnostics.Debug.WriteLine(Method.Errors);
        
Else
            System.Diagnostics.Debug.WriteLine(
"=== Parameters 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;

After executing the example the console window displays parameters values.

See also:

IExponentialSmoothingBestTrialMethod