ISmSingularSpectrumAnalysis.Fitted

Синтаксис Fore

Fitted: Array;

Синтаксис Fore.NET

Fitted: System.Array;

Описание

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

Комментарии

Для получения ряда остатков используйте свойство ISmSingularSpectrumAnalysis.Residuals.

Пример Fore

Для выполнения примера добавьте ссылку на системную сборку «Stat».

Sub UserSSA;
Var
    ssa: ISmSingularSpectrumAnalysis;
    d0, d1, d2: Double;
    i, res: Integer;
    can: Array[18Of double;
    incl: Array[2Of Integer;
Begin
    ssa := New SmSingularSpectrumAnalysis.Create;
    // Задаем метод обработки пропусков
    ssa.MissingData.Method := MissingDataMethod.AnyValue;
    // Задаем значения входного ряда
    can[00] := Double.Nan; can[06] := 7349; can[12] := 7473;
    can[01] := 6385; can[07] := 7213; can[13] := 7722;
    can[02] := 6752; can[08] := 7061; can[14] := 8088;
    can[03] := 6837; can[09] := 7180; can[15] := 8516;
    can[04] := 6495; can[10] := 7132; can[16] := 8941;
    can[05] := 6907; can[11] := 7137; can[17] := Double.Nan;
    // Задаем входной ряд
    ssa.Serie.Value := can;
    // Задаем ширину окна
    ssa.Width := 4;
    // Задаем количество главных компонент
    ssa.PCCount := 3;
    // Задаем используемые главные компоненты
    incl[0] := 0;
    incl[1] := 2;
    ssa.IncludedComponents := incl;
    // Задаем тип центрирования матрицы
    ssa.MatrixAlignmentType := AlignmentType.SingleAlignment;
    // Задаем период идентификации
    ssa.ModelPeriod.FirstPoint := 3;
    ssa.ModelPeriod.LastPoint := 15;
    // Выполняем расчёт и выводим результаты в окно консоли
    res := ssa.Execute;
    If res <> 0 Then
        Debug.WriteLine(ssa.Errors);
    Else
        Debug.WriteLine("Статистики:");
        For i := 1 To ssa.PCCount + 1 Do
            Debug.WriteLine("Главная компонента №" + i.ToString);
            d0 := ssa.Statistics[i - 10];
            Debug.WriteLine("  - собственное значение: " + d0.ToString);
            d0 := ssa.Statistics[i - 11];
            Debug.WriteLine("  - дисперсия:" + d0.ToString);
            d0 := ssa.Statistics[i - 12];
            Debug.WriteLine("  - накопленная дисперсия: " + d0.ToString);
            d0 := ssa.Statistics[i - 13];
            Debug.WriteLine("  - статистика хи-квадрат: " + d0.ToString);
            d0 := ssa.Statistics[i - 14];
            Debug.WriteLine("  - число степеней свободы для статистики хи-квадрат: " + d0.ToString);
            d0 := ssa.Statistics[i - 15];
            Debug.WriteLine("  - вероятность для статистики хи-квадрат: " + d0.ToString);
        End For;
        Debug.WriteLine("Собственные векторы: ");
        For i := 1 To ssa.PCCount Do
            d0 := ssa.P[0, i - 1];
            d1 := ssa.P[1, i - 1];
            d2 := ssa.P[2, i - 1];
            Debug.WriteLine("Главная компонента №" +
                i.ToString + ": " + d0.ToString +
                " " + d1.ToString + " " + d2.ToString);
        End For;
        Debug.WriteLine("================================");
        Debug.WriteLine("Значения главных компонент: ");
        Debug.WriteLine("Главная компонента №1, №2, №3");
        For i := 1 To ssa.v.GetUpperBound(1) + 1 Do
            d0 := ssa.V[i - 11];
            d1 := ssa.V[i - 12];
            d2 := ssa.V[i - 13];
            Debug.WriteLine("Наблюдение №" +
                i.ToString + ": " + d0.ToString +
                " " + d1.ToString + " " + d2.ToString);
        End For;
        d0 := ssa.V[00];
        Debug.WriteLine("================================");
        Debug.WriteLine("Общегрупповое среднее: " + d0.ToString);
        Debug.WriteLine("================================");
        Debug.WriteLine("Восстановленный ряд");
        For i := 0 To ssa.Fitted.Length - 1 Do
            Debug.WriteLine(ssa.Fitted[i]);
        End For;
        Debug.WriteLine("================================");
        Debug.WriteLine("Ряд остатков");
        For i := 0 To ssa.Residuals.Length - 1 Do
            Debug.WriteLine(ssa.Residuals[i]);
        End For;
    End If;
End Sub UserSSA;

Результат выполнения примера: настроен и выполнен сингулярный спектральный анализ, результаты выполнения выведены в окно консоли.

Пример Fore.NET

Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.

Public Shared Sub UserSSA();
Var
    ssa: SmSingularSpectrumAnalysis;
    d0, d1, d2: Double;
    i, res: Integer;
    can: Array[18Of double;
    incl: Array[2Of Integer;
Begin
    ssa := New SmSingularSpectrumAnalysis.Create();
    // Задаем метод обработки пропусков
    ssa.MissingData.Method := MissingDataMethod.mdmAnyValue;
    // Задаем значения входного ряда
    can[00] := Double.Nan; can[06] := 7349; can[12] := 7473;
    can[01] := 6385; can[07] := 7213; can[13] := 7722;
    can[02] := 6752; can[08] := 7061; can[14] := 8088;
    can[03] := 6837; can[09] := 7180; can[15] := 8516;
    can[04] := 6495; can[10] := 7132; can[16] := 8941;
    can[05] := 6907; can[11] := 7137; can[17] := Double.Nan;
    // Задаем входной ряд
    ssa.Serie.Value := can;
    // Задаем ширину окна
    ssa.Width := 4;
    // Задаем количество главных компонент
    ssa.PCCount := 3;
    // Задаем используемые главные компоненты
    incl[0] := 0;
    incl[1] := 2;
    ssa.IncludedComponents := incl;
    // Задаем тип центрирования матрицы
    ssa.MatrixAlignmentType := AlignmentType.atSingleAlignment;
    // Задаем период идентификации
    ssa.ModelPeriod.FirstPoint := 3;
    ssa.ModelPeriod.LastPoint := 15;
    // Выполняем расчёт и выводим результаты в окно консоли
    res := ssa.Execute();
    If res <> 0 Then
        System.Diagnostics.Debug.WriteLine(ssa.Errors);
    Else
        System.Diagnostics.Debug.WriteLine("Статистики:");
        For i := 1 To ssa.PCCount + 1 Do
            System.Diagnostics.Debug.WriteLine("Главная компонента №" + i.ToString());
            d0 := ssa.Statistics.GetValue(0, i - 1As double;
            System.Diagnostics.Debug.WriteLine("  - собственное значение: " + d0.ToString());
            d0 := ssa.Statistics.GetValue(1, i - 1As double;
            System.Diagnostics.Debug.WriteLine("  - дисперсия:" + d0.ToString());
            d0 := ssa.Statistics.GetValue(2, i - 1As double;
            System.Diagnostics.Debug.WriteLine("  - накопленная дисперсия: " + d0.ToString());
            d0 := ssa.Statistics.GetValue(3, i - 1As double;
            System.Diagnostics.Debug.WriteLine("  - статистика хи-квадрат: " + d0.ToString());
            d0 := ssa.Statistics.GetValue(4, i - 1As double;
            System.Diagnostics.Debug.WriteLine("  - число степеней свободы для статистики хи-квадрат: " + d0.ToString());
            d0 := ssa.Statistics.GetValue(5, i - 1As double;
            System.Diagnostics.Debug.WriteLine("  - вероятность для статистики хи-квадрат: " + d0.ToString());
        End For;
        System.Diagnostics.Debug.WriteLine("Собственные векторы: ");
        For i := 1 To ssa.PCCount Do
            d0 := ssa.P.GetValue(i - 10As double;
            d1 := ssa.P.GetValue(i - 11As double;
            d2 := ssa.P.GetValue(i - 12As double;
            System.Diagnostics.Debug.WriteLine("Главная компонента №" +
                i.ToString() + ": " + d0.ToString() +
                " " + d1.ToString() + " " + d2.ToString());
        End For;
        System.Diagnostics.Debug.WriteLine("================================");
        System.Diagnostics.Debug.WriteLine("Значения главных компонент: ");
        System.Diagnostics.Debug.WriteLine("Главная компонента №1, №2, №3");
        For i := 1 To ssa.v.GetUpperBound(1) + 1 Do
            d0 := ssa.V.GetValue(1, i - 1As double;
            d1 := ssa.V.GetValue(2, i - 1As double;
            d2 := ssa.V.GetValue(3, i - 1As double;
            System.Diagnostics.Debug.WriteLine("Наблюдение №" +
                i.ToString() + ": " + d0.ToString() +
                " " + d1.ToString() + " " + d2.ToString());
        End For;
        d0 := ssa.V.GetValue(00As double;
        System.Diagnostics.Debug.WriteLine("================================");
        System.Diagnostics.Debug.WriteLine("Общегрупповое среднее: " + d0.ToString());
        System.Diagnostics.Debug.WriteLine("================================");
        System.Diagnostics.Debug.WriteLine("Восстановленный ряд");
        For i := 0 To ssa.Fitted.Length - 1 Do
            System.Diagnostics.Debug.WriteLine(ssa.Fitted.GetValue(i) As double);
        End For;
        System.Diagnostics.Debug.WriteLine("================================");
        System.Diagnostics.Debug.WriteLine("Ряд остатков");
        For i := 0 To ssa.Residuals.Length - 1 Do
            System.Diagnostics.Debug.WriteLine(ssa.Residuals.GetValue(i) As double);
        End For;
    End If;
End Sub UserSSA;

См. также:

ISmSingularSpectrumAnalysis