IExponentialSmoothingParameters.Phi

Синтаксис Fore

Phi: Double;

Синтаксис Fore.NET

Phi: double;

Описание

Свойство Phi определяет значение параметра фи.

Комментарии

По умолчанию свойство имеет значение «0,10».

Пример Fore

Для выполнения примера добавьте ссылку на системную сборку Stat.

Sub UserProc;
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(i.ToString + ",---empty---");
                Else
                Debug.WriteLine(i.ToString + ", " + 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.Linear;
    // Задаем параметры
    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("=== Модельный ряд ===");
        Print(Method.Fitted);
    End If;
End Sub UserProc;

После выполнения примера, в окно консоли будут выведен рассчитанный модельный ряд.

Пример Fore.NET

Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.

Imports Prognoz.Platform.Interop.Stat;

Public Shared Sub Main(Params: StartParams);
Var
    Method: SmExponentialSmoothing;
    serie: Array Of Double;
    status: Integer;
    Params_a: 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.sstAdditive;
    Seasonal.Cycle := 4;
    // Определяем тип тренда модели
    Method.TrendComponent := TrendType.tdtLinear;
    // Задаем параметры
    Params_a := Method.Parameters;
    Params_a.Alpha := 0.15;
    Params_a.Delta := 0.2;
    Params_a.Phi := 0.15;
    // Запускаем расчет и выводим модельный ряд
    status := Method.Execute();
    If status <> 0 Then
        System.Diagnostics.Debug.WriteLine(Method.Errors);
        Else
        System.Diagnostics.Debug.WriteLine("=== Модельный ряд ===");
        Print(Method.Fitted);
    End If;
End Sub;
    
Public Shared Sub Print(Data: System.Array);
    Var
        i: Integer;
    Begin       
        System.Diagnostics.Debug.WriteLine("---Begin---");
        For i := 0 To Data.Length - 1 Do
            If Double.IsNan(Data[i] As double) Then
            System.Diagnostics.Debug.WriteLine("---empty---");
            Else
            System.Diagnostics.Debug.WriteLine(i.ToString() + ", " + Data[i]);
            End If;
        End For;
       System.Diagnostics.Debug.WriteLine("---End---");
End Sub Print;

См. также:

IExponentialSmoothingParameters