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
См. также: