IModelling.Lag

Синтаксис

Lag(Input: ITimeSeries; [Value: Integer = 1]);

Параметры

Input. Переменная;

Value. Параметр задает сдвиг (лаг) точек переменной во временном периоде.

Описание

Метод Lag осуществляет сдвиг переменной вперёд на заданное количество точек во временном периоде.

Комментарии

Параметр Value может принимать только положительные значения; необязательный параметр, значение по умолчанию: «1» - сдвиг на одну точку.

Пример

Для выполнения примера в репозитории предполагается наличие контейнера моделирования с идентификатором 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;
    TermInfo: IMsFormulaTermInfo;
    Expr: IExpression;
Begin
    // Получаем репозиторий
    Mb := MetabaseClass.Active;
    // Получаем контейнер моделирования
    ModelSpace := Mb.ItemById("MS").Bind;
    // Получаем модель
    ModelObj := Mb.ItemByIdNamespace("MODEL_D", 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);
    TermInfo := Transf.CreateTermInfo;
    TermInfo.Slice := Slice;
    // Задаем режим передачи переменной в расчет
    TermInfo.Type := MsFormulaTermType.Pointwise;
    // Получаем выражение расчета модели
    Expr := Determ.Expression;
    Expr.References := "Ms";
    // Задаем выражение расчета модели
    Expr.AsString := "Lag(" + TermInfo.TermInnerText + ", 2)";
    // Проверяем корректность выражения
    If Expr.Valid
        // Если выражение задано корректно, то сохраняем модель
        Then ModelObj.Save;
        // Если выражение некорректное, то выводим сообщение в окно консоли 
        Else Debug.WriteLine("Модель не сохранена: ошибка в формуле");
    End If;
End Sub UserProc;

В результате выполнения примера модель будет осуществлять сдвиг первой входной переменной на две точки вперед во временном периоде.

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

Выражение 1:

Lag({Brazil|BCA},2)

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

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

Выражение 2:

Lag(X1,3)

Результат: точки фактора «X1» будут сдвинуты на три точки вперед во временном периоде.

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

См. также:

IModelling