ISmAutoRegress.MissingData

Syntax

MissingData: IMissingData;

MissingData: Prognoz.Platform.Interop.Stat.SlMissingData;

Description

The MissingData property determines missing data treatment parameters.

Comments

By default missing data is not treated.

Example

Add a link to the Stat system assembly.

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[24Of Double;
    AROrder: Array[3Of Integer;
    d: Double;
Begin
    // Set variable values
    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;
    // Determine explained series
    ar.Serie.Value := y;
    // Define parameters of sample period
    ar.ModelPeriod.FirstPoint := 1;
    ar.ModelPeriod.LastPoint := 24;
    // Determine forecasting series parameters
    ar.Forecast.LastPoint := 35;
    // Determine autoregression orders
    AROrder[0] := 1;
    AROrder[1] := 3;
    AROrder[2] := 5;
    ar.AutoRegressionOrder := AROrder;
    // Determine missing data treatment parameters
    ar.MissingData.Method := MissingDataMethod.SampleAverage;
    // Determine model coefficient parameters
    ar.ModelCoefficients.Intercept.Mode := InterceptMode.AutoEstimate;
    // Calculate the method  and output the results
    res := ar.Execute;
    If res <> 0 Then
        Debug.WriteLine(ar.Errors);
        Else
            Debug.WriteLine("=== Model series ===");
            Print(ar.Fitted);
            Debug.WriteLine("=== Forecast series ===");
            Print(ar.Forecast.Value);
            Debug.WriteLine("=== Residuals ===");
            Print(ar.Residuals);
            Debug.WriteLine("=== Summary statistics ===");
            Debug.WriteLine("=== Determination coefficient ===");
            d := ar.SummaryStatistics.AdjR2;
            Debug.WriteLine(d);
            Debug.WriteLine("=== Mean error ===");
            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[24Of Double;
    AROrder: Array[3Of Integer;
    d: Double;
Begin
    // Set variable values
    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;
    // Determine explained series
    ar.Serie.Value := y;
    // Define parameters of sample period
    ar.ModelPeriod.FirstPoint := 1;
    ar.ModelPeriod.LastPoint := 24;
    // Determine forecasting series parameters
    ar.Forecast.LastPoint := 35;
    // Determine autoregression orders
    AROrder[0] := 1;
    AROrder[1] := 3;
    AROrder[2] := 5;
    ar.AutoRegressionOrder := AROrder;
    // Determine missing data treatment parameters
    ar.MissingData.Method := MissingDataMethod.mdmSampleAverage;
    // Determine model coefficient parameters
    ar.ModelCoefficients.Intercept.Mode := InterceptMode.imAutoEstimate;
    // Calculate the method  and output the results
    res := ar.Execute();
    If res <> 0 Then
        System.Diagnostics.Debug.WriteLine(ar.Errors);
        Else
            System.Diagnostics.Debug.WriteLine("=== Model series ===");
            Print(ar.Fitted);
            System.Diagnostics.Debug.WriteLine("=== Forecast series ===");
            Print(ar.Forecast.Value);
            System.Diagnostics.Debug.WriteLine("=== Residuals ===");
            Print(ar.Residuals);
            System.Diagnostics.Debug.WriteLine("=== Summary statistics ===");
            System.Diagnostics.Debug.WriteLine("=== Determination coefficient ===");
            d := ar.SummaryStatistics.AdjR2;
            System.Diagnostics.Debug.WriteLine(d);
            System.Diagnostics.Debug.WriteLine("=== Mean error ===");
            d := ar.SummaryStatistics.ME;
            System.Diagnostics.Debug.WriteLine(d);
    End If;
End Sub;

After executing the example the console window displays the modeling and forecasting series, residuals, and summary statistics.

See also:

ISmAutoRegress