PDLStatCoefficients(Coord: IMsFormulaTransformCoord; Index: Integer): IMsPDLCoefficients;
Coord. Срез моделируемой переменной, для которого осуществляется расчет;
Index. Индекс лаговой переменной.
Свойство PDLStatCoefficients возвращает коэффициенты для лаговых переменных.
Перед получением коэффициентов они должны быть идентифицированы. Для этого используйте IMsStochasticMethod.Identify.
Для выполнения примера предполагается наличие контейнера моделирования с идентификатором CONT_MODEL. Контейнер содержит модель линейной регрессии (оценка МНК) с идентификатором MODEL, содержащей несколько факторов. Добавьте ссылки на системные сборки: Metabase, Ms, Stat.
Sub UserProc;
Var
mb: IMetabase;
ContModelDescr: IMetabaseObjectDescriptor;
ModelObj: IMetabaseObject;
pModel: IMsModel;
pTransform: IMsFormulaTransform;
pFormula: IMsFormula;
pRegress: IMsLinearRegressionTransform;
Term: IMsCompositeFormulaTerm;
pPDLTerm: IMsPDLTermOptions;
pVar: IMsFormulaTransformVariable;
pCalc: IMsMethodCalculation;
pCoord: IMsFormulaTransformCoord;
PDLCoeff: IMsPDLCoefficients;
Begin
mb := MetabaseClass.Active;
ContModelDescr := mb.ItemById("CONT_MODEL");
ModelObj := mb.ItemByIdNamespace("MODEL", ContModelDescr.Key).Edit;
pModel := ModelObj As IMsModel;
pTransform := pModel.Transform;
pFormula := pTransform.FormulaItem(0);
pRegress := pFormula.Method As IMsLinearRegressionTransform;
Term := pRegress.Explanatories.Item(0);
pPDLTerm := Term.CustomOptions As IMsPDLTermOptions;
pPDLTerm.IsPDLTerm := True;
pPDLTerm.LagLengthK := 3;
pPDLTerm.PolinomialDegreeP := 1;
pPDLTerm.PDLConstraint := PDLConstraintType.Both;
ModelObj.Save;
pCalc := pTransform.CreateCalculation;
pCalc.Period.IdentificationStartDate := DateTime.ComposeDay(2000, 1, 1);
pCalc.Period.IdentificationEndDate := DateTime.ComposeDay(2010, 12, 31);
pCalc.Period.ForecastStartDate := DateTime.ComposeDay(2011, 1, 1);
pCalc.Period.ForecastEndDate := DateTime.ComposeDay(2015, 12, 31);
pVar := pTransform.Outputs.Item(0);
pCoord := pTransform.CreateCoord(pVar);
pRegress.Identify(pCalc, pCoord);
PDLCoeff := pRegress.PDLStatCoefficients(pCoord, 0);
Debug.WriteLine("Сумма коэффициентов: " + PDLCoeff.EstimatesSum.ToString);
Debug.WriteLine("Сумма стандартных ошибок: " + PDLCoeff.StdErrSum.ToString);
Debug.WriteLine("Сумма t-статистик: " + PDLCoeff.TStatSum.ToString);
End Sub UserProc;
После выполнения примера первый регрессор модели будет преобразован в лаговую переменную. Для переменной будут заданы лаг, степень полинома и тип ограничения. Модель будет сохранена, её коэффициенты будут идентифицированы, в окно консоли будут выведены коэффициенты созданной лаговой переменной.
См. также: