IMsMetaModelVisualController.JohansenTest

Синтаксис Fore

JohansenTest: IMsVariableTest

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

JohansenTest: Prognoz.Platform.Interop.Ms.IMsVariableTest;

Описание

Свойство JohansenTest возвращает параметры расчёта теста Йохансена.

Комментарии

Для настройки параметров расчёта используйте интерфейс IMsJohansenTestSettings.

Пример Fore

Для выполнения примера в репозитории предполагается наличие контейнера моделирования с идентификатором «MS», содержащего задачу моделирования с идентификатором «WEB_PROBLEM». Задача должна содержать внутреннюю метамодель. Метамодель должна содержать не менее трех внутренних переменных.

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

Sub JohansenTest;
Var
    mb: IMetabase;
    msKey: Integer;
    Problem: IMsProblem;
    Meta: IMsMetaModel;
    MetaVisual: IMsMetaModelVisualController;
    ChainEnts: IMsCalculationChainEntries;
    ChainEl: IMsCalculationChainEntry;
    Test: IMsVariableTest;
    CommonSett: IMsVariableTestSettings;
    InclSrc: IMsVariableTestDataList;
    VarArray: Array Of Variant;
    i, j: Integer;
    TestData: IMsVariableTestData;
    Johansen: IMsJohansenTestSettings;
    TestRes: IMsVariableTestResults;
    Res: Array;
Begin
    mb := MetabaseClass.Active;
    // Получаем ключ контейнера моделирования
    msKey := mb.GetObjectKeyById("MS");
    // Получаем задачу моделирования
    Problem := mb.ItemByIdNamespace("WEB_PROBLEM", msKey).Bind As IMsProblem;
    // Получаем метамодель
    Meta := Problem.MetaModel;
    MetaVisual := Meta.VisualController;
    // Получаем переменные метамодели
    ChainEnts := Meta.CalculationChain;
    j := 0;
    VarArray := New Variant[ChainEnts.Count];
    For i := 0 To ChainEnts.Count - 1 Do
        ChainEl := ChainEnts.Item(i);
        If ChainEl.Type = MsCalculationChainEntryType.Variable Then
            VarArray[j] := ChainEl;
            j := j + 1;
        End If;
    End For;
    // Задаем эндогенные переменные для расчёта теста
    For i := 1 To j - 1 Do
        ChainEl := VarArray[i] As IMsCalculationChainEntry;
        MetaVisual.AddTestIncludedEntrie(ChainEl.Key, MsVariableTestType.Johansen);
    End For;
    // Задаем экзогенные переменные для расчёта теста
    ChainEl := VarArray[0As IMsCalculationChainEntry;
    MetaVisual.AddJohansenTestExogenousEntrie(ChainEl.Key);
    // Задаем общие параметры расчёта описательных статистик
    Test := MetaVisual.JohansenTest;
    CommonSett := Test.Settings;
    // Период расчёта
    CommonSett.StartDate := DateTime.Parse("01.01.1990");
    CommonSett.EndDate := DateTime.Parse("01.01.2015");
    // Метод обработки пропусков
    CommonSett.MissingData.Method := MissingDataMethod.LinTrend;
    // Задаем параметры расчёта теста Йохансена
    Johansen := CommonSett As IMsJohansenTestSettings;
    // Задаем порядок авторегрессии
    Johansen.AutoRegressionOrder := "1";
    // Задаем тип модели коррекции ошибок
    Johansen.ModelType := ECMType.TrendTrend;
    // Выводим информацию о тестируемых переменных
    InclSrc := Johansen.IncludedSources;
    Debug.WriteLine("Эндогенные переменные:");
    For i := 0 To InclSrc.Count - 1 Do
        TestData := InclSrc.Item(i);
        Debug.WriteLine("    " + TestData.Name);
    End For;
    Debug.WriteLine("Экзогенная переменная:");
    InclSrc := Johansen.ExogenousSources;
    TestData := InclSrc.Item(0);
    Debug.WriteLine("    " + TestData.Name);
    // Выполняем расчёт теста
    TestRes := Test.Execute;
    // Выводим результаты
    If TestRes.Error <> "" Then
        Debug.WriteLine(TestRes.Error);
    Else
        Res := TestRes.ResValueMatrix;
        Debug.WriteLine("");
        Debug.WriteLine("Тест Йохансена");
        Debug.WriteLine("");
        For i := 0 To Res.GetUpperBound(1Do
            Select Case i
                Case 0: Debug.Write("Связи: ");
                Case 1: Debug.Write("Собственное значение: ");
                Case 2: Debug.Write("Отношение максимального правдоподобия: ");
                Case 3: Debug.Write("Критическое значение 1%: ");
                Case 4: Debug.Write("   Гипотеза принимается: ");
                Case 5: Debug.Write("Критическое значение 5%: ");
                Case 6: Debug.Write("   Гипотеза принимается: ");
                Case 7: Debug.Write("Критическое значение 10%: ");
                Case 8: Debug.Write("    Гипотеза принимается: ");
                Case 9: Debug.Write("Вероятность: ");
            End Select;
            For j := 0 To Res.GetUpperBound(2Do
                Debug.Write(Res[i, j]); Debug.Write(";    ");
            End For;
            Debug.WriteLine("");
        End For;
    End If;
End Sub JohansenTest;

Результат выполнения примера: для всех переменных, которые содержатся в цепочке расчёта метамодели, рассчитан тест Йохансена. Результаты выведены в окно консоли.

Пример 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;
    Problem: IMsProblem;
    Meta: IMsMetaModel;
    MetaVisual: IMsMetaModelVisualController;
    ChainEnts: IMsCalculationChainEntries;
    ChainEl: IMsCalculationChainEntry;
    Test: IMsVariableTest;
    CommonSett: IMsVariableTestSettings;
    InclSrc: IMsVariableTestDataList;
    VarArray: Array Of Object;
    i, j: Integer;
    TestData: IMsVariableTestData;
    Johansen: IMsJohansenTestSettings;
    TestRes: IMsVariableTestResults;
    Res: Array;
Begin
    mb := Params.Metabase;
    // Получаем ключ контейнера моделирования
    msKey := mb.GetObjectKeyById("MS");
    // Получаем задачу моделирования
    Problem := mb.ItemByIdNamespace["WEB_PROBLEM", msKey].Bind() As IMsProblem;
    // Получаем метамодель
    Meta := Problem.MetaModel;
    MetaVisual := Meta.VisualController;
    // Получаем переменные метамодели
    ChainEnts := Meta.CalculationChain;
    j := 0;
    VarArray := New Object[ChainEnts.Count];
    For i := 0 To ChainEnts.Count - 1 Do
        ChainEl := ChainEnts.Item[i];
        If ChainEl.Type = MsCalculationChainEntryType.mccetVariable Then
            VarArray[j] := ChainEl;
            j := j + 1;
        End If;
    End For;
    // Задаем эндогенные переменные для расчёта теста
    For i := 1 To j - 1 Do
        ChainEl := VarArray[i] As IMsCalculationChainEntry;
        MetaVisual.AddTestIncludedEntrie(ChainEl.Key, MsVariableTestType.mvttJohansen);
    End For;
    // Задаем экзогенные переменные для расчёта теста
    ChainEl := VarArray[0As IMsCalculationChainEntry;
    MetaVisual.AddJohansenTestExogenousEntrie(ChainEl.Key);
    // Задаем общие параметры расчёта описательных статистик
    Test := MetaVisual.JohansenTest;
    CommonSett := Test.Settings;
    // Период расчёта
    CommonSett.StartDate := DateTime.Parse("01.01.1990");
    CommonSett.EndDate := DateTime.Parse("01.01.2015");
    // Метод обработки пропусков
    CommonSett.MissingData.Method := MissingDataMethod.mdmLinTrend;
    // Задаем параметры расчёта теста Йохансена 
    Johansen := CommonSett As IMsJohansenTestSettings;
    // Задаем порядок авторегрессии
    Johansen.AutoRegressionOrder := "1";
    // Задаем тип модели коррекции ошибок
    Johansen.ModelType := ECMType.ecmtTrendTrend;
    // Выводим информацию о тестируемых переменных
    InclSrc := Johansen.IncludedSources;
    System.Diagnostics.Debug.WriteLine("Эндогенные переменные:");
    For i := 0 To InclSrc.Count - 1 Do
        TestData := InclSrc.Item[i];
        System.Diagnostics.Debug.WriteLine("    " + TestData.Name);
    End For;
    System.Diagnostics.Debug.WriteLine("Экзогенная переменная:");
    InclSrc := Johansen.ExogenousSources;
    TestData := InclSrc.Item[0];
    System.Diagnostics.Debug.WriteLine("    " + TestData.Name);
    // Выполняем расчёт теста
    TestRes := Test.Execute();
    // Выводим результаты
    If TestRes.Error <> "" Then
        System.Diagnostics.Debug.WriteLine(TestRes.Error);
    Else
        Res := TestRes.ResValueMatrix;
        System.Diagnostics.Debug.WriteLine("");
        System.Diagnostics.Debug.WriteLine("Тест Йохансена");
        System.Diagnostics.Debug.WriteLine("");
        For i := 0 To Res.GetUpperBound(1Do
            Select Case i
                Case 0: System.Diagnostics.Debug.Write("Связи: ");
                Case 1: System.Diagnostics.Debug.Write("Собственное значение: ");
                Case 2: System.Diagnostics.Debug.Write("Отношение максимального правдоподобия: ");
                Case 3: System.Diagnostics.Debug.Write("Критическое значение 1%: ");
                Case 4: System.Diagnostics.Debug.Write("   Гипотеза принимается: ");
                Case 5: System.Diagnostics.Debug.Write("Критическое значение 5%: ");
                Case 6: System.Diagnostics.Debug.Write("   Гипотеза принимается: ");
                Case 7: System.Diagnostics.Debug.Write("Критическое значение 10%: ");
                Case 8: System.Diagnostics.Debug.Write("    Гипотеза принимается: ");
                Case 9: System.Diagnostics.Debug.Write("Вероятность: ");
            End Select;
            For j := 0 To Res.GetUpperBound(0Do
                System.Diagnostics.Debug.Write(Res[j, i]); System.Diagnostics.Debug.Write(";    ");
            End For;
            System.Diagnostics.Debug.WriteLine("");
        End For;
    End If;
End Sub;

См. также:

IMsMetaModelVisualController