Tsls(Input: ITimeSeries;
Period: IMsPeriod;
ConstantValue: Variant;
AROrder: String;
MAOrder: String;
Casewise: MsCasewise;
Explanatories: Array): Variant;
Tsls(Context: Prognoz.Platform.Interop.Fore.ForeRuntimeContext;
Input: Prognoz.Platform.Interop.Ms.ITimeSeries;
Period: Prognoz.Platform.Interop.Ms.IMsPeriod;
ConstantValue: object;
AROrder: string;
MAOrder: string;
Casewise: Prognoz.Platform.Interop.Ms.MsCasewise;
Explanatories: array of object): object;
Context. Контекст. Параметр используется только в Fore.NET;
Input. Моделируемая переменная;
Period. Период, на котором рассчитывается метод. Если значение параметра Null, то метод рассчитывается на всём временном периоде;
ConstantValue. Константа, используемая в расчетах;
AROrder. Порядок авторегрессии;
MAOrder. Порядок скользящего среднего;
Casewise. Метод обработки пропусков;
Explanatories. Экзогенные и инструментальные переменные;
Метод Tsls осуществляет моделирование переменной с помощью линейной регрессии (оценка методом инструментальных переменных).
Данный метод следует использовать только в векторном режиме расчета.
ConstantValue. Значение константы может быть задано пользователем, либо оценено автоматически. Для автоматической оценки значений используйте метод IModelling.Estimate. Если модель должна быть рассчитана без константы используйте метод IModelling.None.
AROrder, MAOrder. Параметры задаются в строковом виде. Укажите номера или диапазоны порядка авторегрессии/скользящего среднего, разделяя их запятыми. Диапазон порядка авторегрессии/скользящего среднего указывается через знак «-». Например: AROrder = "1-3,5".
MAOrder. Если задан порядок скользящего среднего, то можно использовать ретрополяцию при оценке его коэффициентов. По умолчанию ретрополяция используется. Если ретрополящию необходимо отключить, то параметр MAOrder должен содержать строку «backcast.No». Например: MAOrder = "1-4;backcast.No".
Explanatories. Экзогенные и инструментальные переменные указываются через запятую. Для разделения данных видов переменных используйте значение Null. Инструментальных переменных должно быть не меньше экзогенных.
Для выполнения примера в репозитории предполагается наличие контейнера моделирования с идентификатором «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;
Inp_1, Inp_2: String;
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;
Inp_1 := TermInfo.TermInnerText;
TransVar := Transf.Inputs.Item(1);
Slice := TransVar.Slices.Item(0);
TermInfo := Transf.CreateTermInfo;
TermInfo.Slice := Slice;
TermInfo.Type := MsFormulaTermType.Pointwise;
Inp_2 := TermInfo.TermInnerText;
Expr := Determ.Expression;
Expr.References := "Ms";
Expr.AsString := "Tsls(" + Inp_1 + ", SetPeriod(" +
"""" + "01.01.2000" + """" + "," + """" + "01.01.2015" + """" +
"), Estimate, """ + "1 - 3" + """, """ + "1; 3" +
""", MsCasewise.Yes, " + Inp_2 +
", Null, " + Inp_2 + ")";
If Expr.Valid Then
ModelObj.Save;
Else
Debug.WriteLine("Модель не сохранена: ошибка в формуле");
End If;
End Sub UserProc;
После выполнения примера модель будет выполнять моделирование первой входной переменной с помощью линейной регрессии (оценка методом инструментальных переменных) на периоде с 2000 по 2015 год. Расчёт выполняется с применением обработки пропусков методом Casewise.
Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.
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;
Inp_1, Inp_2: String;
Expr: IExpression;
Begin
Mb := Params.Metabase;
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.mfttPointwise;
Inp_1 := TermInfo.TermInnerText;
TransVar := Transf.Inputs.Item[1];
Slice := TransVar.Slices.Item[0];
TermInfo := Transf.CreateTermInfo();
TermInfo.Slice := Slice;
TermInfo.Type := MsFormulaTermType.mfttPointwise;
Inp_2 := TermInfo.TermInnerText;
Expr := Determ.Expression;
Expr.References := "Ms";
Expr.AsString := "Tsls(" + Inp_1 + ", SetPeriod(" +
"""" + "01.01.2000" + """" + "," + """" + "01.01.2015" + """" +
"), Estimate, """ + "1 - 3" + """, """ + "1; 3" +
""", MsCasewise.Yes, " + Inp_2 +
", Null, " + Inp_2 + ")";
If Expr.Valid Then
ModelObj.Save();
Else
System.Diagnostics.Debug.WriteLine("Модель не сохранена: ошибка в формуле");
End If;
End Sub;
Выражение 1:
Tsls({Brazil|BCA[t]},SetPeriod("01.01.2000","01.01.2015"),Estimate,"","",MsCasewise.Yes,{China|BCA},Null,{Japan|BCA})
Результат: ряд Brazil|BCA будет смоделирован методом линейной регрессии (оценка методом инструментальных переменных) по следующим параметрам: константа оценена методом IModelling.Estimate, порядки авторегрессии и скользящего среднего не заданы, экзогенная переменная - показатель China|BCA, инструментальная переменная - показатель Japan|BCA, расчёт выполняется на периоде с 2000 по 2015 год с применением обработки пропусков методом Casewise.
Применение: можно использовать в формулах вычисляемых рядов базы данных временных рядов и в формулах моделей контейнера моделирования, основанных на атрибутах.
Выражение 2:
Tsls(X1,None,"1","2;backcast.No",MsCasewise.Yes,X4,Null,X2, X3)
Результат: фактор X1 будет смоделирован методом линейной регрессии (оценка методом инструментальных переменных) по следующим параметрам: константа не задана, порядок авторегрессии - «1», порядок скользящего среднего «2», для оценивания коэффициентов скользящего среднего ретрополяция не используется экзогенная переменная - фактор X4, инструментальные переменные - факторы X2 и X3, расчёт выполняется на всём периоде с применением обработки пропусков методом Casewise.
Применение: можно использовать в формулах моделей контейнера моделирования, основанных на переменных.
См. также:
IModelling | Метод инструментальных переменных | База данных временных рядов: калькулятор | Контейнер моделирования: модель «Линейная регрессия (оценка методом инструментальных переменных)», редактирование регрессора/формулы