Explained: IEmSerie;
Explained: Prognoz.Platform.Interop.Modeller.IEmSerie;
Свойство Explained определяет сглаживаемый ряд.
Если не задан сглаживаемый ряд, то корректный расчёт метода «Экспоненциальное сглаживание» невозможен.
Для выполнения примера добавьте ссылки на системные сборки «Modeller», «Stat».
Sub ExponentialSmoothing;
Var
ExprMod: IExpressModeller;
Ar: Array[14] Of Double;
Serie: IEmSerie;
Sett: IEmExponentialSmoothingSettings;
Period: IEmPeriodSettings;
Begin
ExprMod := New ExpressModeller.Create;
Sett := ExprMod.CreateExponentialSmoothingSettings;
// Задаем сглаживаемый ряд
Ar[0] := 56; Ar[1] := 45; Ar[2] := 23; Ar[3] := 45;
Ar[4] := 65; Ar[5] := 23; Ar[6] := 54; Ar[7] := 87;
Ar[8] := 67; Ar[9] := 98; Ar[10] := 89; Ar[13] := 79;
Ar[11] := Double.Nan; Ar[12] := Double.Nan;
Serie := ExprMod.Series.Add(Ar, "X1", "Ряд данных 1");
Sett.Explained := Serie;
// Задаем тип сезонности
Sett.Seasonality := SeasonalityType.Additive;
// Задаем период сезонности
Sett.SeasonalityCycle := 4;
// Задаем вид тренда
Sett.Trend := TrendType.Linear;
// Задаем коэффициенты сглаживания
Sett.Alpha := 0.2;
Sett.Delta := 0.5;
Sett.Gamma := 0.7;
//Задаем периоды расчёта
Period := Sett.Period;
Period.BeginPeriod := 0;
Period.EndPeriod := 13;
Period.EndFore := 4;
// Выполняем расчёт для линейного тренда
ExprMod.EvaluateMethod("C:\ExponentialSmoothing_Linear.html", Sett, True);
// Задаем вид тренда
Sett.Trend := TrendType.Damped;
// Задаем коэффициенты сглаживания
Sett.Alpha := 0.4;
Sett.Gamma := 0.6;
Sett.Phi := 0.4;
// Выполняем расчёт для затухающего тренда
ExprMod.EvaluateMethod("C:\ExponentialSmoothing_Damped.html", Sett, True);
End Sub ExponentialSmoothing;
Результат выполнения примера: будет выполнен расчёт метода «Экспоненциальное сглаживание» по заданным параметрам для двух моделей тренда. Отчёт о расчёте при линейном тренде будет сохранен в файл «C:\ExponentialSmoothing_Linear.html»; при затухающем тредне - в файл «C:\ExponentialSmoothing_Damped.html».
Imports Prognoz.Platform.Interop.Modeller;
Imports Prognoz.Platform.Interop.Stat;
…
Public Shared Sub ExponentialSmoothing();
Var
ExprMod: IExpressModeller;
Ar: Array[14] Of Double;
Serie: IEmSerie;
Sett: IEmExponentialSmoothingSettings;
Period: IEmPeriodSettings;
Begin
ExprMod := New ExpressModeller.Create();
Sett := ExprMod.CreateExponentialSmoothingSettings();
// Задаем сглаживаемый ряд
Ar[0] := 56; Ar[1] := 45; Ar[2] := 23; Ar[3] := 45;
Ar[4] := 65; Ar[5] := 23; Ar[6] := 54; Ar[7] := 87;
Ar[8] := 67; Ar[9] := 98; Ar[10] := 89; Ar[13] := 79;
Ar[11] := Double.Nan; Ar[12] := Double.Nan;
Serie := ExprMod.Series.Add(Ar, "X1", "Ряд данных 1");
Sett.Explained := Serie;
// Задаем тип сезонности
Sett.Seasonality := SeasonalityType.sstAdditive;
// Задаем период сезонности
Sett.SeasonalityCycle := 4;
// Задаем вид тренда
Sett.Trend := TrendType.tdtLinear;
// Задаем коэффициенты сглаживания
Sett.Alpha := 0.2;
Sett.Delta := 0.5;
Sett.Gamma := 0.7;
//Задаем периоды расчёта
Period := Sett.Period;
Period.BeginPeriod := 0;
Period.EndPeriod := 13;
Period.EndFore := 4;
// Выполняем расчёт для линейного тренда
ExprMod.EvaluateMethod("C:\ExponentialSmoothing_Linear.html", Sett, True);
// Задаем вид тренда
Sett.Trend := TrendType.tdtDamped;
// Задаем коэффициенты сглаживания
Sett.Alpha := 0.4;
Sett.Gamma := 0.6;
Sett.Phi := 0.4;
// Выполняем расчёт для затухающего тренда
ExprMod.EvaluateMethod("C:\ExponentialSmoothing_Damped.html", Sett, True);
End Sub ExponentialSmoothing;
Результат выполнения примера: будет выполнен расчёт метода «Экспоненциальное сглаживание» по заданным параметрам для двух моделей тренда. Отчёт о расчёте при линейном тренде будет сохранен в файл «C:\ExponentialSmoothing_Linear.html»; при затухающем тредне - в файл «C:\ExponentialSmoothing_Damped.html».
См. также: