RatioDifferences: Array;
Свойство RatioDifferences возвращает отношение/разность. Свойство возвращает разности для аддитивной модели, а отношения для мультипликативной.
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("=== Разности ===");
Print(census1.RatioDifferences);
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---
=== Разности ===
---Begin---
---empty---
---empty---
---empty---
---empty---
---empty---
---empty---
6, 120.5561
7, 128.4657
8, 124.0473
9, 93.9082
10, 79.3561
11, 79.0172
12, 81.4291
13, 76.6643
14, 89.7650
15, 93.4456
16, 103.6853
17, 116.7409
18, 126.7933
19, 121.1679
20, 113.5183
21, 97.8437
22, 86.7540
23, 79.7906
24, 86.5199
25, 79.4496
26, 96.7108
27, 105.9215
28, 114.4951
29, 112.7723
30, 121.9374
31, 112.1142
32, 112.0573
33, 100.6015
34, 86.0886
35, 82.4073
36, 83.0901
37, 80.3495
38, 86.0738
---empty---
---empty---
---empty---
---empty---
---empty---
---empty---
---End---
Module execution finished
См. также: