IModelling.InterpolateP

Синтаксис

InterpolateP(Input: ITimeSeries;

             TargetFrequency: MsFrequency;

             Pattern: ITimeSeries;

             [PatternType: MsPatternType = 0;]

             [Period: IMsPeriod = Null]): Variant;

Параметры

Input. Исходная переменная;

TargetFrequency. Результирующая динамика;

Pattern. Шаблонная переменная, по которой будет выполняться интерполяция;

PatternType. Вид шаблона, по которому производится интерполяция;

Period. Период, на котором рассчитывается метод.

Описание

Метод InterpolateP осуществляет интерполяцию по шаблону значений переменной.

Комментарии

Особенности задания параметров:

При дезагрегации данных учитываются настройки календарной динамики: смещение начала периода относительно его начала/конца.

Пример дезагрегации данных с недельной на дневную динамику

Пример

Для выполнения примера в репозитории предполагается наличие контейнера моделирования с идентификатором MS. В данном контейнере содержится модель детерминированного уравнения с годовой динамикой с идентификатором MODEL_D. Данная модель должна содержать несколько факторов. Каждый фактор должен содержать годовую и квартальную динамику.

Добавьте ссылки на системные сборки: Metabase, Ms.

Sub UserProc;
Var
    Mb: IMetabase;
    ModelSpace, ModelObj: IMetabaseObject;
    Transf: IMsFormulaTransform;
    Formula: IMsFormula;
    Model: IMsModel;
    Determ: IMsDeterministicTransform;
    TransVar: IMsFormulaTransformVariable;
    Slice: IMsFormulaTransformSlice;
    InputTerm, PatternTerm: IMsFormulaTermInfo;
    Expr: IExpression;
Begin
    Mb := MetabaseClass.Active;
    ModelSpace := Mb.ItemById("CONT_MODEL").Bind;
    ModelObj := Mb.ItemByIdNamespace("M_DETERM", ModelSpace.Key).Edit;
    Model := ModelObj As IMsModel;
    Transf := Model.Transform;
    Formula := Transf.FormulaItem(0);
    Determ := Formula.Method As IMsDeterministicTransform;
    TransVar := Transf.Inputs.Item(0);
    Slice := TransVar.Slices.Item(0);
    InputTerm := Transf.CreateTermInfo;
    InputTerm.Slice := Slice;
    TransVar := Transf.Inputs.Item(1);
    Slice := TransVar.Slices.Item(0);
    PatternTerm := Transf.CreateTermInfo;
    Slice.Level := DimCalendarLevel.Quarter;
    PatternTerm.Slice := Slice;
    Expr := Determ.Expression;
    Expr.References := "Ms";
    Expr.AsString := "InterpolateP(" + InputTerm.TermInnerText + ",MsFrequency.Quarterly," +
        PatternTerm.TermInnerText + ",MsPatternType.First,SetPeriod(" +
        """" + "01.01.2000" + """" + "," + """" + "01.01.2015" + """" + "))";
    If Expr.Valid
        Then ModelObj.Save;
        Else Debug.WriteLine("Модель не сохранена: ошибка в формуле");
   End If;
End Sub UserProc;

В результате выполнения примера модель будет интерполировать данные первой входной переменной с годовой динамики на квартальную на периоде с 2000 по 2015 год. Для интерполяции будет использоваться шаблон, заданный второй входной переменной.

Пример использования в выражениях

Выражение 1:

InterpolateP({Brazil|BCA[t]},MsFrequency.Quarterly,{China|BCA[t]})

Результат: данные ряда «Brazil|BCA» будут дезагрегированы на квартальную динамику по шаблону, заданному рядом «China|BCA» на всём временном периоде.

Применение: можно использовать в формулах универсального редактора выражения в любом инструменте платформы, где он доступен.

Выражение 2:

InterpolateP(X1,MsFrequency.Monthly,X2,MsPatternType.Last, SetPeriod("01.01.2000","01.01.2015"))

Результат: данные фактора «X1» будут дезагрегированы на месячную динамику по последнему элементу шаблона, заданного фактором «X2» на периоде с 2000 по 2015 год.

Применение: можно использовать в формулах моделей контейнера моделирования, основанных на переменных.

См. также:

IModelling | Методы интерполяции | База данных временных рядов: калькулятор, Интерполяция | Контейнер моделирования: модель «Интерполяция», редактирование регрессора/формулы