MissingData: IMissingData;
MissingData: Prognoz.Platform.Interop.Stat.SlMissingData;
Свойство MissingData определяет параметры обработки пропусков.
По умолчанию обработка пропусков не выполняется.
Добавьте ссылку на системную сборку Stat.
Sub Print(Data: Array Of Double);
Var
i: Integer;
Begin
For i := 0 To Data.Length - 1 Do
If Double.IsNan(Data[i]) Then
Debug.WriteLine("---empty---");
Else
Debug.WriteLine(i.ToString + ", " + Data[i].ToString);
End If;
End For;
End Sub Print;
Sub UserProc;
Var
ar: SmAutoRegress;
res: Integer;
y: Array[24] Of Double;
AROrder: Array[3] Of Integer;
d: Double;
Begin
// Задаём значения переменной
ar := New SmAutoRegress.Create;
y[00] := 6209; y[12] := Double.Nan;
y[01] := 6385; y[13] := 7722;
y[02] := 6752; y[14] := 8088;
y[03] := 6837; y[15] := 8516;
y[04] := 6495; y[16] := 8941;
y[05] := 6907; y[17] := 9064;
y[06] := 7349; y[18] := 9380;
y[07] := 7213; y[19] := 9746;
y[08] := 7061; y[20] := 9907;
y[09] := 7180; y[21] := 10333;
y[10] := Double.Nan; y[22] := 10863;
y[11] := Double.Nan; y[23] := 11693;
// Определяем объясняемый ряд
ar.Serie.Value := y;
// Определяем параметры периода идентификации
ar.ModelPeriod.FirstPoint := 1;
ar.ModelPeriod.LastPoint := 24;
// Определяем параметры прогнозного
ряда
ar.Forecast.LastPoint := 35;
// Определяем порядки авторегрессий
AROrder[0] := 1;
AROrder[1] := 3;
AROrder[2] := 5;
ar.AutoRegressionOrder := AROrder;
// Определяем параметры обработки пропусков
ar.MissingData.Method := MissingDataMethod.SampleAverage;
// Определяем параметры коэффициентов модели
ar.ModelCoefficients.Intercept.Mode := InterceptMode.AutoEstimate;
// Выполняем расчёт метода и выводим результаты
res := ar.Execute;
If res <> 0 Then
Debug.WriteLine(ar.Errors);
Else
Debug.WriteLine("=== Модельный ряд ===");
Print(ar.Fitted);
Debug.WriteLine("=== Прогнозный ряд ===");
Print(ar.Forecast.Value);
Debug.WriteLine("=== Остатки ===");
Print(ar.Residuals);
Debug.WriteLine("=== Статистические характеристики ===");
Debug.WriteLine("=== Коэффициент детерминации ===");
d := ar.SummaryStatistics.AdjR2;
Debug.WriteLine(d);
Debug.WriteLine("=== Среднее остатков ===");
d := ar.SummaryStatistics.ME;
Debug.WriteLine(d);
End If;
End Sub UserProc;
Imports Prognoz.Platform.Interop.Stat;
…
Public Shared Sub Print(Data: System.Array);
Var
i: Integer;
Begin
For i := 0 To Data.Length - 1 Do
If Double.IsNan(Data.GetValue(i) As Double) Then
System.Diagnostics.Debug.WriteLine("---empty---");
Else
System.Diagnostics.Debug.WriteLine(i.ToString() + ", " + Data.GetValue(i).ToString());
End If;
End For;
End Sub Print;
Public Shared Sub Main(Params: StartParams);
Var
ar: SmAutoRegress;
res: Integer;
y: Array[24] Of Double;
AROrder: Array[3] Of Integer;
d: Double;
Begin
// Задаём значения переменной
ar := New SmAutoRegress.Create();
y[00] := 6209; y[12] := Double.Nan;
y[01] := 6385; y[13] := 7722;
y[02] := 6752; y[14] := 8088;
y[03] := 6837; y[15] := 8516;
y[04] := 6495; y[16] := 8941;
y[05] := 6907; y[17] := 9064;
y[06] := 7349; y[18] := 9380;
y[07] := 7213; y[19] := 9746;
y[08] := 7061; y[20] := 9907;
y[09] := 7180; y[21] := 10333;
y[10] := Double.Nan; y[22] := 10863;
y[11] := Double.Nan; y[23] := 11693;
// Определяем объясняемый ряд
ar.Serie.Value := y;
// Определяем параметры периода идентификации
ar.ModelPeriod.FirstPoint := 1;
ar.ModelPeriod.LastPoint := 24;
// Определяем параметры прогнозного
ряда
ar.Forecast.LastPoint := 35;
// Определяем порядки авторегрессий
AROrder[0] := 1;
AROrder[1] := 3;
AROrder[2] := 5;
ar.AutoRegressionOrder := AROrder;
// Определяем параметры обработки пропусков
ar.MissingData.Method := MissingDataMethod.mdmSampleAverage;
// Определяем параметры коэффициентов модели
ar.ModelCoefficients.Intercept.Mode := InterceptMode.imAutoEstimate;
// Выполняем расчёт метода и выводим результаты
res := ar.Execute();
If res <> 0 Then
System.Diagnostics.Debug.WriteLine(ar.Errors);
Else
System.Diagnostics.Debug.WriteLine("=== Модельный ряд ===");
Print(ar.Fitted);
System.Diagnostics.Debug.WriteLine("=== Прогнозный ряд ===");
Print(ar.Forecast.Value);
System.Diagnostics.Debug.WriteLine("=== Остатки ===");
Print(ar.Residuals);
System.Diagnostics.Debug.WriteLine("=== Статистические характеристики ===");
System.Diagnostics.Debug.WriteLine("=== Коэффициент детерминации ===");
d := ar.SummaryStatistics.AdjR2;
System.Diagnostics.Debug.WriteLine(d);
System.Diagnostics.Debug.WriteLine("=== Среднее остатков ===");
d := ar.SummaryStatistics.ME;
System.Diagnostics.Debug.WriteLine(d);
End If;
End Sub;
После выполнения примера в окно консоли будут выведены модельный и прогнозный ряды, остатки и статистические характеристики.
См. также: