IMs2SLSTransform.ARMA

Синтаксис Fore

ARMA: ISlARMA;

Синтаксис Fore.NET

ARMA: Prognoz.Platform.Interop.Stat.ISlARMA;

Описание

Свойство доступно только для чтения.

Свойство ARMA возвращает параметры авторегрессии и скользящего среднего.

Комментарии

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

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

Пример Fore

Для выполнения примера в репозитории предполагается наличие контейнера моделирования с идентификатором «MS», содержащего модель с идентификатором «MODEL_2SLS». Данная модель должна рассчитываться методом «Линейная регрессия (оценка методом инструментальных переменных)».

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

Sub UserProc;
Var
    MB: IMetabase;
    hModel: IMetabaseObjectDescriptor;
    oModel: IMsModel;
    oTransform: IMsFormulaTransform;
    oSelector: IMsFormulaTransformSelector;
    oOutputVariable: IMsFormulaTransformVariable;
    SLS: IMs2SLSTransform;
    ARMA: ISlARMA;
    coo: IMsFormulaTransformCoord;
    calc: IMsMethodCalculation;
    per: IMsModelPeriod;
    AR, MR: Array[1Of Integer;
    CoefficientsAR, CoefficientsMA: ICoefficients;
Begin
    MB := MetabaseClass.Active;
    // Получаем модель линейной регрессии
    hModel := MB.ItemByIdNamespace("MODEL_2SLS", MB.GetObjectKeyById("MS"));
    oModel := hModel.Edit As IMsModel;
    // Получаем параметры расчета
    oTransform := oModel.Transform;
    oSelector := oTransform.CreateSelector;
    // Получаем моделируемую переменную
    oOutputVariable := oTransform.Outputs.Item(0As IMsFormulaTransformVariable;
    oSelector.Slice := oOutputVariable.Slices.Item(0);
    // Настраиваем расчет линейной регрессии
    SLS := oTransform.Transform(oSelector).Method As IMs2SLSTransform;
    ARMA := SLS.ARMA;
    // Задаем порядок авторегрессии
    AR[0] := 3;
    ARMA.OrderAR := AR;
    // Задаем порядок скользящего среднего
    MR[0] := 2;
    ARMA.OrderMA := MR;
    // Задаем максимальное число итераций
    ARMA.MaxIteration := 30;
    // Задаем точность решения
    ARMA.Tolerance := 0.5;
    // Указываем, что при расчете доверительных границ не учитываем,
    // что коэффициенты найдены приближенно
    SLS.CoefUncertaintyInSECalc := False;
    // Задаем параметры обработки пропусков
    SLS.MissingData.Method := MissingDataMethod.LinTrend;
    // Идентифицируем коэффициенты
    coo := oTransform.CreateCoord(oOutputVariable);
    calc := oTransform.CreateCalculation;
    per := calc.Period;
    per.IdentificationStartDate := oModel.Period.IdentificationStartDate;
    per.IdentificationEndDate := oModel.Period.IdentificationEndDate;
    per.ForecastStartDate := oModel.Period.ForecastStartDate;
    per.ForecastEndDate := oModel.Period.ForecastEndDate;
    calc.CurrentPoint := oModel.Period.IdentificationStartDate;
    SLS.Identify(calc, coo);
    // Получаем коэффициенты авторегрессии
    CoefficientsAR := SLS.ARMACoefficients(coo).CoefficientsAR;
    Debug.WriteLine("Коэффициенты авторегрессии");
    Debug.Write("  Значение: ");
    Debug.WriteLine(CoefficientsAR.Estimate[0]);
    Debug.Write("  Стандартная ошибка: ");
    Debug.WriteLine(CoefficientsAR.StandardError[0]);
    Debug.Write("  t-статистика: ");
    Debug.WriteLine(CoefficientsAR.TStatistic[0]);
    Debug.Write("  Вероятность:");
    Debug.WriteLine(CoefficientsAR.Probability[0]);
    // Получаем коэффициенты скользящего среднего
    CoefficientsMA := SLS.ARMACoefficients(coo).CoefficientsMA;
    Debug.WriteLine("Коэффициенты скользящего среднего");
    Debug.Write("  Значение: ");
    Debug.WriteLine(CoefficientsMA.Estimate[0]);
    Debug.Write("  Стандартная ошибка: ");
    Debug.WriteLine(CoefficientsMA.StandardError[0]);
    Debug.Write("  t-статистика: ");
    Debug.WriteLine(CoefficientsMA.TStatistic[0]);
    Debug.Write("  Вероятность:");
    Debug.WriteLine(CoefficientsMA.Probability[0]);
    (oModel As IMetabaseObject).Save;
End Sub UserProc;

После выполнения примера для модели будут определены порядки авторегрессии и скользящего среднего. Также будет изменено максимальное число итераций, точность решения, метод обработки пропусков и параметры расчета доверительных границ. В окно консоли будут выведены значения статистических характеристик, рассчитанных для коэффициентов авторегрессии и скользящего среднего.

Пример Fore.NET

Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.

Imports Prognoz.Platform.Interop.Ms;
Imports Prognoz.Platform.Interop.Stat;

Public Shared Sub Main(Params: StartParams);
Var
    MB: IMetabase;
    hModel: IMetabaseObjectDescriptor;
    oModel: IMsModel;
    oTransform: IMsFormulaTransform;
    oSelector: IMsFormulaTransformSelector;
    oOutputVariable: IMsFormulaTransformVariable;
    SLS: IMs2SLSTransform;
    ARMA: ISlARMA;
    coo: IMsFormulaTransformCoord;
    calc: IMsMethodCalculation;
    per: IMsModelPeriod;
    AR, MR: Array[1Of Integer;
    CoefficientsAR, CoefficientsMA: ICoefficients;
    Estimate, Probability, StandardError, TStatistic: System.Array;
Begin
    MB := Params.Metabase;
    // Получаем модель линейной регрессии
    hModel := MB.ItemByIdNamespace["MODEL_2SLS", MB.GetObjectKeyById("MS")];
    oModel := hModel.Edit() As IMsModel;
    // Получаем параметры расчета
    oTransform := oModel.Transform;
    oSelector := oTransform.CreateSelector();
    // Получаем моделируемую переменную
    oOutputVariable := oTransform.Outputs.Item[0As IMsFormulaTransformVariable;
    oSelector.Slice := oOutputVariable.Slices.Item[0];
    // Настраиваем расчет линейной регрессии
    SLS := oTransform.Transform[oSelector].Method As IMs2SLSTransform;
    ARMA := SLS.ARMA;
    // Задаем порядок авторегрессии
    AR[0] := 3;
    ARMA.OrderAR := AR;
    // Задаем порядок скользящего среднего
    MR[0] := 2;
    ARMA.OrderMA := MR;
    // Задаем максимальное число итераций
    ARMA.MaxIteration := 30;
    // Задаем точность решения
    ARMA.Tolerance := 0.5;
    // Указываем, что при расчете доверительных границ не учитываем,
    // что коэффициенты найдены приближенно
    SLS.CoefUncertaintyInSECalc := False;
    // Задаем параметры обработки пропусков
    SLS.MissingData.Method := MissingDataMethod.mdmLinTrend;
    // Идентифицируем коэффициенты
    coo := oTransform.CreateCoord(oOutputVariable);
    calc := oTransform.CreateCalculation();
    per := calc.Period;
    per.IdentificationStartDate := oModel.Period.IdentificationStartDate;
    per.IdentificationEndDate := oModel.Period.IdentificationEndDate;
    per.ForecastStartDate := oModel.Period.ForecastStartDate;
    per.ForecastEndDate := oModel.Period.ForecastEndDate;
    calc.CurrentPoint := oModel.Period.IdentificationStartDate;
    SLS.Identify(calc, coo);
    // Получаем коэффициенты авторегрессии
    CoefficientsAR := SLS.ARMACoefficients[coo].CoefficientsAR;
    Estimate := CoefficientsAR.Estimate;
    Probability := CoefficientsAR.Probability;
    StandardError := CoefficientsAR.StandardError;
    TStatistic := CoefficientsAR.TStatistic;
    System.Diagnostics.Debug.WriteLine("Коэффициенты авторегрессии");
    System.Diagnostics.Debug.Write("  Значение: ");
    System.Diagnostics.Debug.WriteLine(Estimate[0]);
    System.Diagnostics.Debug.Write("  Стандартная ошибка: ");
    System.Diagnostics.Debug.WriteLine(StandardError[0]);
    System.Diagnostics.Debug.Write("  t-статистика: ");
    System.Diagnostics.Debug.WriteLine(TStatistic[0]);
    System.Diagnostics.Debug.Write("  Вероятность:");
    System.Diagnostics.Debug.WriteLine(Probability[0]);
    // Получаем коэффициенты скользящего среднего
    CoefficientsMA := SLS.ARMACoefficients[coo].CoefficientsMA;
    Estimate := CoefficientsMA.Estimate;
    Probability := CoefficientsMA.Probability;
    StandardError := CoefficientsMA.StandardError;
    TStatistic := CoefficientsMA.TStatistic;
    System.Diagnostics.Debug.WriteLine("Коэффициенты скользящего среднего");
    System.Diagnostics.Debug.Write("  Значение: ");
    System.Diagnostics.Debug.WriteLine(Estimate[0]);
    System.Diagnostics.Debug.Write("  Стандартная ошибка: ");
    System.Diagnostics.Debug.WriteLine(StandardError[0]);
    System.Diagnostics.Debug.Write("  t-статистика: ");
    System.Diagnostics.Debug.WriteLine(TStatistic[0]);
    System.Diagnostics.Debug.Write("  Вероятность:");
    System.Diagnostics.Debug.WriteLine(Probability[0]);
    (oModel As IMetabaseObject).Save();
End Sub;

См. также:

IMs2SLSTransform