ISlEquation.AutoRegressionOrder

Синтаксис

AutoRegressionOrder: Array;

Описание

Свойство AutoRegressionOrder определяет порядки авторегрессии.

Комментарии

Для векторной авторегрессии значение данного свойства будет проигнорировано, если одновременно заданы свойства ISmVectorAutoRegress.ImpulseAROrder и ISmVectorAutoRegress.ImpulsePeriod, то модель будет рассчитываться с авторегрессией порядка 1, 2, 3, … ImpulseAROrder. Также будет рассчитана матрица значений функции импульсивного отклика ISlEquation.ImpulseMatrix.

Пример

Sub Main;

Var

ar1, ar2: Array[0..15] Of Double;

j,status: Integer;

var1: ISmVectorAutoRegress;

Eqs: ISlEquations;

Eq: ISlEquation;

ARO: Array[0..0] Of Integer;

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

//Эндогенная1

ar1[0] := 3;

ar1[1] := 8;

ar1[2] := 12;

ar1[3] := 10;

ar1[4] := 26;

ar1[5] := 21;

ar1[6] := 35;

ar1[7] := 29;

ar1[8] := 40;

ar1[9] := 39;

ar1[10] := 51;

ar1[11] := 50;

ar1[12] := 59;

ar1[13] := 58;

ar1[14] := 65;

ar1[15] := 72;

//Эндогенная2

ar2[0] := 5;

ar2[1] := 3;

ar2[2] := 9;

ar2[3] := 13;

ar2[4] := 25;

ar2[5] := 21;

ar2[6] := 30;

ar2[7] := 33;

ar2[8] := 43;

ar2[9] := 37;

ar2[10] := 49;

ar2[11] := 47;

ar2[12] := 60;

ar2[13] := 59;

ar2[14] := 69;

ar2[15] := 68;

ARO[0] := 1;

var1 := New SmVectorAutoRegress.Create;

Eqs := var1.Equations;

Eq := Eqs.Add;

Eq.Serie.Value := ar1;

Eq.AutoRegressionOrder := ARO;

Eq.Forecast.LastPoint := 16;

Eq.Intercept.Mode := InterceptMode.AutoEstimate;

Eq := Eqs.Add;

Eq.Serie.Value := ar2;

Eq.AutoRegressionOrder := ARO;

Eq.Forecast.LastPoint := 16;

Eq.Intercept.Mode := InterceptMode.AutoEstimate;

var1.ModelPeriod.FirstPoint := 1;

var1.ModelPeriod.LastPoint := 16;

status := var1.Execute;

If status <> 0 Then

Debug.Writeline(var1.Errors);

Else

For j := 0 To Eqs.Count-1 Do

Debug.WriteLine("=== Модельный ряд для уравнения " + j.ToString + " ===");

Print(Eqs.Item(j).Fitted);

Debug.WriteLine("=== End ===");

End For;

End If;

End Sub Main;

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

Module execution started

=== Модельный ряд для уравнения 0 ===

---Begin---

0, 3

1, 11.780866278560829

2, 9.6620878425255832

3, 15.334229806209933

4, 19.283705270102999

5, 30.339907789294269

6, 26.642503557556452

7, 34.862635094905549

8, 37.986787484925152

9, 47.284313328302964

10, 41.504140836552075

11, 52.704384059832066

12, 50.801666679929887

13, 63.079304209238586

14, 62.145950607298587

15, 71.587517154765109

---End---

=== End ===

=== Модельный ряд для уравнения 1 ===

---Begin---

0, 5

1, 9.477262385252077

2, 9.2531005180612524

3, 14.590209286325603

4, 17.002584880366989

5, 29.64085427655543

6, 25.509933305311773

7, 35.479648317368031

8, 36.18415084184047

9, 46.143193546263412

10, 41.54260422537147

11, 53.19884769173003

12, 51.501646929794411

13, 63.147218088519658

14, 62.175864466323112

15, 71.152881240916187

---End---

=== End ===

Module execution finished

См. также:

ISlEquation