IForecast.Value

Синтаксис

Value: Array;

Value: System.Array;

Описание

Свойство Value возвращает массив значений прогнозного ряда.

Комментарии

Длина данного массива зависит от заданной последней точки прогноза, определяемой свойством IForecast.LastPoint. На периоде идентификации данный массив содержит пустые значения равные Double.NAN или 1#.QNAN, после которых в массиве расположены прогнозные значения.

Пример

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

Sub UserProc;
Var
    Method: SmLinearRegress;
    Factors: ISlSeries;
    Forecast: IForecast;
    Serie: Array[6Of Double;
    Factor: Array[10Of Double;
    Period: IStatPeriod;
    d0: Double;
    FirstPoint, LastPoint, status, i: Integer;
Begin
    Method := New SmLinearRegress.Create;
    // Задаем объясняемый ряд
    Serie[00] := 6209; Serie[01] := 6385;
    Serie[02] := 6752; Serie[03] := 6837;
    Serie[04] := 6495; Serie[05] := Double.Nan;
    Method.Explained.Value := Serie;
    // Задаем объясняющий ряд
    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;
    Factors := Method.Explanatories;
    Factors.Add.Value := Factor;
    // Получаем параметры прогнозного ряда
    Forecast := Method.Forecast;
    // Задаем параметры авторегрессии
    Forecast.ConfidenceLevel := 0.95;
    Forecast.CoefUncertaintyInSECalc := False;
    // Задаем период идентификации
    Period := Method.ModelPeriod;
    Period.FirstPoint := 1;
    Period.LastPoint := 6;
    // Задаем начальную и конечную точку прогноза
    Forecast.FirstPoint := 8;
    Forecast.LastPoint := 10;
    //Выполняем расчёт и выводим результаты
    status := Method.Execute;
    FirstPoint := Method.ModelPeriod.FirstPoint;
    LastPoint := Forecast.LastPoint;
    Debug.WriteLine("=== Прогнозный ряд ===");
    For i := FirstPoint To LastPoint - 1 Do
        d0 := Forecast.Value[i];
        Debug.WriteLine(i.ToString + " " + d0.ToString);
    End For;
    Debug.WriteLine("=== Верхняя доверительная граница ===");
    For i := FirstPoint To LastPoint - 1 Do
        d0 := Forecast.UpperConfidenceLevel[i];
        Debug.WriteLine(i.ToString + " " + d0.ToString);
    End For;
    Debug.WriteLine("=== Нижняя доверительная граница ===");
    For i := FirstPoint To LastPoint - 1 Do
        d0 := Forecast.LowerConfidenceLevel[i];
        Debug.WriteLine(i.ToString + " " + d0.ToString);
    End For;
    Debug.WriteLine("=== Стандартные ошибки прогнозного ряда ===");
    For i := FirstPoint To LastPoint - 1 Do
        d0 := Forecast.StandardError[i];
        Debug.WriteLine(i.ToString + " " + d0.ToString);
    End For;
End Sub UserProc;

Imports Prognoz.Platform.Interop.Stat;

Public Shared Sub Main(Params: StartParams);
Var
    Method: SmLinearRegress;
    Factors: ISlSeries;
    Forecast: IForecast;
    Serie: Array[6Of Double;
    Factor: Array[10Of Double;
    Period: IStatPeriod;
    d0: Double;
    FirstPoint, LastPoint, status, i: Integer;
Begin
    Method := New SmLinearRegress.Create();
    // Задаем объясняемый ряд
    Serie[00] := 6209; Serie[01] := 6385;
    Serie[02] := 6752; Serie[03] := 6837;
    Serie[04] := 6495; Serie[05] := Double.Nan;
    Method.Explained.Value := Serie;
    // Задаем объясняющий ряд
    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;
    Factors := Method.Explanatories;
    Factors.Add().Value := Factor;
    // Получаем параметры прогнозного ряда
    Forecast := Method.Forecast;
    // Задаем параметры авторегрессии
    Forecast.ConfidenceLevel := 0.95;
    Forecast.CoefUncertaintyInSECalc := False;
    // Задаем период идентификации
    Period := Method.ModelPeriod;
    Period.FirstPoint := 1;
    Period.LastPoint := 6;
    // Задаем начальную и конечную точку прогноза
    Forecast.FirstPoint := 8;
    Forecast.LastPoint := 10;
    //Выполняем расчёт и выводим результаты
    status := Method.Execute();
    FirstPoint := Method.ModelPeriod.FirstPoint;
    LastPoint := Forecast.LastPoint;
    System.Diagnostics.Debug.WriteLine("=== Прогнозный ряд ===");
    For i := FirstPoint To LastPoint - 1 Do
        d0 := Forecast.Value.GetValue(i) As double;
        System.Diagnostics.Debug.WriteLine(i.ToString() + " " + d0.ToString());
    End For;
    System.Diagnostics.Debug.WriteLine("=== Верхняя доверительная граница ===");
    For i := FirstPoint To LastPoint - 1 Do
        d0 := Forecast.UpperConfidenceLevel.GetValue(i) As double;
        System.Diagnostics.Debug.WriteLine(i.ToString() + " " + d0.ToString());
    End For;
    System.Diagnostics.Debug.WriteLine("=== Нижняя доверительная граница ===");
    For i := FirstPoint To LastPoint - 1 Do
        d0 := Forecast.LowerConfidenceLevel.GetValue(i) As double;
        System.Diagnostics.Debug.WriteLine(i.ToString() + " " + d0.ToString());
    End For;
    System.Diagnostics.Debug.WriteLine("=== Стандартные ошибки прогнозного ряда ===");
    For i := FirstPoint To LastPoint - 1 Do
        d0 := Forecast.StandardError.GetValue(i) As double;
        System.Diagnostics.Debug.WriteLine(i.ToString() + " " + d0.ToString());
    End For;
End Sub;

В результате выполнения примера в окно консоли будут выведены результаты расчетов:

См. также:

IForecast