Fitted: Array;
Свойство Fitted возвращает массив значений модельного ряда.
Для выполнения примера добавьте ссылку на системную сборку «Stat».
Sub UserCalc;
Var
Method: SmLinearRegress;
Factors: ISlSeries;
status: Integer;
Serie, Factor, Weights: Array Of Double;
Period: IStatPeriod;
AR, MA: Array Of Integer;
ARMA: ISlARMA;
Stat: Double;
// Процедура вывода данных
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] := 7486;
Serie[16] := 7832; 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;
Factors := Method.Explanatories;
Factors.Add.Value := Factor;
// Задаем ряд весов
Weights := New Double[20];
Weights[00] := 1; Weights[01] := 1.5;
Weights[02] := 0; Weights[03] := 1;
Weights[04] := 1; Weights[05] := 0;
Weights[06] := 1.5; Weights[07] := 0;
Weights[08] := 1; Weights[09] := 1;
Weights[10] := 1; Weights[11] := 1;
Weights[12] := 1; Weights[13] := 1;
Weights[14] := 1; Weights[15] := 1;
Weights[16] := 0; Weights[17] := 2;
Weights[18] := 1; Weights[19] := 1.5;
Method.UseWeights := True;
Method.Weights := Weights;
// Задаем параметры авторегрессии и скользящего среднего
ARMA := Method.ARMA;
AR := New Integer[1];
AR[0] := 1;
ARMA.OrderAR := AR;
MA := New Integer[1];
MA[0] := 1;
ARMA.OrderMA := MA;
// Задаем параметры периода идентификации
Period := Method.ModelPeriod;
Period.FirstPoint := 4;
Period.LastPoint := 20;
// Задаем параметры прогнозирования
Method.Forecast.LastPoint := 30;
//Выполняем расчёт и выводим результаты
status := Method.Execute;
If status <> 0 Then
Debug.WriteLine(Method.Errors);
Else
Debug.WriteLine("=== Модельный ряд ===");
Print(Method.Fitted);
Debug.WriteLine("=== Прогноз ===");
Print(Method.Forecast.Value);
Debug.WriteLine("=== Ряд остатков ===");
Print(Method.Residuals);
Debug.WriteLine("=== Статистика Фишера ===");
Stat := Method.SummaryStatistics.Fstat;
Debug.WriteLine(Stat);
Debug.WriteLine("=== Вероятность для статистики Фишера === ");
Stat := Method.SummaryStatistics.ProbFstat;
Debug.WriteLine(Stat);
End If;
End Sub UserCalc;
После выполнения примера в окно консоли будут выведены результаты расчёта линейной регрессии. Для наглядности представим результат следующим образом:
| Номер наблюдения | Модельный ряд | Прогноз | Ряд остатков |
| 0 | ---empty--- | ---empty--- | ---empty--- |
| 1 | ---empty--- | ---empty--- | ---empty--- |
| 2 | ---empty--- | ---empty--- | ---empty--- |
| 3 | ---empty--- | ---empty--- | ---empty--- |
| 4 | 6429.6915948410851 | ---empty--- | 65.308405158914866 |
| 5 | 6703.0949013456293 | ---empty--- | 203.9050986543707 |
| 6 | 7211.0681100958363 | ---empty--- | 137.93188990416365 |
| 7 | 7187.9276423749134 | ---empty--- | 25.072357625086624 |
| 8 | 6994.7551347761646 | ---empty--- | 66.244865223835404 |
| 9 | 7180.5942477742838 | ---empty--- | -0.59424777428375819 |
| 10 | 7250.4334133282046 | ---empty--- | -118.43341332820455 |
| 11 | 7171.1997221019847 | ---empty--- | -34.199722101984662 |
| 12 | 7548.9902106996788 | ---empty--- | -75.990210699678755 |
| 13 | 7626.0271881558137 | ---empty--- | 95.972811844186253 |
| 14 | 8273.1770326478163 | ---empty--- | -185.1770326478163 |
| 15 | 7830.8430577016579 | ---empty--- | -344.84305770165793 |
| 16 | 7717.4852877517997 | ---empty--- | 114.51471224820034 |
| 17 | 8914.3474482922884 | ---empty--- | 149.65255170771161 |
| 18 | 9174.3465585875074 | ---empty--- | 205.65344141249261 |
| 19 | 9666.4836601554762 | ---empty--- | 79.516339844523827 |
| 20 | 9935.9948379053621 | ||
| 21 | 10040.402111169851 | ||
| 22 | 10380.169273667962 | ||
| 23 | 10908.042335643899 | ||
| 24 | 3470.792275772234 | ||
| 25 | 3470.7922648635918 | ||
| 26 | 3470.7922650381056 | ||
| 27 | 3470.7922650353134 | ||
| 28 | 3470.7922650353585 | ||
| 29 | 3470.7922650353576 |
Статистика Фишера: 148,864330836006
Вероятность для статистики Фишера: 9,30790555742078E-10
См. также: