AutoRegressionOrder: Array;
Свойство AutoRegressionOrder определяет массив значений порядков авторегрессии.
Свойство устарело, используйте ISmLinearRegress.ARMA.
Число элементов в массиве равно числу регрессоров, каждый элемент массива - это порядок авторегрессии для определенного регрессора.
Для выполнения примера добавьте ссылку на системную сборку «Stat».
Sub UserARMA;
Var
Method: SmLinearRegress;
Factors: ISlSeries;
status: Integer;
Serie, Factor: Array Of Double;
AutoRegression: Array Of Integer;
MovingAverage: ISlMovingAverage;
// Процедура вывода данных
Sub Print(Data: Array Of Double);
Var
i: Integer;
d: Double;
Begin
Debug.WriteLine("---Begin---");
For i := 0 To Data.Length - 1 Do
If Double.IsNan(Data[i]) Then
Debug.WriteLine(i.ToString + ", ---empty---");
Else
d := Data[i];
Debug.WriteLine(i.ToString + ", " + d.ToString);
End If;
End For;
Debug.WriteLine("---End---");
End Sub Print;
Begin
Method := New SmLinearRegress.Create;
// Задаем объясняемый ряд
Serie := New Double[20];
Serie[00] := 6209; Serie[01] := 6385;
Serie[02] := 6752; Serie[03] := 6837;
Serie[04] := 6495; Serie[05] := 6907;
Serie[06] := 7349; Serie[07] := 7213;
Serie[08] := 7061; Serie[09] := 7180;
Serie[10] := 7132; Serie[11] := 7137;
Serie[12] := 7473; Serie[13] := 7722;
Serie[14] := 8088; Serie[15] := 8516;
Serie[16] := 8941; Serie[17] := 9064;
Serie[18] := 9380; Serie[19] := 9746;
Method.Explained.Value := Serie;
// Задаем объясняющий ряд
Factor := New Double[30];
Factor[00] := 4110; Factor[01] := 4280; Factor[02] := 4459;
Factor[03] := 4545; Factor[04] := 4664; Factor[05] := 4861;
Factor[06] := 5195; Factor[07] := 5389; Factor[08] := 5463;
Factor[09] := 5610; Factor[10] := 5948; Factor[11] := 6218;
Factor[12] := 6521; Factor[13] := 6788; Factor[14] := 7222;
Factor[15] := 7486; Factor[16] := 7832; Factor[17] := 8153;
Factor[18] := 8468; Factor[19] := 9054; Factor[20] := 9907;
Factor[21] := 10333; Factor[22] := 10863; Factor[23] := 11693;
Factor[24] := 12242; Factor[25] := 12227; Factor[26] := 12910;
Factor[27] := 13049; Factor[28] := 13384; Factor[29] := 14036;
Factors := Method.Explanatories;
Factors.Add.Value := Factor;
// Задаем порядок авторегрессии
AutoRegression := New Integer[1];
AutoRegression[0] := 1;
Method.AutoRegressionOrder := AutoRegression;
// Задаем порядок скользящего среднего
MovingAverage := Method.MovingAverage;
MovingAverage.Order := 1;
// Задаем паарметры идентификации и прогнозирования
Method.ModelPeriod.LastPoint := 20;
Method.Forecast.LastPoint := 30;
// Выполняем расчёт и выводим результаты
status := Method.Execute;
If status <> 0 Then
Debug.WriteLine(Method.Errors);
Else
Debug.WriteLine("=== Модельный ряд ===");
Print(Method.Fitted);
End If;
End Sub UserARMA;
После выполнения примера в окно консоли будет выведен результат расчёта линейной регрессии (с учетом порядков авторегрессии и скользящего среднего):
Module execution started
=== Модельный ряд ===
---Begin---
0, ---empty---
1, 6308.8871936080559
2, 6471.7885351477735
3, 6733.3512163842852
4, 6820.8779462457242
5, 6652.5058681077217
6, 7010.7198497886648
7, 7350.3278950893746
8, 7282.1928089833591
9, 7223.527613091579
10, 7392.6799238485391
11, 7434.9598356610159
12, 7520.610258716616
13, 7811.2804878565239
14, 8090.9081748603894
15, 8400.2317429192444
16, 8772.0929030022307
17, 9135.2080017110657
18, 9300.7010037270848
19, 9665.1487412507631
---End---
Module execution finished
См. также: