ISlARMA.CalcInitMode

Fore Syntax

CalcInitMode: ARMAInitType;

Fore.NET Syntax

CalcInitMode: Prognoz.Platform.Interop.Stat.ARMAInitType;

Description

The CalcInitMode property selects method of determining initial approximations.

Comments

This property is relevant if the model includes exogenous variables or a constant.

Fore Example

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

Sub UserProc;
Var
    lr: ISmLinearRegress;
    W: Array[12Of Double;
    X: array[20Of Double;
    ARMA: ISlARMA;
    AR, MA: Array[1Of Integer;
    Inits: Array[1Of Double;
    res: Integer;
    d: Double;
    CoefficientsAR, CoefficientsMA, CoefficientsX: ICoefficients;
    ModelCoefficients: IModelCoefficients;
Begin
    lr := New SmLinearRegress.Create;
     // explained series values

    w[0] := 2; w[4] := -1.9; w[8] := -0.7;
    w[1] := 0.8; w[5] := Double.Nan; w[9] := Double.Nan;
    w[2] := -0.3; w[6] := 3.2; w[10] := 4.3;
    w[3] := -0.3; w[7] := 1.6; w[11] := 1.1;
    lr.Explained.Value := w;
     // explanatory series values
    x[0] := Double.Nan; x[10] := 11;
    x[1] := 2; x[11] := 12;
    x[2] := 3; x[12] := 13;
    x[3] := 4; x[13] := Double.Nan;
    x[4] := 5; x[14] := 15;
    x[5] := 6; x[15] := 16;
    x[6] := Double.Nan; x[16] := 17;
    x[7] := 8; x[17] := Double.Nan;
    x[8] := 9; x[18] := 19;
    x[9] := 10; x[19] := 20;
     // sample period

    lr.ModelPeriod.FirstPoint := 1;
    lr.ModelPeriod.LastPoint := 12;
    lr.Forecast.LastPoint := 19;
     // missing data treatment method
    lr.MissingData.Method := MissingDataMethod.AnyValue;
     // exogenous variable is used in model
    lr.Explanatories.Clear;
    lr.Explanatories.Add.Value := X;
     // initial approximation of exogenous variable
    lr.Explanatories.Item(0).InitValue := 0.7;
    ModelCoefficients := lr.ModelCoefficients;
     // constant is used in model
    ModelCoefficients.Intercept.Mode := InterceptMode.AutoEstimate;
     // initial approximation for constant
    ModelCoefficients.Intercept.InitValue := 3;
    ARMA := lr.ARMA;
     // autoregression order
    AR[0] := 2;
    ARMA.OrderAR := AR;
     // moving average order
    MA[0] := 1;
    ARMA.OrderMA := MA;
     // initial approximation definition method
    ARMA.CalcInitMode := ARMAInitType.Manual;
     // initial approximation of autoregression
    Inits[0] := 0.2;
    ARMA.InitAR := Inits;
     // initial approximations of moving average
    Inits[0] := 0.3;
    ARMA.InitMA := Inits;
     // optimization method

    ARMA.EstimationMethod := ARMAEstimationMethodType.GaussNewton;
     //number of iterations for optimization method
    ARMA.MaxIteration := 50;
     //accuracy for optimization method
    ARMA.Tolerance := 0.1;
     // model calculation
    res := lr.Execute;
    Debug.WriteLine(lr.Errors);
    If (res = 0Then
         // autoregression coefficients
        Debug.WriteLine("Autoregression coefficients estimates");
        CoefficientsAR := ARMA.CoefficientsAR;
        d := CoefficientsAR.Estimate[0];
        Debug.WriteLine(" Value: " + d.ToString);
        d := CoefficientsAR.StandardError[0];
        Debug.WriteLine(" Standard error: " + d.ToString);
        d := CoefficientsAR.TStatistic[0];
        Debug.WriteLine(" t-statistic: " + d.ToString);
        d := CoefficientsAR.Probability[0];
        Debug.WriteLine(" Probability: " + d.ToString);

         // moving average coefficients
        Debug.WriteLine("Estimates of moving average coefficients");
        CoefficientsMA := ARMA.CoefficientsMA;
        d := CoefficientsMA.Estimate[0];
        Debug.WriteLine(" Value: " + d.ToString);
        d := CoefficientsMA.StandardError[0];
        Debug.WriteLine(" Standard error: " + d.ToString);
        d := CoefficientsMA.TStatistic[0];
        Debug.WriteLine(" t-statistic: " + d.ToString);
        d := CoefficientsMA.Probability[0];
        Debug.WriteLine(" Probability: " + d.ToString);
         // exogenous variable coefficients
        Debug.WriteLine("Estimates of coefficients X:");
        CoefficientsX := ModelCoefficients.Coefficients;
        d := CoefficientsX.Estimate[0];
        Debug.WriteLine(" Value: " + d.ToString);
        d := CoefficientsX.StandardError[0];
        Debug.WriteLine(" Standard error: " + d.ToString);
        d := CoefficientsX.TStatistic[0];
        Debug.WriteLine(" t-statistic: " + d.ToString);
        d := CoefficientsX.Probability[0];
        Debug.WriteLine(" Probability: " + d.ToString);
         // constant
        d := ModelCoefficients.Intercept.Estimate;
        Debug.WriteLine("Constant: " + d.ToString);
    End If;
End Sub UserProc;

After executing the example a linear regression model with the following parameters is created:

The console window displays model coefficients estimates and the constant value.

Fore.NET Example

The requirements and result of the Fore.NET example execution match with those in the Fore example.

Imports Prognoz.Platform.Interop.Stat;

Public Shared Sub Main(Params: StartParams);
Var
    lr: ISmLinearRegress;
    W: Array[12Of Double;
    X: array[20Of Double;
    ARMA: ISlARMA;
    AR, MA: Array[1Of Integer;
    Inits: Array[1Of Double;
    res: Integer;
    d: Double;
    CoefficientsAR, CoefficientsMA, CoefficientsX: ICoefficients;
    ModelCoefficients: IModelCoefficients;
Begin
    lr := New SmLinearRegress.Create();
     // explained series values

    w[0] := 2; w[4] := -1.9; w[8] := -0.7;
    w[1] := 0.8; w[5] := Double.Nan; w[9] := Double.Nan;
    w[2] := -0.3; w[6] := 3.2; w[10] := 4.3;
    w[3] := -0.3; w[7] := 1.6; w[11] := 1.1;
    lr.Explained.Value := w;
     // explanatory series values
    x[0] := Double.Nan; x[10] := 11;
    x[1] := 2; x[11] := 12;
    x[2] := 3; x[12] := 13;
    x[3] := 4; x[13] := Double.Nan;
    x[4] := 5; x[14] := 15;
    x[5] := 6; x[15] := 16;
    x[6] := Double.Nan; x[16] := 17;
    x[7] := 8; x[17] := Double.Nan;
    x[8] := 9; x[18] := 19;
    x[9] := 10; x[19] := 20;
     // sample period
    lr.ModelPeriod.FirstPoint := 1;
    lr.ModelPeriod.LastPoint := 12;
    lr.Forecast.LastPoint := 19;
     // missing data treatment method

    lr.MissingData.Method := MissingDataMethod.mdmAnyValue;
     // exogenous variable is used in model
    lr.Explanatories.Clear();
    lr.Explanatories.Add().Value := X;
     // initial approximation of exogenous variable
    lr.Explanatories.Item[0].InitValue := 0.7;
    ModelCoefficients := lr.ModelCoefficients;
     // constant is used in model
    ModelCoefficients.Intercept.Mode := InterceptMode.imAutoEstimate;
     // initial approximation for constant
    ModelCoefficients.Intercept.InitValue := 3;
    ARMA := lr.ARMA;
     // autoregression order
    AR[0] := 2;
    ARMA.OrderAR := AR;
     // moving average order
    MA[0] := 1;
    ARMA.OrderMA := MA;
     // initial approximation definition method
    ARMA.CalcInitMode := ARMAInitType.armaitManual;
     // initial approximations of autoregression
    Inits[0] := 0.2;
    ARMA.InitAR := Inits;
     // initial approximations of moving average
    Inits[0] := 0.3;
    ARMA.InitMA := Inits;
     // optimization method
    ARMA.EstimationMethod := ARMAEstimationMethodType.armaemtGaussNewton;
     //number of iterations for optimization method
    ARMA.MaxIteration := 50;
     //accuracy for optimization method

    ARMA.Tolerance := 0.1;
     // model calculation
    res := lr.Execute();
    System.Diagnostics.Debug.WriteLine(lr.Errors);
    If (res = 0Then
         // autoregression coefficients
        System.Diagnostics.Debug.WriteLine("Estimations of autoregressive coefficients");
        CoefficientsAR := ARMA.CoefficientsAR;
        d := CoefficientsAR.Estimate.GetValue(0As double;
        System.Diagnostics.Debug.WriteLine(" Value: " + d.ToString());
        d := CoefficientsAR.StandardError.GetValue(0As double;
        System.Diagnostics.Debug.WriteLine(" Standard error: " + d.ToString());
        d := CoefficientsAR.TStatistic.GetValue(0As double;
        System.Diagnostics.Debug.WriteLine(" t-statistic: " + d.ToString());
        d := CoefficientsAR.Probability.GetValue(0As double;
        System.Diagnostics.Debug.WriteLine(" Probability: " + d.ToString());
         // moving average coefficients
        System.Diagnostics.Debug.WriteLine("Estimations of moving average coefficients");
        CoefficientsMA := ARMA.CoefficientsMA;
        d := CoefficientsMA.Estimate.GetValue(0As double;
        System.Diagnostics.Debug.WriteLine(" Value: " + d.ToString());
        d := CoefficientsMA.StandardError.GetValue(0As double;
        System.Diagnostics.Debug.WriteLine(" Standard error: " + d.ToString());
        d := CoefficientsMA.TStatistic.GetValue(0As double;
        System.Diagnostics.Debug.WriteLine(" t-statistic: " + d.ToString());
        d := CoefficientsMA.Probability.GetValue(0As double;
        System.Diagnostics.Debug.WriteLine(" Probability: " + d.ToString());
         // exogenous variable coefficients

        System.Diagnostics.Debug.WriteLine("Estimates of coefficients X:");
        CoefficientsX := ModelCoefficients.Coefficients;
        d := CoefficientsX.Estimate.GetValue(0As double;
        System.Diagnostics.Debug.WriteLine(" Value: " + d.ToString());
        d := CoefficientsX.StandardError.GetValue(0As double;
        System.Diagnostics.Debug.WriteLine(" Standard error: " + d.ToString());
        d := CoefficientsX.TStatistic.GetValue(0As double;
        System.Diagnostics.Debug.WriteLine(" t-statistic: " + d.ToString());
        d := CoefficientsX.Probability.GetValue(0As double;
        System.Diagnostics.Debug.WriteLine(" Probability: " + d.ToString());
         // constant
        d := ModelCoefficients.Intercept.Estimate;
        System.Diagnostics.Debug.WriteLine("Constant: " + d.ToString());
    End If;
End Sub;

See also:

ISlARMA