Расчет метода с указанием порядков сезонной авторегрессии и скользящего среднего

В примере используется метод оценки коэффициентов модели, описание которого приведено в разделе «Библиотека методов и моделей». Для данного метода будут заданы порядки сезонной авторегрессии и скользящего среднего. Подобные настройки использует модель ARIMA в контейнере моделирования.

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

Sub UserProc;
Var
    lr: ISmLinearRegress;
    Y, X: array[43Of double;
    ARMA: ISlARMA;
    Inits: Array[2Of Double;
    res: Integer;
    CoefficientsAR, CoefficientsMA, CoefficientsX: ICoefficients;
    ModelCoefficients: IModelCoefficients;
    
    Sub Print(Arr: array Of Double);
    Var
        i: Integer;
    Begin
        For i := 0 To Arr.Length - 1 Do
            Debug.WriteLine("    " + Arr[i].ToString);
        End For;
    End Sub Print;
Begin
    lr := New SmLinearRegress.Create;
// значения объясняемого ряда
    Y[00] := 6209; Y[15] := 8516; Y[30] := 14242;
    Y[01] := 6385; Y[16] := 8941; Y[31] := 14704;
    Y[02] := 6752; Y[17] := 9064; Y[32] := 13802;
    Y[03] := 6837; Y[18] := 9380; Y[33] := 14197;
    Y[04] := 6495; Y[19] := 9746; Y[34] := 15010;
    Y[05] := 6907; Y[20] := 9907; Y[35] := 15589;
    Y[06] := 7349; Y[21] := 10333; Y[36] := 15932;
    Y[07] := 7213; Y[22] := 10863; Y[37] := 16631;
    Y[08] := 7061; Y[23] := 11693; Y[38] := 17394;
    Y[09] := 7180; Y[24] := 12242; Y[39] := 17758;
    Y[10] := 7132; Y[25] := 12227; Y[40] := 17308;
    Y[11] := 7137; Y[26] := 12910; Y[41] := 16444;
    Y[12] := 7473; Y[27] := 13049; Y[42] := 16413;
    Y[13] := 7722; Y[28] := 13384;
    Y[14] := 8088; Y[29] := 14036;
// значения объясняющего ряда   
    X[00] := 4110; X[15] := 7486; X[30] := 11781;
    X[01] := 4280; X[16] := 7832; X[31] := 11681;
    X[02] := 4459; X[17] := 8153; X[32] := 11903;
    X[03] := 4545; X[18] := 8468; X[33] := 11900;
    X[04] := 4664; X[19] := 9054; X[34] := 11986;
    X[05] := 4861; X[20] := 9499; X[35] := 12206;
    X[06] := 5195; X[21] := 9866; X[36] := 12734;
    X[07] := 5389; X[22] := 10217; X[37] := 12990;
    X[08] := 5463; X[23] := 10763; X[38] := 13516;
    X[09] := 5610; X[24] := 10683; X[39] := 13866;
    X[10] := 5948; X[25] := 10494; X[40] := 14141;
    X[11] := 6218; X[26] := 10938; X[41] := 14141;
    X[12] := 6521; X[27] := 11198; X[42] := 14237;
    X[13] := 6788; X[28] := 11546;
    X[14] := 7222; X[29] := 11865;
// период идентификации
    lr.ModelPeriod.FirstPoint := 1;
    lr.ModelPeriod.LastPoint := 20;
    lr.Forecast.LastPoint := 40;
    lr.MissingData.Method := MissingDataMethod.Casewise;
    lr.Explained.Value := Y;

// в модели будет использоваться экзогенная переменная
    lr.Explanatories.Clear;
    lr.Explanatories.Add.Value := X;
    ModelCoefficients := lr.ModelCoefficients;
// в модели будет использоваться константа
    ModelCoefficients.Intercept.Mode := InterceptMode.AutoEstimate;
    ARMA := lr.ARMA;
// порядок сезонной авторегрессии
    ARMA.ParseARSeas("3");
// порядок сезонного скользящего среднего
    ARMA.ParseMASeas("1");
// метод определения начальных приближений
    ARMA.CalcInitMode := ARMAInitType.Auto;
// начальные приближения сезонной/несезонной авторегрессии и
// сезонного/несезонного скользящего среднего
    Inits[0] := 0.0025;
    Inits[1] := 0.0025;
    ARMA.InitAR := Inits;
    ARMA.InitMA := Inits;
    ARMA.InitARSeas := Inits;
    ARMA.InitMASeas := Inits;
// сезонная/несезонная разность
    ARMA.DiffSeas := 0;
    ARMA.Diff := 2;
// период сезонности    
    ARMA.PeriodSeas := 4;
// метод оптимизации
    ARMA.EstimationMethod := ARMAEstimationMethodType.GaussNewton;
//число итераций для метода оптимизации
    ARMA.MaxIteration := 50;
// расчет модели
    res := lr.Execute;
    Debug.WriteLine(lr.Errors);
    If (res = 0Then
    // коэффициенты авторегрессии
        Debug.WriteLine("----Оценки коэффициентов сезонной авторегрессии----");
        CoefficientsAR := ARMA.CoefficientsARSeas;
        Debug.WriteLine(" Значение:");
        Print(CoefficientsAR.Estimate);
        Debug.WriteLine(" Стандартная ошибка:");
        Print(CoefficientsAR.StandardError);
        Debug.WriteLine(" t-статистика:");
        Print(CoefficientsAR.TStatistic);
        Debug.WriteLine(" Вероятность:");
        Print(CoefficientsAR.Probability);
    // коэффициенты скользящего среднего
        Debug.WriteLine("----Оценки коэффициентов сезонного скользящего среднего----");
        CoefficientsMA := ARMA.CoefficientsMASeas;
        Debug.WriteLine(" Значение:");
        Print(CoefficientsMA.Estimate);
        Debug.WriteLine(" Стандартная ошибка:");
        Print(CoefficientsMA.StandardError);
        Debug.WriteLine(" t-статистика:");
        Print(CoefficientsMA.TStatistic);
        Debug.WriteLine(" Вероятность:");
        Print(CoefficientsMA.Probability);
    // коэффициенты экзогенной переменной
        Debug.WriteLine("----Оценки коэффициентов X----");
        CoefficientsX := ModelCoefficients.Coefficients;
        Debug.WriteLine(" Значение:");
        Print(CoefficientsX.Estimate);
        Debug.WriteLine(" Стандартная ошибка:");
        Print(CoefficientsX.StandardError);
        Debug.WriteLine(" t-статистика:");
        Print(CoefficientsX.TStatistic);
        Debug.WriteLine(" Вероятность:");
        Print(CoefficientsX.Probability);
    // значения объясняемого ряда   
        Debug.WriteLine("----Объясняемый ряд----");
        Print(lr.Explained.Value);
    // значения модельного ряда 
        Debug.WriteLine("----Модельный ряд----");
        Print(lr.Fitted);
    // значения прогнозного ряда            
        Debug.WriteLine("----Прогнозный ряд----");
        Print(lr.Forecast.Value);
    End If;
End Sub UserProc;

После выполнения примера будет создана модель линейной регрессии, определены ее параметры:

В окно консоли будут выведены значения коэффициентов сезонной авторегрессии, сезонного скользящего среднего, объясняющей переменной и значения объясняемого, модельного, прогнозного рядов:
Нет ошибок
----Оценки коэффициентов сезонной авторегрессии----
 Значение:
    0.43490707409749907
 Стандартная ошибка:
    0.2734980430624076
 t-статистика:
    1.5901652137169431
 Вероятность:
    0.14010396559499899
----Оценки коэффициентов сезонного скользящего среднего----
 Значение:
    0.18484173929552522
 Стандартная ошибка:
    0.34372507506364647
 t-статистика:
    0.53776041582447442
 Вероятность:
    0.60145259222766068
----Оценки коэффициентов X----
 Значение:
    -0.085392355517884433
 Стандартная ошибка:
    0.11621187624989106
 t-статистика:
    -0.73479887145324774
 Вероятность:
    0.47783497431661037
----Объясняемый ряд----
    6209
    6385
    6752
    6837
    6495
    6907
    7349
    7213
    7061
    7180
    7132
    7137
    7473
    7722
    8088
    8516
    8941
    9064
    9380
    9746
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
----Модельный ряд----
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    6387.2302929023381
    6378.7277682049989
    6285.405571028482
    6543.5292131985507
    6861.3182832802295
    7059.6741634377986
    7314.8511042611171
    7739.3388404068264
    8162.9940757614158
    8608.6490097510541
    9219.4043335455754
    9757.2216352950072
    10331.513511943327
    10825.774150882695
    11287.576127818098
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
----Прогнозный ряд----
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    11657.541261930295
    11865.3597446065
    11923.511224107375
    11776.073777507245
    11412.930110495705
    10868.682212136939
    10101.372242464256
    9081.4270870175988
    7787.15982313526
    6189.5716843245982
    4292.6298840343716
    2108.3657950774118
    -382.94251526214703
    -3182.4330708414723
    -6295.9308590365545
    -9742.5548279478699
    -13567.998489133301
    -17793.461768225756
    -22464.005707318353
    -27609.781335809264

См. также:

ISlARMA