Bpf(Input: ITimeSeries;
Period: IMsPeriod;
Lag: Integer;
Low: Integer;
High: Integer;
[Output: MsBPFOutputType = 0]): Variant;
Input. Input variable.
Period. Period, at which the method is calculated
Lag. Lead/lag.
Low. Low value of cycle period.
High. High value of cycle period.
Output. Unloaded component.
The Bpf method models variable values using the Baxter-King filter.
If the Period parameter is set to Null, the method is executed at entire time period.
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 |
Executing the example requires that the repository contains a modeling container with the MS identifier. This container includes a model with the MODEL_D identifier that is calculated by the determinate equation method and contains at least one input variable. The model should have annual frequency.
Add links to the Metabase and Ms system assemblies.
Sub UserBpf;
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 := "Bpf(" + 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 UserBpf;
After executing the example the model will calculate values based on the first input variable by the Baxter-King filter for the period 2000-2015. The non-cyclical series of input variable will be loaded to the output variable.
Expression 1:
Bpf({Chicago - population[t]}, NULL, 3, 2, 8, MsBPFOutputType.NonCyclicalSeries)
Result: the Baxter-King filter is applied to the Chicago - population time series at the entire time period. 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 loaded after the calculation.
Use: it can be used in formulas of cross functional expression editor in any platform tool where it is available.
Expression 2:
Bpf(X1, SetPeriod("01.01.2000", "01.01.2015"), 13, 6, 32, MsBPFOutputType.NonCyclicalSeries)
Result: the Baxter-King filter is applied to the X1 factor at the period 2000-2015. 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 loaded.
Use: it can be used in model formulas of modeling container based on variables.
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