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;
    Arr, Est, StErr: System.Array;
    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.Write("***Коэффициенты***");
    Est := RCoef.Estimate;
    StErr := RCoef.StandardError;
    For i := 0 To Est.Length - 1 Do
        System.Diagnostics.Debug.WriteLine("X: " + Est[i].ToString() + ", Дисперсия: " + StErr[i].ToString());
    End For;
    ARCHCoef := SMG.ARCHCoefficients.Coefficients;
    Est := ARCHCoef.Estimate;
    StErr := ARCHCoef.StandardError;
    For i := 0 To Est.Length - 1 Do
        System.Diagnostics.Debug.WriteLine("ARCH: " + Est[i].ToString() + ", Дисперсия: " + StErr[i].ToString());
    End For;
    GARCHCoef := SMG.GARCHCoefficients.Coefficients;
    Est := GARCHCoef.Estimate;
    StErr := GARCHCoef.StandardError;
    For i := 0 To Est.Length - 1 Do
        System.Diagnostics.Debug.WriteLine("GARCH: " + Est[i].ToString() + ", Дисперсия: " + StErr[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("***Сглаженный ряд***");
    Arr := SMG.Fitted;
    For i := 0 To SMG.Fitted.Length - 1 Do
        System.Diagnostics.Debug.WriteLine((i + 1).ToString() + " " + Arr[i].ToString());
    End For;
    System.Diagnostics.Debug.WriteLine("");
    System.Diagnostics.Debug.WriteLine("***Ряд остатков***");
    Arr := SMG.Residuals;
    For i := 0 To SMG.Residuals.Length - 1 Do
        System.Diagnostics.Debug.WriteLine((i + 1).ToString() + " " + Arr[i].ToString());
    End For;
    System.Diagnostics.Debug.WriteLine("");
    System.Diagnostics.Debug.WriteLine("***Ряд дисперсий остатков***");
    Arr := SMG.ResidualsDispersion;
    For i := 0 To SMG.ResidualsDispersion.Length - 1 Do
        System.Diagnostics.Debug.WriteLine((i + 1).ToString() + " " + Arr[i].ToString());
    End For;
    System.Diagnostics.Debug.WriteLine("");
    System.Diagnostics.Debug.WriteLine("***Прогнозный ряд***");
    Arr := SMG.Forecast.Value;
    For i := SMG.Fitted.Length To SMG.Forecast.Value.Length - 1 Do
        System.Diagnostics.Debug.WriteLine((i + 1).ToString() + " " + Arr[i].ToString());
    End For;
    System.Diagnostics.Debug.WriteLine("");
    System.Diagnostics.Debug.WriteLine("***Прогноз дисперсий остатков***");
    Arr := SMG.ResidualsDispersionForecast;
    For i := SMG.ResidualsDispersion.Length To SMG.Forecast.Value.Length - 1 Do
        System.Diagnostics.Debug.WriteLine((i + 1).ToString() + " " + Arr[i].ToString());
    End For;
End Sub;

См. также:

ISmMarkovSwitchingGARCH