ISmMarkovSwitchingGARCH.ARCHCoefficients

Синтаксис Fore

ARCHCoefficients: IMSGARCHCoefficients;

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

ARCHCoefficients: Prognoz.Platform.Interop.Stat.IMSGARCHCoefficients;

Описание

Свойство ARCHCoefficients возвращает оценки коэффициентов авторегрессии условной гетероскедастичности (ARCH) модели и их характеристики.

Комментарии

Количество коэффициентов должно соответствовать параметру ARCHOrder.

Пример Fore

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

Sub UserProc;
Var
    SMG: ISmMarkovSwitchingGARCH;
    ARCHCoef, RCoef, GARCHCoef: ICoefficients;
    y: Array[5Of Double;
    x: Array[10Of Double;
    res, i: Integer;
Begin
    SMG := New SmMarkovSwitchingGARCH.Create;
    // задаем значения переменных
    y[0] := 5.207664; x[0] := 1.9061476;
    y[1] := 5.264373; x[1] := -0.26003;
    y[2] := Double.Nan; x[2] := 9.54554;
    y[3] := 5.702848; x[3] := 7.9776938;
    y[4] := 5.996597; x[4] := Double.Nan;
                        x[5] := 12.719879;
                        x[6] := 13.875518;
                        x[7] := 16.046427;
                        x[8] := 17.218547;
                        x[9] := 21.07471;
    // выбираем объясняемый ряд
    SMG.Explained.Value := y;
    // выбираем объясняющий ряд
    SMG.Explanatories.Clear;
    SMG.Explanatories.Add.Value := x;
    // определяем период идентификации
    SMG.ModelPeriod.FirstPoint := 1;
    SMG.ModelPeriod.LastPoint := 5;
    // определяем период прогнозирования
    SMG.Forecast.LastPoint := 10;
    // выбираем порядки ARCH и GARCH
    SMG.ARCHOrder := 1;
    SMG.GARCHOrder := 1;
    // выбираем метод обработки пропусков
    SMG.MissingData.Method := MissingDataMethod.LinTrend;
    // определяем параметры алгоритма Марковской цепи Монте Карло
    SMG.MCMCParameters.NumOfIterations := 200;
    SMG.MCMCParameters.IterationsToDiscard := 100;
    SMG.MCMCParameters.Period := 20;
    // используем начальные значения по умолчанию
    SMG.UseDefaultInitDistribution := True;
    // рассчитываем модель и выводим результаты
    res := SMG.Execute;
    Debug.WriteLine(SMG.Errors);
    Debug.WriteLine("Модель MS-GARCH");
    RCoef := SMG.RegressionCoefficients.Coefficients;
    Debug.WriteLine("Коэффициенты");
    For i := 0 To RCoef.Estimate.Length - 1 Do
        Debug.WriteLine("X: " + RCoef.Estimate[i].ToString + ", Дисперсия: " + RCoef.StandardError[i].ToString);
    End For;
    ARCHCoef := SMG.ARCHCoefficients.Coefficients;
    For i := 0 To ARCHCoef.Estimate.Length - 1 Do
        Debug.WriteLine("ARCH: " + ARCHCoef.Estimate[i].ToString + ", Дисперсия: " + ARCHCoef.StandardError[i].ToString);
    End For;
    GARCHCoef := SMG.GARCHCoefficients.Coefficients;
    For i := 0 To GARCHCoef.Estimate.Length - 1 Do
        Debug.WriteLine("GARCH: " + GARCHCoef.Estimate[i].ToString + ", Дисперсия: " + GARCHCoef.StandardError[i].ToString);
    End For;
    Debug.WriteLine("GARCH Const0: " + SMG.GARCHConst.Estimation.ToString + ", Дисперсия: " + SMG.GARCHConst.Dispersion.ToString);
    Debug.WriteLine("GARCH Const1: " + SMG.GARCHConst1.Estimation.ToString + ", Дисперсия: " + SMG.GARCHConst1.Dispersion.ToString);
    Debug.WriteLine("");
    Debug.WriteLine("Модельный ряд");
    For i := 0 To SMG.Fitted.Length - 1 Do
        Debug.WriteLine((i + 1).ToString + " " + SMG.Fitted[i].ToString);
    End For;
    Debug.WriteLine("");
    Debug.WriteLine("Ряд остатков");
    For i := 0 To SMG.Residuals.Length - 1 Do
        Debug.WriteLine((i + 1).ToString + " " + SMG.Residuals[i].ToString);
    End For;
    Debug.WriteLine("");
    Debug.WriteLine("Ряд дисперсий остатков");
    For i := 0 To SMG.ResidualsDispersion.Length - 1 Do
        Debug.WriteLine((i + 1).ToString + " " + SMG.ResidualsDispersion[i].ToString);
    End For;
    Debug.WriteLine("");
    Debug.WriteLine("Прогнозный ряд");
    For i := SMG.Fitted.Length To SMG.Forecast.Value.Length - 1 Do
        Debug.WriteLine((i + 1).ToString + " " + SMG.Forecast.Value[i].ToString);
    End For;
    Debug.WriteLine("");
    Debug.WriteLine("Прогноз дисперсий остатков");
    For i := SMG.ResidualsDispersion.Length To SMG.Forecast.Value.Length - 1 Do
        Debug.WriteLine((i + 1).ToString + " " + SMG.ResidualsDispersionForecast[i].ToString);
    End For;
End Sub UserProc;

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

Пример Fore.NET

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

Imports Prognoz.Platform.Interop.Stat;

Public Shared Sub Main(Params: StartParams);
Var
    SMG: ISmMarkovSwitchingGARCH;
    ARCHCoef, RCoef, GARCHCoef: ICoefficients;
    y: Array[5Of Double;
    x: Array[10Of Double;
    res, i: Integer;
Begin
    SMG := New SmMarkovSwitchingGARCH.Create();
    // задаем значения переменных
    y[0] := 5.207664; x[0] := 1.9061476;
    y[1] := 5.264373; x[1] := -0.26003;
    y[2] := Double.Nan; x[2] := 9.54554;
    y[3] := 5.702848; x[3] := 7.9776938;
    y[4] := 5.996597; x[4] := Double.Nan;
                        x[5] := 12.719879;
                        x[6] := 13.875518;
                        x[7] := 16.046427;
                        x[8] := 17.218547;
                        x[9] := 21.07471;
    // выбираем объясняемый ряд
    SMG.Explained.Value := y;
    // выбираем объясняющий ряд
    SMG.Explanatories.Clear();
    SMG.Explanatories.Add().Value := x;
    // определяем период идентификации
    SMG.ModelPeriod.FirstPoint := 1;
    SMG.ModelPeriod.LastPoint := 5;
    // определяем период прогнозирования
    SMG.Forecast.LastPoint := 10;
    // выбираем порядки ARCH и GARCH
    SMG.ARCHOrder := 1;
    SMG.GARCHOrder := 1;
    // выбираем метод обработки пропусков
    SMG.MissingData.Method := MissingDataMethod.mdmLinTrend;
    // определяем параметры алгоритма Марковской цепи Монте Карло
    SMG.MCMCParameters.NumOfIterations := 200;
    SMG.MCMCParameters.IterationsToDiscard := 100;
    SMG.MCMCParameters.Period := 20;
    // используем начальные значения по умолчанию
    SMG.UseDefaultInitDistribution := True;
    // рассчитываем модель и выводим результаты
    res := SMG.Execute();
    System.Diagnostics.Debug.WriteLine(SMG.Errors);
    System.Diagnostics.Debug.WriteLine("Модель MS-GARCH");
    RCoef := SMG.RegressionCoefficients.Coefficients;
    System.Diagnostics.Debug.WriteLine("Коэффициенты");
    For i := 0 To RCoef.Estimate.Length - 1 Do
        System.Diagnostics.Debug.WriteLine("X: " + RCoef.Estimate.GetValue(i).ToString() + ", Дисперсия: " + RCoef.StandardError.GetValue(i).ToString());
    End For;
    ARCHCoef := SMG.ARCHCoefficients.Coefficients;
    For i := 0 To ARCHCoef.Estimate.Length - 1 Do
        System.Diagnostics.Debug.WriteLine("ARCH: " + ARCHCoef.Estimate.GetValue(i).ToString() + ", Дисперсия: " + ARCHCoef.StandardError.GetValue(i).ToString());
    End For;
    GARCHCoef := SMG.GARCHCoefficients.Coefficients;
    For i := 0 To GARCHCoef.Estimate.Length - 1 Do
        System.Diagnostics.Debug.WriteLine("GARCH: " + GARCHCoef.Estimate.GetValue(i).ToString() + ", Дисперсия: " + GARCHCoef.StandardError.GetValue(i).ToString());
    End For;
    System.Diagnostics.Debug.WriteLine("GARCH Const0: " + SMG.GARCHConst.Estimation.ToString() + ", Дисперсия: " + SMG.GARCHConst.Dispersion.ToString());
    System.Diagnostics.Debug.WriteLine("GARCH Const1: " + SMG.GARCHConst1.Estimation.ToString() + ", Дисперсия: " + SMG.GARCHConst1.Dispersion.ToString());
    System.Diagnostics.Debug.WriteLine("");
    System.Diagnostics.Debug.WriteLine("Модельный ряд");
    For i := 0 To SMG.Fitted.Length - 1 Do
        System.Diagnostics.Debug.WriteLine((i + 1).ToString() + " " + SMG.Fitted.GetValue(i).ToString());
    End For;
    System.Diagnostics.Debug.WriteLine("");
    System.Diagnostics.Debug.WriteLine("Ряд остатков");
    For i := 0 To SMG.Residuals.Length - 1 Do
        System.Diagnostics.Debug.WriteLine((i + 1).ToString() + " " + SMG.Residuals.GetValue(i).ToString());
    End For;
    System.Diagnostics.Debug.WriteLine("");
    System.Diagnostics.Debug.WriteLine("Ряд дисперсий остатков");
    For i := 0 To SMG.ResidualsDispersion.Length - 1 Do
        System.Diagnostics.Debug.WriteLine((i + 1).ToString() + " " + SMG.ResidualsDispersion.GetValue(i).ToString());
    End For;
    System.Diagnostics.Debug.WriteLine("");
    System.Diagnostics.Debug.WriteLine("Прогнозный ряд");
    For i := SMG.Fitted.Length To SMG.Forecast.Value.Length - 1 Do
        System.Diagnostics.Debug.WriteLine((i + 1).ToString() + " " + SMG.Forecast.Value.GetValue(i).ToString());
    End For;
    System.Diagnostics.Debug.WriteLine("");
    System.Diagnostics.Debug.WriteLine("Прогноз дисперсий остатков");
    For i := SMG.ResidualsDispersion.Length To SMG.Forecast.Value.Length - 1 Do
        System.Diagnostics.Debug.WriteLine((i + 1).ToString() + " " + SMG.ResidualsDispersionForecast.GetValue(i).ToString());
    End For;
End Sub;

См. также:

ISmMarkovSwitchingGARCH