MissingData: IMissingData;
MissingData: Prognoz.Platform.Interop.Stat.SlMissingData;
Свойство MissingData определяет параметры обработки пропусков.
По умолчанию обработка пропусков не выполняется.
Добавьте ссылку на системную сборку Stat.
Sub UserProc;
Var
trend: SmCurveEstimation;
ar: Array[25] Of Double;
MData: IMissingData;
status, i: Integer;
Begin
// Создаем объект для расчета метода
trend := New SmCurveEstimation.Create;
// Задаем значения объясняемого ряда
ar[00] := 4110; ar[01] := 4280; ar[02] := 4459; ar[03] := 4545; ar[04] := 4664;
ar[05] := 4861; ar[06] := 5195; ar[07] := 4664; ar[08] := 9054; ar[09] := Double.Nan;
ar[10] := 5948; ar[11] := 6218; ar[12] := 6521; ar[13] := 6788; ar[14] := 7222;
ar[15] := 7486; ar[16] := 7832; ar[17] := 8153; ar[18] := 8468; ar[19] := Double.Nan;
ar[20] := 9499; ar[21] := 9866; ar[22] := 10217; ar[23] := 10763; ar[24] := 10683;
trend.Explained.Value := ar;
// Задаем параметры объясняющего ряда
trend.Explanatory.IsTrend := True;
// Задаем границы периода
прогнозирования
trend.ForecastFirstPoint := 20;
trend.ForecastLastPoint := 25;
// Задаем параметры сезонной составляющей
trend.SeasonalComponent.Mode := SeasonalityType.Additive;
trend.SeasonalComponent.Cycle := 4;
// Задаем параметры метода обработки пропусков
MData := trend.MissingData;
MData.Method := MissingDataMethod.SampleAverage;
// Выполняем расчет
status := trend.Execute;
If status <> 0 Then
// Если расчет завершился с ошибками, то выводим их в окно консоли
Debug.WriteLine(trend.Errors);
Else
// Если расчет завершился удачно, то выводим в окно консоли значения модельного ряда
Debug.WriteLine("== Модельный ряд == ");
Debug.Indent;
For i := 0 To trend.Explained.Value.Length - 1 Do
Debug.WriteLine(trend.Explained.Value[i]);
End For;
Debug.Unindent;
End If;
End Sub UserProc;
После выполнения примера в окно консоли будет выведен модельный ряд.
Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.
Imports Prognoz.Platform.Interop.Stat;
…
Public Shared Sub UserProc();
Var
trend: SmCurveEstimation;
ar: Array[25] Of Double;
MData: IMissingData;
status, i: Integer;
Begin
// Создаем объект для расчета метода
trend := New SmCurveEstimation.Create();
// Задаем значения объясняемого ряда
ar[00] := 4110; ar[01] := 4280; ar[02] := 4459; ar[03] := 4545; ar[04] := 4664;
ar[05] := 4861; ar[06] := 5195; ar[07] := 4664; ar[08] := 9054; ar[09] := Double.Nan;
ar[10] := 5948; ar[11] := 6218; ar[12] := 6521; ar[13] := 6788; ar[14] := 7222;
ar[15] := 7486; ar[16] := 7832; ar[17] := 8153; ar[18] := 8468; ar[19] := Double.Nan;
ar[20] := 9499; ar[21] := 9866; ar[22] := 10217; ar[23] := 10763; ar[24] := 10683;
trend.Explained.Value := ar;
// Задаем параметры объясняющего ряда
trend.Explanatory.IsTrend := True;
// Задаем границы периода
прогнозирования
trend.ForecastFirstPoint := 20;
trend.ForecastLastPoint := 25;
// Задаем параметры сезонной составляющей
trend.SeasonalComponent.Mode := SeasonalityType.sstAdditive;
trend.SeasonalComponent.Cycle := 4;
// Задаем параметры метода обработки пропусков
MData := trend.MissingData;
MData.Method := MissingDataMethod.mdmSampleAverage;
// Выполняем расчет
status := trend.Execute();
If status <> 0 Then
// Если расчет завершился с ошибками, то выводим их в окно консоли
System.Diagnostics.Debug.WriteLine(trend.Errors);
Else
// Если расчет завершился удачно, то выводим в окно консоли значения модельного ряда
System.Diagnostics.Debug.WriteLine("== Модельный ряд == ");
System.Diagnostics.Debug.Indent();
For i := 0 To trend.Explained.Value.Length - 1 Do
System.Diagnostics.Debug.WriteLine(trend.Explained.Value.GetValue(i));
End For;
System.Diagnostics.Debug.Unindent();
End If;
End Sub UserProc;
См. также: