ISlARMA.UseFittedInForecast

Синтаксис Fore

UseFittedInForecast: Boolean;

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

UseFittedInForecast: boolean;

Описание

Свойство UseFittedInForecast определяет, рассчитываются ли первые прогнозные значения в модели с авторегрессией на основе смоделированных значений.

Комментарии

Допустимые значения:

Пример Fore

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

Sub UserProc;
Var
    lr: ISmLinearRegress;
    W: Array[20Of Double;
    ARMA: ISlARMA;
    Inits: Array[2Of Double;
    res: Integer;
    d: Double;
    CoefficientsAR: ICoefficients;
    ModelCoefficients: IModelCoefficients;
    i: Integer;
    Forecast: Array Of Double;
Begin
    lr := New SmLinearRegress.Create;
    // значения объясняемого ряда
    w[0] := 2; w[4] := -1.9; w[8] := -0.7; w[12] := 5.4; w[16] := 2.8;
    w[1] := 0.8; w[5] := Double.Nan; w[9] := Double.Nan; w[13] := 6.4;w[17] := 0.8;
    w[2] := -0.3; w[6] := 3.2; w[10] := 4.3; w[14] := 7.4; w[18] := -0.7;
    w[3] := -0.3; w[7] := 1.6; w[11] := 1.1;w[15] := 2;w[19] := Double.Nan;
    // период идентификации
    lr.ModelPeriod.FirstPoint := 1;
    lr.ModelPeriod.LastPoint := 13;
    lr.Forecast.LastPoint := 19;
    lr.MissingData.Method := MissingDataMethod.SampleAverage;
    lr.Explained.Value := w;
    ModelCoefficients := lr.ModelCoefficients;
    // в модели будет использоваться константа
    ModelCoefficients.Intercept.Mode := InterceptMode.AutoEstimate;
    ARMA := lr.ARMA;
    // прогнозные значения будут рассчитываться на базе моделируемого ряда
    ARMA.UseFittedInForecast := True;
    // порядок авторегрессии
    ARMA.ParseAR("1");
    // начальные приближения авторегрессии
    Inits[0] := 0.0025;
    ARMA.InitAR := Inits;
    // разность
    ARMA.Diff := 2;
    // метод оптимизации
    ARMA.EstimationMethod := ARMAEstimationMethodType.LevenbergMarquardt;
    // 1-й расчет модели. Прогнозные значения рассчитываются на базе моделируемого ряда
    res := lr.Execute;
    If (res = 0Then
    Debug.WriteLine("Прогнозные значения рассчитаны на базе моделируемого ряда");
        // коэффициенты авторегрессии
        CoefficientsAR := ARMA.CoefficientsAR;
        d := CoefficientsAR.Estimate[0];
        Debug.WriteLine(" Оценка коэффициента авторегрессии: " + d.ToString);
        // прогнозные значения
        Forecast := lr.Forecast.Value;
        Debug.WriteLine(" Прогнозные значения:"); Debug.Indent;
        For i := lr.ModelPeriod.LastPoint To Forecast.Length - 1 Do
            Debug.WriteLine(Forecast[i]);
        End For;
        Debug.Unindent;
    Else
        Debug.WriteLine(lr.Errors);
    End If;
    // 2-й расчет модели. Прогнозные значения рассчитываются на базе фактических данных
    ARMA.UseFittedInForecast := False;
    res := lr.Execute;
    If (res = 0Then
    Debug.WriteLine("Прогнозные значения рассчитаны на базе фактических данных");
        // коэффициенты авторегрессии
        CoefficientsAR := ARMA.CoefficientsAR;
        d := CoefficientsAR.Estimate[0];
        Debug.WriteLine(" Оценка коэффициента авторегрессии: " + d.ToString);
        // прогнозные значения
        Forecast := lr.Forecast.Value;
        Debug.WriteLine(" Прогнозные значения:"); Debug.Indent;
        For i := lr.ModelPeriod.LastPoint To Forecast.Length - 1 Do
            Debug.WriteLine(Forecast[i]);
        End For;
        Debug.Unindent;
    Else
        Debug.WriteLine(lr.Errors);
    End If;
End Sub UserProc;

После выполнения примера будет создана модель линейной регрессии, определены ее параметры. В окно консоли будут выведены оценки коэффициентов модели и прогнозные значения, рассчитанные на базе моделируемого ряда и фактических данных.

Пример Fore.NET

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

Imports Prognoz.Platform.Interop.Stat;

Public Shared Sub UserProc();
Var
    lr: ISmLinearRegress;
    W: Array[20Of Double;
    ARMA: ISlARMA;
    Inits: Array[2Of Double;
    res: Integer;
    d: Double;
    CoefficientsAR: ICoefficients;
    ModelCoefficients: IModelCoefficients;
    i: Integer;
    Forecast: System.Array;
Begin
    lr := New SmLinearRegress.Create();
    // значения объясняемого ряда
    w[0] := 2; w[4] := -1.9; w[8] := -0.7; w[12] := 5.4; w[16] := 2.8;
    w[1] := 0.8; w[5] := Double.Nan; w[9] := Double.Nan; w[13] := 6.4;w[17] := 0.8;
    w[2] := -0.3; w[6] := 3.2; w[10] := 4.3; w[14] := 7.4; w[18] := -0.7;
    w[3] := -0.3; w[7] := 1.6; w[11] := 1.1;w[15] := 2;w[19] := Double.Nan;
    // период идентификации
    lr.ModelPeriod.FirstPoint := 1;
    lr.ModelPeriod.LastPoint := 13;
    lr.Forecast.LastPoint := 19;
    lr.MissingData.Method := MissingDataMethod.mdmSampleAverage;
    lr.Explained.Value := w;
    ModelCoefficients := lr.ModelCoefficients;
    // в модели будет использоваться константа
    ModelCoefficients.Intercept.Mode := InterceptMode.imAutoEstimate;
    ARMA := lr.ARMA;
    // прогнозные значения будут рассчитываться на базе моделируемого ряда
    ARMA.UseFittedInForecast := True;
    // порядок авторегрессии
    ARMA.ParseAR("1"True);
    // начальные приближения авторегрессии
    Inits[0] := 0.0025;
    ARMA.InitAR := Inits;
    // разность
    ARMA.Diff := 2;
    // метод оптимизации
    ARMA.EstimationMethod := ARMAEstimationMethodType.armaemtLevenbergMarquardt;
    // 1-й расчет модели. Прогнозные значения рассчитываются на базе моделируемого ряда
    res := lr.Execute();
    If (res = 0Then
    System.Diagnostics.Debug.WriteLine("Прогнозные значения рассчитаны на базе моделируемого ряда");
        // коэффициенты авторегрессии
        CoefficientsAR := ARMA.CoefficientsAR;
        d := CoefficientsAR.Estimate.GetValue(0As double;
        System.Diagnostics.Debug.WriteLine(" Оценка коэффициента авторегрессии: " + d.ToString());
        // прогнозные значения
        Forecast := lr.Forecast.Value;
        System.Diagnostics.Debug.WriteLine(" Прогнозные значения:"); System.Diagnostics.Debug.Indent();
        For i := lr.ModelPeriod.LastPoint To Forecast.Length - 1 Do
            System.Diagnostics.Debug.WriteLine(Forecast.GetValue(i));
        End For;
        System.Diagnostics.Debug.Unindent();
    Else
        System.Diagnostics.Debug.WriteLine(lr.Errors);
    End If;
    // 2-й расчет модели. Прогнозные значения рассчитываются на базе фактических данных
    ARMA.UseFittedInForecast := False;
    res := lr.Execute();
    If (res = 0Then
    System.Diagnostics.Debug.WriteLine("Прогнозные значения рассчитаны на базе фактических данных");
        // коэффициенты авторегрессии
        CoefficientsAR := ARMA.CoefficientsAR;
        d := CoefficientsAR.Estimate.GetValue(0As double;
        System.Diagnostics.Debug.WriteLine(" Оценка коэффициента авторегрессии: " + d.ToString());
        // прогнозные значения
        Forecast := lr.Forecast.Value;
        System.Diagnostics.Debug.WriteLine(" Прогнозные значения:"); System.Diagnostics.Debug.Indent();
        For i := lr.ModelPeriod.LastPoint To Forecast.Length - 1 Do
            System.Diagnostics.Debug.WriteLine(Forecast.GetValue(i));
        End For;
        System.Diagnostics.Debug.Unindent();
    Else
        System.Diagnostics.Debug.WriteLine(lr.Errors);
    End If;
End Sub UserProc;

См. также:

ISlARMA