IMsForecastObject.Forecast

Синтаксис

Forecast(Period: IMsPeriod): IMsForecast;

Параметры

Period. Период прогнозирования.

Описание

Свойство Forecast возвращает параметры прогнозного ряда.

Комментарии

Если параметр Period принимает значение Null, то период прогнозирования будет совпадать с периодом расчёта метода.

Пример

Приведён пользовательский метод расчёта, возвращающий прогнозные значения для какого-либо прогнозного метода расчёта.

Добавьте ссылки на системные сборки: Ms, Stat.

Public Function ForecastVal(FO: IMsForecastObject): ITimeSeries;
Var
    SumStat: ISummaryStatistics;
    Series: ITimeSeries;
    Period: IMsDatePeriod;
    Forecast: IMsForecast;
Begin
    // Выводим наименование метода
    Debug.WriteLine("Наименование метода: " + FO.BaseMethod.Name);
    Debug.WriteLine("");
    // Получаем статистические характеристики
    SumStat := FO.Stats;
    // Выводим статистические характеристики в окно консоли
    Debug.WriteLine("Статистические характеристики");
    Debug.Indent;
    Debug.WriteLine("Критерии качества");
    Debug.Indent;
    Debug.WriteLine("Коэффициент детерминации (R^2): " + SumStat.R2.ToString);
    Debug.WriteLine("Скорректированный коэффициент детерминации (adj R^2): " + SumStat.AdjR2.ToString);
    Debug.WriteLine("Статистика Фишера (F): " + SumStat.Fstat.ToString);
    Debug.WriteLine("Вероятность статистики Фишера (p-v): " + SumStat.ProbFstat.ToString);
    Debug.Unindent;
    Debug.WriteLine("Диагностические критерии");
    Debug.Indent;
    Debug.WriteLine("Статистика Дарбина-Уотсона (DW): " + SumStat.DW.ToString);
    Debug.Unindent;
    Debug.Unindent;
    Debug.WriteLine("");
    // Получаем модельный ряд и выводим его в окно консоли
    Series := FO.Fitted;
    Debug.WriteLine("Модельный ряд");
    Print(Series);
    // Получаем ряд остатков и выводим его в окно консоли
    Series := FO.Residuals;
    Debug.WriteLine("Ряд остатков");
    Print(Series);
    // Получаем моделируемый ряд и выводим его в окно консоли
    Series := FO.TimeSeries;
    Debug.WriteLine("Результирующий ряд");
    Print(Series);
    // Создаем временной период
    Period := New MsDatePeriod.Create;
    Period.Start := DateTime.Parse("01.01.2010");
    Period.End_ := DateTime.Parse("31.12.2020");
    // Получаем параметры прогнозного ряда на заданном периоде
    Forecast := FO.Forecast(Period);
    // Получаем и выводим в окно консоли значения прогнозного ряда
    Series := Forecast.Value;
    Debug.WriteLine("Прогнозный ряд");
    Print(Series);
    // Получаем и выводим в окно консоли значения верхней доверительной границы прогнозного ряда
    Series := Forecast.UpperConfidenceLevel;
    Debug.WriteLine("Значения верхней доверительной границы прогнозного ряда");
    Print(Series);
    // Получаем и выводим в окно консоли значения нижней доверительной границы прогнозного ряда
    Series := Forecast.LowerConfidenceLevel;
    Debug.WriteLine("Значения нижней доверительной границы прогнозного ряда");
    Print(Series);
    // Получаем и выводим в окно консоли значения верхней динамической доверительной границы прогнозного ряда
    Series := Forecast.DynamicUpperConfidenceLevel;
    Debug.WriteLine("Значения верхней динамической доверительной границы прогнозного ряда");
    Print(Series);
    // Получаем и выводим в окно консоли значения нижней динамической доверительной границы прогнозного ряда
    Series := Forecast.DynamicLowerConfidenceLevel;
    Debug.WriteLine("Значения нижней динамической доверительной границы прогнозного ряда");
    Print(Series);
    // Получаем и выводим в окно консоли значения ряда,
    // содержащего данные исходного ряда на период идентификации и прогнозного ряда на период прогнозирования
    Series := Forecast.Combined;
    Debug.WriteLine("Значения ряда, содержащего данные исходного ряда на период идентификации " +
        "и прогнозного ряда на период прогнозирования");
    Print(Series);
    // Возвращаем прогнозный ряд
    Return Forecast.Value;
End Function ForecastVal;

// Процедура вывода значений ряда в окно консоли
Sub Print(Series: ITimeSeries);
Var
    i: Integer;
    d: DateTime;
Begin
    Debug.Indent;
    For i := Series.StartIndex To Series.EndIndex Do
        d := Series.IndexToDate(i);
        Debug.WriteLine(CultureInfo.Current.FormatShortDate(d) + ": " + Series.Item(i));
    End For;
    Debug.Unindent;
    Debug.WriteLine("");
End Sub Print;

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

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

IMsForecastObject_Forecast.ForecastVal(Arima(X1, Null, "1", "1", 1, 2))

Где:

См. также:

IMsForecastObject