PDLStatCoefficients(Coord: IMsFormulaTransformCoord; Index: Integer): IMsPDLCoefficients;
PDLStatCoefficients
(Coord: Prognoz.Platform.Interop.Ms.IMsFormulaTransformCoord,
Index: System.Int32): Prognoz.Platform.Interop.Ms.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;
После выполнения примера первый регрессор модели будет преобразован в лаговую переменную. Для переменной будут заданы лаг, степень полинома и тип ограничения. Модель будет сохранена, её коэффициенты будут идентифицированы, в окно консоли будут выведены коэффициенты созданной лаговой переменной.
См. также: