ISlEquation.ParseAR

Syntax

ParseAR(Value: String; [AssignOrder: Boolean = True]);

ParseAR(Value: string; AssignOrder: boolean);

Parameters

Value. String representation of autoregression order

AssignOrder. Indicates whether the obtained value is set to the ISlEquation.AutoRegressionOrder property.

Description

The ParseAR method parses strings with parameters of non-seasonal autoregression.

Comments

The Value parameter should contain numbers or ranges of autoregression orders, separated with commas. For example:

ParseAR("1-3,5,7-9"True);

If AssignOrder = True, after executing ParseAR the obtained value is set to the ISlEquation.AutoRegressionOrder property. If AssignOrder = False, the order of parameters of non-seasonal autoregression is unchanged.

Example

To execute the example, add a link to the Stat system assembly.

Sub UserProc;
Var
    x1, x2: Array[16Of Double;
    i, j, status: Integer;
    VarModel: ISmVectorAutoRegress;
    Eqs: ISlEquations;
    Eq, Equations: ISlEquation;
    Intercept: IIntercept;
    EndogenousCoeff: ICoefficients;
Begin
    VarModel := New SmVectorAutoRegress.Create;
    // Endogenous variable 1
    x1[0] := 3; x1[1] := 8; x1[2] := 12; x1[3] := 10;
    x1[4] := 26; x1[5] := 21; x1[6] := 35; x1[7] := 29;
    x1[8] := 40; x1[9] := 39; x1[10] := 51; x1[11] := 50;
    x1[12] := 59; x1[13] := 58; x1[14] := 65; x1[15] := 72;
    // Endogenous variable 2
    x2[0] := 5; x2[1] := 3; x2[2] := 9; x2[3] := 13
    x2[4] := 25; x2[5] := 21; x2[6] := 30; x2[7] := 33;
    x2[8] := 43; x2[9] := 37; x2[10] := 49; x2[11] := 47;
    x2[12] := 60; x2[13] := 59; x2[14] := 69; x2[15] := 68;
    // Sample period:
    VarModel.ModelPeriod.FirstPoint := 1;
    VarModel.ModelPeriod.LastPoint := 10;
    // Parameters of equation collection:
    Eqs := VarModel.Equations;
    // ===Explained series 1===
    Eq := Eqs.Add;
    Eq.Serie.Value := x1;
    Eq.Serie.Name := "x1";
    // Autoregression order:
    Eq.ParseAR("1",True);
    // Last forecast point:
    Eq.Forecast.LastPoint := 16;
    // Parameters of equation constant:
    Eq.Intercept.Mode := InterceptMode.AutoEstimate;
    // ===Explained series 2===
    Eq := Eqs.Add;
    Eq.Serie.Value := x2;
    Eq.Serie.Name := "x2";
    // Autoregression order:
    Eq.ParseAR("1",True);
    // Last forecast point:
    Eq.Forecast.LastPoint := 16;
    // Parameters of equation constant:
    Eq.Intercept.Mode := InterceptMode.AutoEstimate;
    // ===Model calculation===
    status := VarModel.Execute;
    If status <> 0 Then
        Debug.Writeline(VarModel.Errors);
        Else
        For i := 0 To Eqs.Count-1 Do
            Debug.WriteLine("=== Equation coefficients " + (i+1).ToString + " ===");
            Intercept := VarModel.Equations.Item(i).Intercept;
            Debug.WriteLine("Constant "+Intercept.Estimate.ToString);
            EndogenousCoeff := VarModel.Equations.Item(i).EndogenousCoefficients;
            For j:=0 To EndogenousCoeff.Estimate.Length-1 Do
                Equations := VarModel.Equations.Item(j);
                Debug.WriteLine(Equations.Serie.Name+"[t-1]: " + Equations.EndogenousCoefficients.Estimate[j].ToString);
            End For;
        End For;
    End If;
End Sub UserProc;

Imports Prognoz.Platform.Interop.Stat;

Public Shared Sub Main(Params: StartParams);
Var
    x1, x2: Array[16Of Double;
    i, j, status: Integer;
    VarModel: ISmVectorAutoRegress;
    Eqs: ISlEquations;
    Eq, Equations: ISlEquation;
    Intercept: IIntercept;
    EndogenousCoeff: ICoefficients;
    Estimate: System.Array;
Begin
    VarModel := New SmVectorAutoRegress.Create();
    // Endogenous variable 1
    x1[0] := 3; x1[1] := 8; x1[2] := 12; x1[3] := 10;
    x1[4] := 26; x1[5] := 21; x1[6] := 35; x1[7] := 29;
    x1[8] := 40; x1[9] := 39; x1[10] := 51; x1[11] := 50;
    x1[12] := 59; x1[13] := 58; x1[14] := 65; x1[15] := 72;
    // Endogenous variable 2
    x2[0] := 5; x2[1] := 3; x2[2] := 9; x2[3] := 13
    x2[4] := 25; x2[5] := 21; x2[6] := 30; x2[7] := 33;
    x2[8] := 43; x2[9] := 37; x2[10] := 49; x2[11] := 47;
    x2[12] := 60; x2[13] := 59; x2[14] := 69; x2[15] := 68;
    // Sample period:
    VarModel.ModelPeriod.FirstPoint := 1;
    VarModel.ModelPeriod.LastPoint := 10;
    // Parameters of equation collection:
    Eqs := VarModel.Equations;
    // ===Explained series 1===
    Eq := Eqs.Add();
    Eq.Serie.Value := x1;
    Eq.Serie.Name := "x1";
    // Autoregression order:
    Eq.ParseAR("1",True);
    // Last forecast point:
    Eq.Forecast.LastPoint := 16;
    // Parameters of equation constant:
    Eq.Intercept.Mode := InterceptMode.imAutoEstimate;
    // ===Explained series 2===
    Eq := Eqs.Add();
    Eq.Serie.Value := x2;
    Eq.Serie.Name := "x2";
    // Autoregression order:
    Eq.ParseAR("1",True);
    // Last forecast point:
    Eq.Forecast.LastPoint := 16;
    // Parameters of equation constant:
    Eq.Intercept.Mode := InterceptMode.imAutoEstimate;
    // ===Model calculation===
    status := VarModel.Execute();
    If status <> 0 Then
        System.Diagnostics.Debug.WriteLine(VarModel.Errors);
        Else
        For i := 0 To Eqs.Count-1 Do
            System.Diagnostics.Debug.WriteLine("=== Equation coefficients " + (i+1).ToString() + " ===");
            Intercept := VarModel.Equations.Item[i].Intercept;
            System.Diagnostics.Debug.WriteLine("Constant "+Intercept.Estimate.ToString());
            EndogenousCoeff := VarModel.Equations.Item[i].EndogenousCoefficients;
            For j:=0 To EndogenousCoeff.Estimate.Length-1 Do
                Equations := VarModel.Equations.Item[j];
                Estimate := Equations.EndogenousCoefficients.Estimate;
                System.Diagnostics.Debug.WriteLine(Equations.Serie.Name+"[t-1]: " + Estimate[j].ToString());
            End For;
        End For;
    End If;
End Sub;

After executing the example the console window displays coefficients of vector autoregression equations:

See also:

ISlEquation