ISlPDLTerm.InitValues

Fore Syntax

InitValues: Array;

Fore.NET Syntax

InitValues: System.Array;

Description

The InitValues property determines initial approximations of lag variable.

Comments

To get lag variable coefficients, use the ISlPDLTerm.BetaCoefficients property.

Fore Example

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

Sub UserProc;
Var
    Method: SmLinearRegress;
    Factors: ISlSeries;
    Serie, Factor, ger, jpn: Array[20Of Double;
    arr: array Of Double;
    PDLTermCollect: ISlPDLTermCollection;
    PDLTerm: ISlPDLTerm;
    BetaCoef: ICoefficients;
    res, i: Integer;
Begin
    Method := New SmLinearRegress.Create;
    // explained variable
    Serie[00] := 6209; Serie[10] := 7132;
    Serie[01] := 6385; Serie[11] := 7137;
    Serie[02] := 6752; Serie[12] := 7473;
    Serie[03] := 6837; Serie[13] := 7722;
    Serie[04] := 6495; Serie[14] := 8088;
    Serie[05] := 6907; Serie[15] := 7022;
    Serie[06] := 7349; Serie[16] := 8282;
    Serie[07] := 7213; Serie[17] := 9064;
    Serie[08] := 7061; Serie[18] := 9380;
    Serie[09] := 7180; Serie[19] := 9746;
    // explanatory variable

    Factor[00] := 4110; Factor[10] := 5948;
    Factor[01] := 4280; Factor[11] := 6218;
    Factor[02] := 4459; Factor[12] := 6521;
    Factor[03] := 4545; Factor[13] := 6788;
    Factor[04] := 4664; Factor[14] := 7222;
    Factor[05] := 4861; Factor[15] := 7486;
    Factor[06] := 5195; Factor[16] := 7832;
    Factor[07] := 5389; Factor[17] := 8153;
    Factor[08] := 5463; Factor[18] := 8468;
    Factor[09] := 5610; Factor[19] := 9054;
    // first lag variable

    ger[00] := 3415; ger[10] := 6633;
    ger[01] := 3673; ger[11] := 6910;
    ger[02] := 4013; ger[12] := 7146;
    ger[03] := 4278; ger[13] := 7248;
    ger[04] := 4577; ger[14] := 7689;
    ger[05] := 5135; ger[15] := 8046;
    ger[06] := 5388; ger[16] := 8143;
    ger[07] := 5610; ger[17] := 8064;
    ger[08] := 5787; ger[18] := 8556;
    ger[09] := 6181; ger[19] := 9177;
    // second lag variable

    jpn[00] := 1475; jpn[10] := 3052;
    jpn[01] := 1649; jpn[11] := 3453;
    jpn[02] := 1787; jpn[12] := 3666;
    jpn[03] := 1884; jpn[13] := 4008;
    jpn[04] := 1972; jpn[14] := 4486;
    jpn[05] := 2108; jpn[15] := 4663;
    jpn[06] := 2249; jpn[16] := 5115;
    jpn[07] := 2394; jpn[17] := 5655;
    jpn[08] := 2505; jpn[18] := 6358;
    jpn[09] := 2714; jpn[19] := 6995;

    // set explained and explanatory variables
    Method.Explained.Value := Serie;
    Factors := Method.Explanatories;
    Factors.Add.Value := Factor;
    // define regression parameters
    Method.ModelPeriod.FirstPoint := 1;
    Method.ModelPeriod.LastPoint := 20;
    // set forecast parameters
    Method.Forecast.LastPoint := 30;
    // set lag variables
    PDLTermCollect := Method.PDLTermCollection;
    If PDLTermCollect.Count > 0 Then
        PDLTermCollect.Clear;
    End If;

    // set parameters of first lag variable
    PDLTerm := PDLTermCollect.Add;
    PDLTerm.Explanatory.Value := ger;
    PDLTerm.Explanatory.Include := True;
    PDLTerm.PDLConstraint := PDLConstraintType.Both;
    PDLTerm.PolinomialDegreeP := 4;
    PDLTerm.LagLengthK := 1;
    arr:=New Double[PDLTerm.LagLengthK+1];
    For i:=0 To arr.Length-1 Do
        arr[i]:=0.5-i*0.1;
    End For;
    PDLTerm.InitValues := arr;
    // set parameters of  second lag variable
    PDLTerm := PDLTermCollect.Add;
    PDLTerm.Explanatory.Value := jpn;
    PDLTerm.PDLConstraint := PDLConstraintType.FarEnd;
    PDLTerm.PolinomialDegreeP := 2;
    PDLTerm.LagLengthK := 2;

    // Autofit parameters    
    Method.AutoSelection.IsActive := True;
    Method.AutoSelection.Min := 1;
    Method.AutoSelection.Max := 2;
    // calculate model
    res := Method.Execute;
    // calculate method with lag variables, output results
    BetaCoef := PDLTerm.BetaCoefficients;
    Debug.WriteLine("=== Value of coefficients of first lag variable  ===");
    PDLTerm := PDLTermCollect.Item(0);
    For i := 0 To BetaCoef.Estimate.Length-1 Do
        Debug.WriteLine((i+1).ToString + " " + BetaCoef.Estimate[i].ToString);
    End For;
    Debug.WriteLine("=== Value of coefficients of second lag variable  ===");
    PDLTerm := PDLTermCollect.Item(1);
    For i := 0 To BetaCoef.Estimate.Length-1 Do
        Debug.WriteLine((i+1).ToString + " " + BetaCoef.Estimate[i].ToString);
    End For;
End Sub UserProc;

After executing the example the console window displays values of coefficients of the first and second lag variables.

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
    Method: SmLinearRegress;
    Factors: ISlSeries;
    Serie, Factor, ger, jpn: Array[20Of Double;
    arr: array Of Double;
    PDLTermCollect: ISlPDLTermCollection;
    PDLTerm: ISlPDLTerm;
    BetaCoef: ICoefficients;
    res, i: Integer;
    Est: System.Array;
Begin
    Method := New SmLinearRegress.Create();
    // explained variable
    Serie[00] := 6209; Serie[10] := 7132;
    Serie[01] := 6385; Serie[11] := 7137;
    Serie[02] := 6752; Serie[12] := 7473;
    Serie[03] := 6837; Serie[13] := 7722;
    Serie[04] := 6495; Serie[14] := 8088;
    Serie[05] := 6907; Serie[15] := 7022;
    Serie[06] := 7349; Serie[16] := 8282;
    Serie[07] := 7213; Serie[17] := 9064;
    Serie[08] := 7061; Serie[18] := 9380;
    Serie[09] := 7180; Serie[19] := 9746;

    // explanatory variable
    Factor[00] := 4110; Factor[10] := 5948;
    Factor[01] := 4280; Factor[11] := 6218;
    Factor[02] := 4459; Factor[12] := 6521;
    Factor[03] := 4545; Factor[13] := 6788;
    Factor[04] := 4664; Factor[14] := 7222;
    Factor[05] := 4861; Factor[15] := 7486;
    Factor[06] := 5195; Factor[16] := 7832;
    Factor[07] := 5389; Factor[17] := 8153;
    Factor[08] := 5463; Factor[18] := 8468;
    Factor[09] := 5610; Factor[19] := 9054;

    // first lag variable
    ger[00] := 3415; ger[10] := 6633;
    ger[01] := 3673; ger[11] := 6910;
    ger[02] := 4013; ger[12] := 7146;
    ger[03] := 4278; ger[13] := 7248;
    ger[04] := 4577; ger[14] := 7689;
    ger[05] := 5135; ger[15] := 8046;
    ger[06] := 5388; ger[16] := 8143;
    ger[07] := 5610; ger[17] := 8064;
    ger[08] := 5787; ger[18] := 8556;
    ger[09] := 6181; ger[19] := 9177;

    // second lag variable
    jpn[00] := 1475; jpn[10] := 3052;
    jpn[01] := 1649; jpn[11] := 3453;
    jpn[02] := 1787; jpn[12] := 3666;
    jpn[03] := 1884; jpn[13] := 4008;
    jpn[04] := 1972; jpn[14] := 4486;
    jpn[05] := 2108; jpn[15] := 4663;
    jpn[06] := 2249; jpn[16] := 5115;
    jpn[07] := 2394; jpn[17] := 5655;
    jpn[08] := 2505; jpn[18] := 6358;
    jpn[09] := 2714; jpn[19] := 6995;

    // set explained and explanatory variables
    Method.Explained.Value := Serie;
    Factors := Method.Explanatories;
    Factors.Add().Value := Factor;
    // define regression parameters
    Method.ModelPeriod.FirstPoint := 1;
    Method.ModelPeriod.LastPoint := 20;
    // set forecast parameters
    Method.Forecast.LastPoint := 30;
    // set lag variables
    PDLTermCollect := Method.PDLTermCollection;
    If PDLTermCollect.Count > 0 Then
        PDLTermCollect.Clear();
    End If;

    // set parameters of first lag variable
    PDLTerm := PDLTermCollect.Add();
    PDLTerm.Explanatory.Value := ger;
    PDLTerm.Explanatory.Include := True;
    PDLTerm.PDLConstraint := PDLConstraintType.pdlctBoth;
    PDLTerm.PolinomialDegreeP := 4;
    PDLTerm.LagLengthK := 1;
    arr:=New Double[PDLTerm.LagLengthK+1];
    For i:=0 To arr.Length-1 Do
        arr[i]:=0.5-i*0.1;
    End For;
    PDLTerm.InitValues := arr;

    // set parameters of second lag variable
    PDLTerm := PDLTermCollect.Add();
    PDLTerm.Explanatory.Value := jpn;
    PDLTerm.PDLConstraint := PDLConstraintType.pdlctFarEnd;
    PDLTerm.PolinomialDegreeP := 2;
    PDLTerm.LagLengthK := 2;
    // Autofit parameters
    Method.AutoSelection.IsActive := True;
    Method.AutoSelection.Min := 1;
    Method.AutoSelection.Max := 2;

    // model calculation
    res := Method.Execute();
    // calculate method with lag variables, output results
    BetaCoef := PDLTerm.BetaCoefficients;
    System.Diagnostics.Debug.WriteLine("=== Value of coefficients of first lag variable  ===");
    PDLTerm := PDLTermCollect.Item[0];
    Est := BetaCoef.Estimate;
    For i := 0 To BetaCoef.Estimate.Length-1 Do
        System.Diagnostics.Debug.WriteLine((i+1).ToString() + " " + Est[i].ToString());
    End For;
    System.Diagnostics.Debug.WriteLine("=== Value of coefficients of second lag variable  ===");
    PDLTerm := PDLTermCollect.Item[1];
    For i := 0 To BetaCoef.Estimate.Length-1 Do
        System.Diagnostics.Debug.WriteLine((i+1).ToString() + " " + Est[i].ToString());
    End For;
End Sub;

See also:

ISlPDLTerm