ISmLinearRegress.Fitted

Синтаксис

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

См. также:

ISmLinearRegress