ISmCensus1.MovingAverage

Синтаксис

MovingAverage: Array;

Описание

Свойство MovingAverage возвращает сглаженный ряд.

Пример

Sub Main;

Var

s: Array Of Double;

census1: SmCensus1;

res: Integer;

Sub Print(Data: Array Of Double);

Var

i: Integer;

CI: ICultureInfo;

Begin

CI := CultureInfo.Current;

Debug.WriteLine("---Begin---");

For i := 0 To Data.Length - 1 Do

If Double.IsNan(Data[i]) Then

Debug.WriteLine("---empty---");

Else

Debug.WriteLine(i.ToString + ", " + CI.FormatDoublePrec(Data[i], 4));

End If;

End For;

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

End Sub Print;

Begin

//значения s

s := New Double[45];

s[0] := 670.2000183;

s[1] := 576.0680563;

s[2] := 717.6484268;

s[3] := 856.9105808;

s[4] := 885.4609516;

s[5] := 1011.846431;

s[6] := 995.4496292;

s[7] := 1064.74221;

s[8] := 1033.324656;

s[9] := 780.8584552;

s[10] := 657.5033113;

s[11] := 654.5472579;

s[12] := 678.2380139;

s[13] := 642.4128544;

s[14] := 751.9611194;

s[15] := 786.7090365;

s[16] := 884.5042879;

s[17] := 1008.308908;

s[18] := 1108.363628;

s[19] := 1072.737175;

s[20] := 1019.183752;

s[21] := 895.5601672;

s[22] := 811.0306101;

s[23] := 756.601764;

s[24] := 826.6160466;

s[25] := 762.3903317;

s[26] := 931.5707266;

s[27] := 1026.666524;

s[28] := 1114.124119;

s[29] := 1099.626392;

s[30] := 1189.16892;

s[31] := 1092.343791;

s[32] := 1087.503861;

s[33] := 971.6522721;

s[34] := 826.2502823;

s[35] := 789.6322825;

s[36] := 797.0210578;

s[37] := 770.0206;

s[38] := 832.1481674;

s[39] := 1014.565844;

s[40] := 980.4343089;

s[41] := 1195.843135;

s[42] := 1117.405835;

s[43] := 1142.834834;

s[44] := 1239.704489;

census1 := New SmCensus1.Create;

census1.Serie.Value := s;

census1.ModelPeriod.FirstPoint := 1;

census1.ModelPeriod.LastPoint := 45;

census1.SeasonalComponent.Mode := SeasonalityType.Multiplicative;

census1.CenterMovingAverage := True;

census1.SeasonalComponent.Cycle := 12;

res := census1.Execute;

If res<>0 Then

Debug.WriteLine(census1.Errors);

Else

Debug.WriteLine("=== Сглаженный ряд ===");

Print(census1.MovingAverage);

Debug.WriteLine("=== Cезонная составляющая ===");

Print(census1.Seasonal);

End If;

End Sub Main;

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

Module execution started

=== Сглаженный ряд ===

---Begin---

---empty---

---empty---

---empty---

---empty---

---empty---

---empty---

6, 825.7149

7, 828.8142

8, 833.0083

9, 831.5129

10, 828.5480

11, 828.3607

12, 832.9181

13, 837.9559

14, 837.6999

15, 841.8899

16, 853.0661

17, 863.7153

18, 874.1500

19, 885.3315

20, 897.8143

21, 915.2963

22, 934.8620

23, 948.2344

24, 955.4062

25, 959.5900

26, 963.2536

27, 969.2708

28, 973.0754

29, 975.0859

30, 975.2290

31, 974.3138

32, 970.4891

33, 965.8423

34, 959.7677

35, 958.2063

36, 959.2252

37, 958.3389

38, 966.7844

---empty---

---empty---

---empty---

---empty---

---empty---

---empty---

---End---

=== Cезонная составляющая ===

---Begin---

0, 83.3553

1, 79.7032

2, 90.0515

3, 100.0018

4, 109.4385

5, 115.1229

6, 122.3267

7, 121.5546

8, 113.8807

9, 98.1561

10, 86.3634

11, 80.0453

12, 83.3553

13, 79.7032

14, 90.0515

15, 100.0018

16, 109.4385

17, 115.1229

18, 122.3267

19, 121.5546

20, 113.8807

21, 98.1561

22, 86.3634

23, 80.0453

24, 83.3553

25, 79.7032

26, 90.0515

27, 100.0018

28, 109.4385

29, 115.1229

30, 122.3267

31, 121.5546

32, 113.8807

33, 98.1561

34, 86.3634

35, 80.0453

36, 83.3553

37, 79.7032

38, 90.0515

39, 100.0018

40, 109.4385

41, 115.1229

42, 122.3267

43, 121.5546

44, 113.8807

---End---

Module execution finished

См. также:

ISmCensus1