JohansenTest: IMsVariableTest
The JohansenTest property returns parameters of the Johansen test calculation
Use the IMsJohansenTestSettings interface to set up calculation options.
Executing the example requires that the repository contains a modeling container with the MS identifier containing a modeling problem with the WEB_PROBLEM identifier. The task must contain the internal metamodel. The metamodel must contain not less than three internal variables.
Add links to the Metabase, Ms, Stat system assemblies.
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;
// Get modelling container key
msKey := mb.GetObjectKeyById("MS");
// Get modeling problem
Problem := mb.ItemByIdNamespace("WEB_PROBLEM", msKey).Bind As IMsProblem;
// Get metamodel
Meta := Problem.MetaModel;
MetaVisual := Meta.VisualController;
// Get time metamodels
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;
// Set endogenous variables for test calculation
For i := 1 To j - 1 Do
ChainEl := VarArray[i] As IMsCalculationChainEntry;
MetaVisual.AddTestIncludedEntrie(ChainEl.Key, MsVariableTestType.Johansen);
End For;
// Set exogenous variables for test calculation
ChainEl := VarArray[0] As IMsCalculationChainEntry;
MetaVisual.AddJohansenTestExogenousEntrie(ChainEl.Key);
// Set common parameters of calculating the descriptive statistics
Test := MetaVisual.JohansenTest;
CommonSett := Test.Settings;
// Calculation period
CommonSett.StartDate := DateTime.Parse("01.01.1990");
CommonSett.EndDate := DateTime.Parse("01.01.2015");
// Method of missing data treatment
CommonSett.MissingData.Method := MissingDataMethod.LinTrend;
// Set Johnsen test calculation parameters
Johansen := CommonSett As IMsJohansenTestSettings;
// Determinenbsp;autoregressionnbsp;order
Johansen.AutoRegressionOrder := "1";
// Set the type of error correction model
Johansen.ModelType := ECMType.TrendTrend;
// Display the information about the tested variables
InclSrc := Johansen.IncludedSources;
Debug.WriteLine("Endogenous variables:");
For i := 0 To InclSrc.Count - 1 Do
TestData := InclSrc.Item(i);
Debug.WriteLine(" " + TestData.Name);
End For;
Debug.WriteLine("Exogenous variable:");
InclSrc := Johansen.ExogenousSources;
TestData := InclSrc.Item(0);
Debug.WriteLine(" " + TestData.Name);
// Perform calculation of the test
TestRes := Test.Execute;
// Output results
If TestRes.Error <> "" Then
Debug.WriteLine(TestRes.Error);
Else
Res := TestRes.ResValueMatrix;
Debug.WriteLine("");
Debug.WriteLine("Johansen test");
Debug.WriteLine("");
For i := 0 To Res.GetUpperBound(1) Do
Select Case i
Case 0: Debug.Write("Links: ");
Case 1: Debug.Write("Eigenvalue: ");
Case 2: Debug.Write("Maximum likehood ratio: ");
Case 3: Debug.Write("Critical value is 1%: ");
Case 4: Debug.Write(" Hypothesis is accepted: ");
Case 5: Debug.Write("Critical value is 5%: ");
Case 6: Debug.Write(" Hypothesis is accepted: ");
Case 7: Debug.Write("Critical value is 10%: ");
Case 8: Debug.Write(" Hypothesis is accepted: ");
Case 9: Debug.Write("Probability: ");
End Select;
For j := 0 To Res.GetUpperBound(2) Do
Debug.Write(Res[i, j]); Debug.Write("; ");
End For;
Debug.WriteLine("");
End For;
End If;
End Sub JohansenTest;
Example execution result: the Johansen test is calculated for all variables which are contained in the metamodel calculation chain. The results are displayed in the console window.
See also: