ISmGARCH.ARMA

Синтаксис Fore

ARMA: ISlARMAGARCH;

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

ARMA: Prognoz.Platform.Interop.Stat.ISlARMAGARCH;

Описание

Свойство ARMA возвращает параметры авторегрессии и скользящего среднего.

Комментарии

По умолчанию порядки авторегрессии и скользящего среднего не заданы.

Пример Fore

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

Sub UserProc;
Var
    GARCH: ISmGARCH;
    RegrCoef, GARCHCoef: ICoefficients;
    x: Array[10Of Double;
    y1, y2: Array[15Of Double;
    Res, i, j: Integer;
    d: Double;
    str: String;
    // Процедура вывода данных
    Sub Print(Data: Array Of Double);
    Var
        i: Integer;
    Begin
        Debug.Indent;
        For i := 0 To Data.Length - 1 Do
            If Double.IsNan(Data[i]) Then
                Debug.WriteLine("----empty---");
                Else
                    Debug.WriteLine(i.ToString + " " + Data[i].ToString);
            End If;
        End For;
        Debug.Unindent;
    End Sub Print;
Begin
    GARCH := New SmGARCH.Create;
    // Задаем значения переменных
    x[0] := 100; y1[0] := 120; y2[0] := 122;
    x[1] := 111; y1[1] := 125; y2[1] := 127;
    x[2] := 123; y1[2] := 124; y2[2] := 130;
    x[3] := 113; y1[3] := 130; y2[3] := 135;
    x[4] := 119; y1[4] := 133; y2[4] := 140;
    x[5] := 121; y1[5] := Double.Nan; y2[5] := 149;
    x[6] := 125; y1[6] := 139; y2[6] := 150;
    x[7] := 131; y1[7] := 140; y2[7] := 155;
    x[8] := 131; y1[8] := Double.Nan; y2[8] := 155;
    x[9] := 131; y1[9] := 140; y2[9] := Double.Nan;
    y1[10] := 129; y2[10] := 149;
    y1[11] := 139; y2[11] := 150;
    y1[12] := 140; y2[12] := 155;
    y1[13] := 134; y2[13] := 145;
    y1[14] := 140; y2[14] := 165;
    // Задаем объясняемую переменную
    GARCH.Explained.Value := x;
    // Задаем объясняющие переменные
    GARCH.Explanatories.Clear;
    GARCH.Explanatories.Add.Value := y1;
    GARCH.Explanatories.Add.Value := y2;
    // Задаем параметры периодов идентификации и прогноза
    GARCH.ModelPeriod.FirstPoint := 1;
    GARCH.ModelPeriod.LastPoint := 10;
    // Использование начальных значений по умолчанию
    GARCH.UseDefaultInitValues := True;
    // Задаем параметры авторегрессии и скользящего среднего
    GARCH.ARMA.ParseAR("0");
    GARCH.ARMA.ParseMA("0");
    // Задаем параметры прогнозного ряда
    GARCH.Forecast.LastPoint := 15;
    // Задаем режим определения константы
    GARCH.Intercept.Mode := InterceptMode.AutoEstimate;
    // Задаем метод обработки пропусков
    GARCH.MissingData.Method := MissingDataMethod.LinTrend;
    // Определяем условие стационарности
    GARCH.StationarityCondition := False;
    // Задаем максимальное число итераций для расчета метода
    GARCH.MaxIteration := 100;
    // Задаем точность вычислений
    GARCH.Tolerance := 0.0001;
    // Задаем порядок авторегрессии условной гетероскедастичности
    GARCH.ARCHOrder := 1;
    // Задаем порядок обобщенной авторегрессии условной гетероскедастичности
    GARCH.GARCHOrder := 1;
    // Задаем порядок асимметрии
    GARCH.AssymetryOrder := 2;
    // Задаем тип модели GARCH
    GARCH.GARCHSpec := GARCHSpecType.GARCH;
    // Выполняем расчет метода и выводим результаты
    res := GARCH.Execute;
    If res <> 0 Then
        Debug.WriteLine(GARCH.Errors);
        Else
            d := GARCH.LikelihoodFunctionValue;
            Debug.WriteLine("Оптимальное значение функции правдоподобия: " + d.ToString);
            d := GARCH.SummaryStatistics.SE;
            Debug.WriteLine("Стандартная ошибка: " + d.ToString);
            Debug.WriteLine("== Сглаженный ряд ==");
            Print(GARCH.Fitted);
            Debug.WriteLine("== Ряд остатков ==");
            Print(GARCH.Residuals);
            Debug.WriteLine("== Дисперсия остатков ==");
            Print(GARCH.ResidualsDispersion);
            Debug.WriteLine("== Прогноз дисперсии остатков ==");
            Print(GARCH.ResidualsDispersionForecast);
            Debug.WriteLine("== Оценка регрессионных коэффициентов ==");
            RegrCoef := GARCH.RegressionCoefficients.Coefficients;
            Debug.Indent;
            Debug.WriteLine("Оцененные значения коэффициентов модели: ");
            For i := 0 To RegrCoef.Estimate.Length - 1 Do
                Debug.WriteLine(RegrCoef.Estimate[i]);
            End For;
            Debug.WriteLine("Вероятностные коэффициенты: ");
            For i := 0 To RegrCoef.Estimate.Length - 1 Do
                Debug.WriteLine(RegrCoef.Probability[i]);
            End For;
            Debug.Unindent;
            Debug.WriteLine("== Оценка коэффициентов обобщенной авторегрессии условной гетероскедастичности ==");
            GARCHCoef := GARCH.GARCHCoefficients.Coefficients;
            Debug.Indent;
            Debug.WriteLine("Оцененные значения коэффициентов модели: ");
            For i := 0 To GARCHCoef.Estimate.Length - 1 Do
                Debug.WriteLine(GARCHCoef.Estimate[i]);
            End For;
            Debug.WriteLine("Вероятностные коэффициенты: ");
            For i := 0 To GARCHCoef.Estimate.Length - 1 Do
                Debug.WriteLine(GARCHCoef.Probability[i]);
            End For;
            Debug.Unindent;
    End If;
End Sub UserProc;

После выполнения примера в окно консоли будут выполнены результаты расчёта GARCH-модели.

Пример Fore.NET

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

Imports Prognoz.Platform.Interop.Stat;

// Процедура вывода данных
Public Shared Sub Print(Data: System.Array);
Var
    i: Integer;
Begin
    System.Diagnostics.Debug.Indent();
    For i := 0 To Data.Length - 1 Do
        If Double.IsNan(Data.GetValue(i) As double) Then
            System.Diagnostics.Debug.WriteLine("---empty---");
        Else
            System.Diagnostics.Debug.WriteLine(i.ToString() + " " + Data.GetValue(i));
        End If;
    End For;
    System.Diagnostics.Debug.Unindent();
End Sub Print;

Public Shared Sub Main(Params: StartParams);
Var
    GARCH: ISmGARCH;
    RegrCoef, GARCHCoef: ICoefficients;
    x: Array[10Of Double;
    y1, y2: Array[15Of Double;
    Res, i, j: Integer;
    d: Double;
Begin
    GARCH := New SmGARCH.Create();
    // Задаем значения переменных
    x[0] := 100; y1[0] := 120; y2[0] := 122;
    x[1] := 111; y1[1] := 125; y2[1] := 127;
    x[2] := 123; y1[2] := 124; y2[2] := 130;
    x[3] := 113; y1[3] := 130; y2[3] := 135;
    x[4] := 119; y1[4] := 133; y2[4] := 140;
    x[5] := 121; y1[5] := Double.Nan; y2[5] := 149;
    x[6] := 125; y1[6] := 139; y2[6] := 150;
    x[7] := 131; y1[7] := 140; y2[7] := 155;
    x[8] := 131; y1[8] := Double.Nan; y2[8] := 155;
    x[9] := 131; y1[9] := 140; y2[9] := Double.Nan;
    y1[10] := 129; y2[10] := 149;
    y1[11] := 139; y2[11] := 150;
    y1[12] := 140; y2[12] := 155;
    y1[13] := 134; y2[13] := 145;
    y1[14] := 140; y2[14] := 165;
    // Задаем объясняемую переменную
    GARCH.Explained.Value := x;
    // Задаем объясняемую переменные
    GARCH.Explanatories.Clear();
    GARCH.Explanatories.Add().Value := y1;
    GARCH.Explanatories.Add().Value := y2;
    // Задаем параметры периодов идентификации прогноза
    GARCH.ModelPeriod.FirstPoint := 1;
    GARCH.ModelPeriod.LastPoint := 10;
    // Использование начальных значений по умолчанию
    GARCH.UseDefaultInitValues := True;
    // Задаем параметры авторегрессии и скользящего среднего
    GARCH.ARMA.ParseAR("0"True);
    GARCH.ARMA.ParseMA("0"True);
    // Задаем параметры прогнозного ряда
    GARCH.Forecast.LastPoint := 15;
    // Задаем режим определения константы
    GARCH.Intercept.Mode := InterceptMode.imAutoEstimate;
    // Задаем метод обработки пропусков
    GARCH.MissingData.Method := MissingDataMethod.mdmSampleAverage;
    // Определяем условие стационарности
    GARCH.StationarityCondition := False;
    // Задаем максимальное число итераций для расчета метода
    GARCH.MaxIteration := 100;
    // Задаем точность вычислений
    GARCH.Tolerance := 0.0001;
    // Задаем порядок авторегрессии условной гетероскедастичности
    GARCH.ARCHOrder := 1;
    // Задаем порядок обобщенной авторегрессии условной гетероскедастичности
    GARCH.GARCHOrder := 1;
    // Выполняем расчет метода и выводим результаты
    res := GARCH.Execute();
    If res <> 0 Then
        System.Diagnostics.Debug.WriteLine(GARCH.Errors);
        Else
            d := GARCH.LikelihoodFunctionValue;
            System.Diagnostics.Debug.WriteLine("Оптимальное значение функции правдоподобия: " + d.ToString());
            d := GARCH.SummaryStatistics.SE;
            System.Diagnostics.Debug.WriteLine("Стандартная ошибка: " + d.ToString());
            System.Diagnostics.Debug.WriteLine("== Сглаженный ряд ==");
            Print(GARCH.Fitted);
            System.Diagnostics.Debug.WriteLine("== Ряд остатков ==");
            Print(GARCH.Residuals);
            System.Diagnostics.Debug.WriteLine("== Дисперсия остатков ==");
            Print(GARCH.ResidualsDispersion);
            System.Diagnostics.Debug.WriteLine("== Прогноз дисперсии остатков ==");
            Print(GARCH.ResidualsDispersionForecast);
            System.Diagnostics.Debug.WriteLine("== Оценка регрессионных коэффициентов ==");
            RegrCoef := GARCH.RegressionCoefficients.Coefficients;
            System.Diagnostics.Debug.Indent();
            System.Diagnostics.Debug.WriteLine("Оцененные значения коэффициентов модели: ");
            For i := 0 To RegrCoef.Estimate.Length - 1 Do
                d := RegrCoef.Estimate.GetValue(i) As double;
                System.Diagnostics.Debug.WriteLine(i.ToString() + ", " + d.ToString());
            End For;
            System.Diagnostics.Debug.WriteLine("Вероятностные коэффициенты: ");
            For i := 0 To RegrCoef.Estimate.Length - 1 Do
                d := RegrCoef.Probability.GetValue(i) As double;
                System.Diagnostics.Debug.WriteLine(i.ToString() + ", " + d.ToString());
            End For;
            System.Diagnostics.Debug.Unindent();
            System.Diagnostics.Debug.WriteLine("== Оценка коэффициентов обобщенной авторегрессии условной гетероскедастичности ==");
            GARCHCoef := GARCH.GARCHCoefficients.Coefficients;
            System.Diagnostics.Debug.Indent();
            System.Diagnostics.Debug.WriteLine("Оцененные значения коэффициентов модели: ");
            For i := 0 To GARCHCoef.Estimate.Length - 1 Do
                d := GARCHCoef.Estimate.GetValue(i) As double;
                System.Diagnostics.Debug.WriteLine(i.ToString() + ", " + d.ToString());
            End For;
            System.Diagnostics.Debug.WriteLine("Вероятностные коэффициенты: ");
            For i := 0 To GARCHCoef.Estimate.Length - 1 Do
                d := GARCHCoef.Probability.GetValue(i) As double;
                System.Diagnostics.Debug.WriteLine(i.ToString() + ", " + d.ToString());
            End For;
            System.Diagnostics.Debug.Unindent();
    End If;
End Sub;

См. также:

ISmGARCH