IMsCensus1Transform.CenterMovingAverage

Синтаксис Fore

CenterMovingAverage: Boolean;

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

CenterMovingAverage: boolean;

Описание

Свойство CenterMovingAverage определяет, центрировать ли скользящее среднее.

Комментарии

Допустимые значения:

Пример Fore

Для выполнения примера в репозитории предполагается наличие контейнера моделирования с идентификатором «MODEL_SPACE», содержащего модель с идентификатором «MODEL_CENSUS1» и переменную с идентификатором «OUTPUT_VAR_CENSUS». Переменная должна содержать квартальные данные.

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

Sub Census1;
Var
    mb: IMetabase;
    MsObj: IMetabaseObjectDescriptor;
    Model: IMsModel;
    Transform: IMsFormulaTransform;
    Vars: IMsFormulaTransformVariables;
    OutputStub: IVariableStub;
    OutputVar: IMsFormulaTransformVariable;
    Coord: IMsFormulaTransformCoord;
    Slice: IMsFormulaTransformSlice;
    Selector: IMsFormulaTransformSelector;
    Formula: IMsFormula;
    Census1: IMsCensus1Transform;
    Calc: IMsMethodCalculation;
    Data: Array Of Double;
Begin
    mb := MetabaseClass.Active;
    // Получаем контейнер моделирования
    MsObj := mb.ItemById("MODEL_SPACE");
    // Получаем модель
    Model := mb.ItemByIdNamespace("MODEL_CENSUS1", MsObj.Key).Edit As IMsModel;
    // Получаем параметры модели
    Transform := Model.Transform;
    // Задаем моделируемую переменную
    Vars := Transform.Outputs;
    Vars.Clear;
    OutputStub := mb.ItemByIdNamespace("OUTPUT_VAR_CENSUS", MsObj.Key).Edit As IVariableStub;
    OutputVar := Vars.Add(OutputStub);
    // Получаем параметры метода расчета модели
    Coord := Transform.CreateCoord(OutputVar);
    Slice := OutputVar.Slices.Add(Null);
    Selector := Transform.CreateSelector;
    Selector.Slice := Slice;
    Formula := Transform.Transform(Selector);
    // Задаем календарную динамику расчета
    Formula.Level := DimCalendarLevel.Quarter;
    // Задаем метод расчёта модели
    Formula.Kind := MsFormulaKind.Census1;
    // Получаем параметры расчёта метода Census1
    Census1 := Formula.Method As IMsCensus1Transform;
    // Задаем тип сезонности
    Census1.Seasonality := SeasonalityType.Additive;
    // Центрируем скользящее среднее
    Census1.CenterMovingAverage := True;
    // Задаем параметры обработки пропусков
    Census1.MissingData.Method := MissingDataMethod.LinTrend;
    Census1.OutputType := MsCensus1OutputType.RD;
    // Сохраняем изменения
    (Model As IMetabaseObject).Save;
    // Задаем параметры периода расчёта
    Calc := Transform.CreateCalculation;
    Calc.Period.IdentificationStartDate := model.Period.IdentificationStartDate;
    Calc.Period.IdentificationEndDate := model.Period.IdentificationEndDate;
    Calc.Period.ForecastStartDate := model.Period.ForecastStartDate;
    Calc.Period.ForecastEndDate := model.Period.ForecastEndDate;
    // Выполняем расчет
    Census1.Execute(Calc, Coord);
    // Выводим результаты расчета
    Data := Census1.Explained.Serie(Calc);
    Debug.WriteLine("Смоделированные данные");
    Print(Data); Debug.WriteLine("");
    Data := Census1.MovingAverage;
    Debug.WriteLine("Сглаженный ряд");
    Print(Data); Debug.WriteLine("");
    Data := Census1.RatioDifferences;
    Debug.WriteLine("Разность");
    Print(Data); Debug.WriteLine("");
    Data := Census1.Seasonal;
    Debug.WriteLine("Сезонная составляющая");
    Print(Data); Debug.WriteLine("");
    Data := Census1.SeasonalAdjustment;
    Debug.WriteLine("Сезонная корректировка");
    Print(Data); Debug.WriteLine("");
    Data := Census1.TrendCycle;
    Debug.WriteLine("Тренд-циклическая составляющая");
    Print(Data); Debug.WriteLine("");
    Data := Census1.Irregula;
    Debug.WriteLine("Нерегулярная компонента");
    Print(Data); Debug.WriteLine("");
End Sub Census1;

// Процедура вывода данных
Sub Print(Data: Array Of Double);
Var
    i: Integer;
Begin
    Debug.Indent;
    For i := 0 To Data.Length - 1 Do
        Debug.WriteLine(i.ToString + " " + Data[i].ToString);
    End For;
    Debug.Unindent;
End Sub Print;

Результат выполнения примера: модель «MODEL_SPACE» настроена на расчёт метода «Census1», модель рассчитана, результаты выведены в окно консоли.

Пример Fore.NET

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

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


Public Shared Sub Main(Params: StartParams);
Var
    mb: IMetabase;
    MsObj: IMetabaseObjectDescriptor;
    Model: IMsModel;
    Transform: IMsFormulaTransform;
    Vars: IMsFormulaTransformVariables;
    OutputStub: IVariableStub;
    OutputVar: IMsFormulaTransformVariable;
    Coord: IMsFormulaTransformCoord;
    Slice: IMsFormulaTransformSlice;
    Selector: IMsFormulaTransformSelector;
    Formula: IMsFormula;
    Census1: IMsCensus1Transform;
    Calc: IMsMethodCalculation;
    Data: System.Array;
Begin
    mb := Params.Metabase;
    // Получаем контейнер моделирования
    MsObj := mb.ItemById["MODEL_SPACE"];
    // Получаем модель
    Model := mb.ItemByIdNamespace["MODEL_CENSUS1", MsObj.Key].Edit() As IMsModel;
    // Получаем параметры модели
    Transform := Model.Transform;
    // Задаем моделируемую переменную
    Vars := Transform.Outputs;
    Vars.Clear();
    OutputStub := mb.ItemByIdNamespace["OUTPUT_VAR_CENSUS", MsObj.Key].Edit() As IVariableStub;
    OutputVar := Vars.Add(OutputStub);
    // Получаем параметры метода расчета модели
    Coord := Transform.CreateCoord(OutputVar);
    Slice := OutputVar.Slices.Add(Null);
    Selector := Transform.CreateSelector();
    Selector.Slice := Slice;
    Formula := Transform.Transform[Selector];
    // Задаем календарную динамику расчета
    Formula.Level := DimCalendarLevel.dclQuarter;
    // Задаем метод расчёта модели
    Formula.Kind := MsFormulaKind.mfkCensus1;
    // Получаем параметры расчёта метода Census1
    Census1 := Formula.Method As IMsCensus1Transform;
    // Задаем тип сезонности
    Census1.Seasonality := SeasonalityType.sstAdditive;
    // Центрируем скользящее среднее
    Census1.CenterMovingAverage := True;
    // Задаем параметры обработки пропусков
    Census1.MissingData.Method := MissingDataMethod.mdmLinTrend;
    Census1.OutputType := MsCensus1OutputType.mc1otRD;
    // Сохраняем изменения
    (Model As IMetabaseObject).Save();
    // Задаем параметры периода расчёта
    Calc := Transform.CreateCalculation();
    Calc.Period.IdentificationStartDate := model.Period.IdentificationStartDate;
    Calc.Period.IdentificationEndDate := model.Period.IdentificationEndDate;
    Calc.Period.ForecastStartDate := model.Period.ForecastStartDate;
    Calc.Period.ForecastEndDate := model.Period.ForecastEndDate;
    // Выполняем расчет
    Census1.Execute(Calc, Coord);
    // Выводим результаты расчета
    Data := Census1.Explained.Serie[Calc];
    System.Diagnostics.Debug.WriteLine("Смоделированные данные");
    Print(Data); System.Diagnostics.Debug.WriteLine("");
    Data := Census1.MovingAverage;
    System.Diagnostics.Debug.WriteLine("Сглаженный ряд");
    Print(Data); System.Diagnostics.Debug.WriteLine("");
    Data := Census1.RatioDifferences;
    System.Diagnostics.Debug.WriteLine("Разность");
    Print(Data); System.Diagnostics.Debug.WriteLine("");
    Data := Census1.Seasonal;
    System.Diagnostics.Debug.WriteLine("Сезонная составляющая");
    Print(Data); System.Diagnostics.Debug.WriteLine("");
    Data := Census1.SeasonalAdjustment;
    System.Diagnostics.Debug.WriteLine("Сезонная корректировка");
    Print(Data); System.Diagnostics.Debug.WriteLine("");
    Data := Census1.TrendCycle;
    System.Diagnostics.Debug.WriteLine("Тренд-циклическая составляющая");
    Print(Data); System.Diagnostics.Debug.WriteLine("");
    Data := Census1.Irregula;
    System.Diagnostics.Debug.WriteLine("Нерегулярная компонента");
    Print(Data); System.Diagnostics.Debug.WriteLine("");
End Sub;

// Процедура вывода данных
Public Shared Sub Print(Data: System.Array);
Var
    i: Integer;
Begin
    System.Diagnostics.Debug.Indent();
    For i := 0 To Data.Length - 1 Do
        System.Diagnostics.Debug.WriteLine(i.ToString() + " " + Data[i].ToString());
    End For;
    System.Diagnostics.Debug.Unindent();
End Sub Print;

См. также:

IMsCensus1Transform