DiagnosticTests(
[Calculation: IMsMethodCalculation = Null;]
[Coord: IMsFormulaTransformCoord = Null]): IMsDiagnosticTestList;
DiagnosticTests[
Calculation: Prognoz.Platform.Interop.Ms.IMsMethodCalculation;
Coord: Prognoz.Platform.Interop.Ms.IMsFormulaTransformCoord]: Prognoz.Platform.Interop.Ms.IMsDiagnosticTestList;
Calculation. Настройки, необходимые для расчета;
Coord. Срез, по которому осуществляется расчет.
Свойство DiagnosticTests возвращает набор диагностических тестов модели.
Набор тестов нельзя изменить, то есть нельзя удалить существующий или добавить собственный тест.
Для выполнения примера в репозитории предполагается наличие контейнера моделирования с идентификатором 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(1990, 01, 01);
Calc.Period.IdentificationEndDate := DateTime.ComposeDay(2007, 12, 31);
Calc.Period.ForecastStartDate := DateTime.ComposeDay(2008, 01, 01);
Calc.Period.ForecastEndDate := DateTime.ComposeDay(2010, 12, 31);
// Выполняем тестирование
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.
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[Null, Null];
// Находим тест «Критерий функциональной формы»
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;
См. также: