IMsArimaTransform.DiagnosticTests

Синтаксис Fore

DiagnosticTests(

[Calculation: IMsMethodCalculation = Null;]

[Coord: IMsFormulaTransformCoord = Null]): IMsDiagnosticTestList;

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

DiagnosticTests[

Calculation: Prognoz.Platform.Interop.Ms.IMsMethodCalculation;

Coord: Prognoz.Platform.Interop.Ms.IMsFormulaTransformCoord]: Prognoz.Platform.Interop.Ms.IMsDiagnosticTestList;

Параметры

Calculation. Настройки, необходимые для расчета;

Coord. Срез, по которому осуществляется расчет.

Описание

Свойство DiagnosticTests возвращает набор диагностических тестов модели.

Комментарии

Набор тестов нельзя изменить, то есть нельзя удалить существующий или добавить собственный тест.

Пример Fore

Для выполнения примера в репозитории предполагается наличие контейнера моделирования с идентификатором MS, содержащего модель ARIMA с идентификатором MODEL.

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

Sub UserProc;
Var
    mb: IMetabase;
    MsKey: Integer;
    Model: IMsModel;
    Transform: IMsFormulaTransform;
    Formula: IMsFormula;
    Arima: IMsArimaTransform;
    TestList: IMsDiagnosticTestList;
    Test: IMsDiagnosticTest;
    DSettings: IMsRamseyRessetTestSettings;
    VarTrans: IMsFormulaTransformVariable;
    Coord: IMsFormulaTransformCoord;
    Calc: IMsMethodCalculation;
    DResults: IMsDiagnosticTestResults;
    Stat: ISpecificationTestStatistic;
Begin
    MB := MetabaseClass.Active;
    // Получаем ключ контейнера моделирования
    MsKey := MB.GetObjectKeyById("MS");
    // Получаем модель
    Model := MB.ItemByIdNamespace("MODEL", MsKey).Bind As IMsModel;
    // Получаем параметры расчета модели
    Transform := Model.Transform;
    Formula := Transform.FormulaItem(0);
    Arima := Formula.Method As IMsArimaTransform;
    // Получаем набор диагностических тестов модели
    TestList := Arima.DiagnosticTests;
    // Находим тест «Критерий функциональной формы»
    Test := TestList.FindByType(MsDiagnosticTestType.RamseyResset);
    // Получаем параметры теста
    DSettings := Test.Settings As IMsRamseyRessetTestSettings;
    // Задаем число дополнительных регрессоров, входящих в тестовую регрессию.
    DSettings.Power := 3;
    // Задаем параметры тестирования
    VarTrans := Transform.Outputs.Item(0);
    Coord := Transform.CreateCoord(VarTrans);
    Calc := Model.CreateCalculation As IMsMethodCalculation;
    Calc.Period.IdentificationStartDate := DateTime.ComposeDay(19900101);
    Calc.Period.IdentificationEndDate := DateTime.ComposeDay(20071231);
    Calc.Period.ForecastStartDate := DateTime.ComposeDay(20080101);
    Calc.Period.ForecastEndDate := DateTime.ComposeDay(20101231);
    // Выполняем тестирование
    DResults := Test.Execute(Calc As IMsMethodCalculation, Coord);
    // Выводим результаты теста
    Stat := DResults.ChiTest;
    Debug.WriteLine("-- Статистика Хи-квадрат --");
    Debug.Write("     Значение: ");
    Debug.WriteLine(Stat.Statistic);
    Debug.Write("     Вероятность: ");
    Debug.WriteLine(Stat.Probability);
    Stat := DResults.FTest;
    Debug.WriteLine("-- Статистика Фишера --");
    Debug.Write("     Значение: ");
    Debug.WriteLine(Stat.Statistic);
    Debug.Write("     Вероятность: ");
    Debug.WriteLine(Stat.Probability);
End Sub UserProc;

После выполнения примера для модели MODEL будет выполнен диагностический тест «Критерий функциональной формы», результаты тестирования будут выведены в окно консоли.

Пример Fore.NET

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

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

Public Shared Sub Main(Params: StartParams);
Var
    mb: IMetabase;
    MsKey: uinteger;
    Model: IMsModel;
    Transform: IMsFormulaTransform;
    Formula: IMsFormula;
    Arima: IMsArimaTransform;
    TestList: IMsDiagnosticTestList;
    Test: IMsDiagnosticTest;
    DSettings: IMsRamseyRessetTestSettings;
    VarTrans: IMsFormulaTransformVariable;
    Coord: IMsFormulaTransformCoord;
    Calc: IMsMethodCalculation;
    DResults: IMsDiagnosticTestResults;
    Stat: ISpecificationTestStatistic;
Begin
    MB := Params.Metabase;
    // Получаем ключ контейнера моделирования
    MsKey := MB.GetObjectKeyById("MS");
    // Получаем модель
    Model := MB.ItemByIdNamespace["MODEL", MsKey].Bind() As IMsModel;
    // Получаем параметры расчета модели
    Transform := Model.Transform;
    Formula := Transform.FormulaItem[0];
    Arima := Formula.Method As IMsArimaTransform;
    // Получаем набор диагностических тестов модели
    TestList := Arima.DiagnosticTests[NullNull];
    // Находим тест «Критерий функциональной формы»
    Test := TestList.FindByType[MsDiagnosticTestType.mdttRamseyResset];
    // Получаем параметры теста
    DSettings := Test.Settings As IMsRamseyRessetTestSettings;
    // Задаем число дополнительных регрессоров, входящих в тестовую регрессию.
    DSettings.Power := 3;
    // Задаем параметры тестирования
    VarTrans := Transform.Outputs.Item[0];
    Coord := Transform.CreateCoord(VarTrans);
    Calc := Model.CreateCalculation() As IMsMethodCalculation;
    Calc.Period.IdentificationStartDate := DateTime.Parse("1990.01.01");
    Calc.Period.IdentificationEndDate := DateTime.Parse("2007.12.31");
    Calc.Period.ForecastStartDate := DateTime.Parse("2008.01.01");
    Calc.Period.ForecastEndDate := DateTime.Parse("2010.12.31");
    // Выполняем тестирование
    DResults := Test.Execute(Calc As IMsMethodCalculation, Coord);
    // Выводим результаты теста
    Stat := DResults.ChiTest;
    System.Diagnostics.Debug.WriteLine("-- Статистика Хи-квадрат --");
    System.Diagnostics.Debug.Write("     Значение: ");
    System.Diagnostics.Debug.WriteLine(Stat.Statistic);
    System.Diagnostics.Debug.Write("     Вероятность: ");
    System.Diagnostics.Debug.WriteLine(Stat.Probability);
    Stat := DResults.FTest;
    System.Diagnostics.Debug.WriteLine("-- Статистика Фишера --");
    System.Diagnostics.Debug.Write("     Значение: ");
    System.Diagnostics.Debug.WriteLine(Stat.Statistic);
    System.Diagnostics.Debug.Write("     Вероятность: ");
    System.Diagnostics.Debug.WriteLine(Stat.Probability);
End Sub;

См. также:

IMsArimaTransform