IModelling.BpfR

Fore Syntax

BpfR(Input: ITimeSeries;
    Period: IMsPeriod;
    Lag: Integer;
    Low: Integer;
    High: Integer;
    [Output: MsBPFOutputType = 0]): Variant;

Fore.NET Syntax

BpfR(Input: Prognoz.Platform.Interop.Ms.ITimeSeries;
    Period: Prognoz.Platform.Interop.Ms.IMsPeriod;
    Lag: Integer;
    Low: Integer;
    High: Integer;
    Output: Prognoz.Platform.Interop.Ms.MsBPFOutputType;
    Context: Prognoz.Platform.Interop.Fore.ForeRuntimeContext): object;

Parameters

Input. Input variable.

Period. Period, at which the method is calculated. If the parameter is set to Null, the method is calculated at the entire time period.

Lag. Lead/lag.

Low. Low value of cycle period.

High. High value of cycle period.

Output. Output component.

Context. Context. The parameter is used only in Fore.NET.

Description

The BpfR method models variable values using the Baxter-King filter with the R package.

Comments

Integration with R must be set up in the repository to use this method. For details about integration setup see the How to Set Up Integration with R? section.

Values for lead/lag and cycle period limits are set depending on the calendar frequency of the input variable. Basic values:

Frequency Lead/lag Low limit High limit
Annual 3 2 8
Semi-annual 6 3 16
Quarterly 12 6 32
Monthly 36 18 96
Weekly 156 78 416
5-days 783 391,5 2088
7-days 1095 547,5 2920

Fore Example

Executing the example requires that the repository contains a modeling container with the MS identifier. A model with the MODEL_D identifier calculated by the method of determinate equation and containing at least one input variable must be available in this container. The model must be based on annual frequency.

Integration with R must be set up in the repository. For details about integration setup see the How to Set Up Integration with R? section.

Add links to the Metabase, Ms system assemblies.

Sub UserBpfR;
Var
    Mb: IMetabase;
    ModelSpace, ModelObj: IMetabaseObject;
    Transf: IMsFormulaTransform;
    Formula: IMsFormula;
    Model: IMsModel;
    Determ: IMsDeterministicTransform;
    TransVar: IMsFormulaTransformVariable;
    Slice: IMsFormulaTransformSlice;
    TermInfo: IMsFormulaTermInfo;
    Expr: IExpression;
Begin
    // Get repository
    Mb := MetabaseClass.Active;
    // Get modeling container
    ModelSpace := Mb.ItemById("MS").Bind;
    // Get model
    ModelObj := Mb.ItemByIdNamespace("MODEL_D", ModelSpace.Key).Edit;
    Model := ModelObj As IMsModel;
    // Get model calculation parameters
    Transf := Model.Transform;
    Formula := Transf.FormulaItem(0);
    Determ := Formula.Method As IMsDeterministicTransform;
    // Get the first input variable
    TransVar := Transf.Inputs.Item(0);
    Slice := TransVar.Slices.Item(0);
    TermInfo := Transf.CreateTermInfo;
    TermInfo.Slice := Slice;
    // Set mode of passing variable into calculation
    TermInfo.Type := MsFormulaTermType.Pointwise;
    // Get model calculation expression
    Expr := Determ.Expression;
    Expr.References := "Ms";
    // Set model calculation expression
    Expr.AsString := "BpfR(" + TermInfo.TermInnerText +", SetPeriod(" +
        """" + "01.01.2000" + """" + "," + """" + "01.01.2015" + """" +
        "), 3, 2, 8,MsBPFOutputType.NonCyclicalSeries)";
    // Check if the expression is correct
    If Expr.Valid
        // If the expression is set correctly, save the model
        Then ModelObj.Save;
        // If the expression is incorrect, display a message to the console window 
        Else Debug.WriteLine("Model is not saved: error in the formula");
    End If;
End Sub UserBpfR;

After executing the example the model calculates values on the basis of the first input variable by the Baxter-King filter. The non-cyclical series of input variable will be loaded to the output variable. R package will be used in calculations.

Fore.NET Example

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

Imports Prognoz.Platform.Interop.Ms;
Imports Prognoz.Platform.Interop.ForeSystem;

Public Shared Sub Main(Params: StartParams);
Var
    Mb: IMetabase;
    ModelSpace, ModelObj: IMetabaseObject;
    Transf: IMsFormulaTransform;
    Formula: IMsFormula;
    Model: IMsModel;
    Determ: IMsDeterministicTransform;
    TransVar: IMsFormulaTransformVariable;
    Slice: IMsFormulaTransformSlice;
    TermInfo: IMsFormulaTermInfo;
    Expr: IExpression;
Begin
    // Get repository
    Mb := Params.Metabase;
    // Get modeling container
    ModelSpace := Mb.ItemById["MS"].Bind();
    // Get model
    ModelObj := Mb.ItemByIdNamespace["MODEL_D", ModelSpace.Key].Edit();
    Model := ModelObj As IMsModel;
    // Get model calculation parameters
    Transf := Model.Transform;
    Formula := Transf.FormulaItem[0];
    Determ := Formula.Method As IMsDeterministicTransform;
    // Get the first input variable
    TransVar := Transf.Inputs.Item[0];
    Slice := TransVar.Slices.Item[0];
    TermInfo := Transf.CreateTermInfo();
    TermInfo.Slice := Slice;
    // Set mode of passing variable into calculation
    TermInfo.Type := MsFormulaTermType.mfttPointwise;
    // Get model calculation expression
    Expr := Determ.Expression;
    Expr.References := "Ms";
    // Set model calculation expression
    Expr.AsString := "BpfR(" + TermInfo.TermInnerText + ", SetPeriod(" +
        """" + "01.01.2000" + """" + "," + """" + "01.01.2015" + """" +
        "), 3, 2, 8,MsBPFOutputType.NonCyclicalSeries)";
    // Check if the expression is correct
    If Expr.Valid
        // If the expression is set correctly, save the model
        Then ModelObj.Save();
        // If the expression is incorrect, display a message to the console window 
        Else System.Diagnostics.Debug.WriteLine("Model is not saved: error in the formula");
    End If;
End Sub;

Example of Use in Expressions

Expression 1:

BpfR({Chicago - population[t]}, NULL, 3, 2, 8, MsBPFOutputType.NonCyclicalSeries)

Result: the Baxter-King filter is applied to the Chicago - population time series. Filter parameters: the filter is calculated at the entire data period, values for lead or lag and seasonality period limits are set for annual data, non-seasonal component of the source series is unloaded after the calculation. R package will be used in calculations.

Use: it can be used in formulas of calculated series of time series database and model formulas of modeling container that is a child of the time series database.

Expression 2:

BpfR(X1, SetPeriod("01.01.2000", "01.01.2015"), 12, 6, 32, MsBPFOutputType.NonCyclicalSeries)

Result: the Baxter-King filter is applied to the X1 factor. Filter parameters are as follows: calculation period is set, values of lead/lag and seasonality period limits are set for quarterly data, after calculation the seasonal component of the source series is unloaded. R package will be used in calculations.

Use: it can be used in model formulas of modeling container.

See also:

IModelling | The Baxter-King Filter Method | Time Series Database: Calculator, Baxter-King filter Modeling Container: The Baxter-King Filter Model, Editing Regressor or Formula