IMsDeterministicTransform.PairCorrelationMatrix

Синтаксис Fore

PairCorrelationMatrix(Calculation: IMsMethodCalculation; Coord: IMsFormulaTransformCoord): Array;

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

PairCorrelationMatrix[Prognoz.Platform.Interop.Ms.IMsMethodCalculation,
Prognoz.Platform.Interop.Ms.IMsFormulaTransformCoord]: System.Array;

Параметры

Calculation. Параметры расчёта модели.

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

Описание

Свойство доступно только для чтения.

Свойство PairCorrelationMatrix возвращает матрицу корреляции факторов модели.

Комментарии

Параметры Calculation и Coord не могут принимать значение Null.

Массив, содержащий значения факторов, возвращает свойство IMsDeterministicTransform.FactsMatrix.

Пример Fore

Для выполнения примера в репозитории должен присутствовать контейнер моделирования с идентификатором MS, содержащий модель детерминированного уравнения с идентификатором ModelDeterm. Добавьте ссылки на системные сборки: Matrix, Metabase, Ms.

Sub UserProc;
Var
    mb: IMetabase;
    MsKey: Integer;
    hModel: IMetabaseObjectDescriptor;
    oModel: IMsModel;
    trans: IMsFormulaTransform;
    selector: IMsFormulaTransformSelector;
    formula: IMsFormula;
    output: IMsFormulaTransformVariable;
    determ: IMsDeterministicTransform;
    coord: IMsFormulaTransformCoord;
    calculation: IMsMethodCalculation;
    calcPeriod, modPeriod: IMsModelPeriod;
    matrix: Array Of Double;
    i, j: Integer;
    nCount: Integer;
    term: IMsFormulaTerm;
Begin
    mb := metabaseClass.Active;
    MsKey : = mb.ItemById("MS").Key;
    hModel := mb.ItemByIdNamespace("MODEL_DETERM", MsKey);
    oModel := hModel.Bind As IMsModel;
    trans := oModel.Transform;
    output := trans.Outputs.Item(0);
    selector := trans.CreateSelector;
    selector.Slice := output.Slices.Item(0);
    formula := trans.Transform(selector);
    determ := formula.Method As IMsDeterministicTransform;
    coord := trans.CreateCoord(output);
    calculation := trans.CreateCalculation;
    calcPeriod := calculation.Period;
    modPeriod := oModel.Period;
    calcPeriod.ForecastEndDate := modPeriod.ForecastEndDate;
    calcPeriod.ForecastStartDate := modPeriod.ForecastStartDate;
    calcPeriod.IdentificationEndDate := modPeriod.IdentificationEndDate;
    calcPeriod.IdentificationStartDate := modPeriod.IdentificationStartDate;
    matrix := determ.PairCorrelationMatrix(calculation, coord);
    nCount := determ.Operands.Count;
    Debug.IndentSize := 15;
    Debug.Indent;
    For i := 0 To nCount - 1 Do
        If i = 0 Then
            term := determ.Result;
        Else
            term := determ.Operands.Item(i - 1);
        End If;
        Debug.Write(term.TermToText);
    End For;
    Debug.WriteLine("");
    Debug.Unindent;
    Debug.IndentSize := 5;
    For i := 0 To nCount - 1 Do
        If i = 0 Then
            term := determ.Result;
        Else
            term := determ.Operands.Item(i - 1);
        End If;
        Debug.Write(term.TermToText);
        Debug.Indent;
        For j := matrix.GetLowerBound(1To matrix.GetUpperBound(1Do
            Debug.Write(matrix[j, i]);
        End For;
        Debug.Unindent;
        Debug.WriteLine("");
    End For;
End Sub UserProc;

После выполнения примера в окно консоли будет выведена матрица корреляции факторов модели детерминированного уравнения.

Пример Fore.NET

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

Imports Prognoz.Platform.Interop.Ms;
Imports Prognoz.Platform.Interop.Matrix;

Private Sub UserProc;
Var
    mb: IMetabase;
    MsKey: uinteger;
    hModel: IMetabaseObjectDescriptor;
    oModel: IMsModel;
    trans: IMsFormulaTransform;
    selector: IMsFormulaTransformSelector;
    formula: IMsFormula;
    output: IMsFormulaTransformVariable;
    determ: IMsDeterministicTransform;
    coord: IMsFormulaTransformCoord;
    calculation: IMsMethodCalculation;
    calcPeriod, modPeriod: IMsModelPeriod;
    matrix: System.Array;
    i, j, k: Integer;
    nCount: Integer;
    term: IMsFormulaTerm;
Begin
    mb := Self.Metabase;
    MsKey := mb.ItemById["MS"].Key;
    hModel := mb.ItemByIdNamespace["MODEL_DETERM", MsKey];
    oModel := hModel.Bind() As IMsModel;
    trans := oModel.Transform;
    output := trans.Outputs.Item[0];
    selector := trans.CreateSelector();
    selector.Slice := output.Slices.Item[0];
    formula := trans.Transform[selector];
    determ := formula.Method As IMsDeterministicTransform;
    coord := trans.CreateCoord(output);
    calculation := trans.CreateCalculation();
    calcPeriod := calculation.Period;
    modPeriod := oModel.Period;
    calcPeriod.ForecastEndDate := modPeriod.ForecastEndDate;
    calcPeriod.ForecastStartDate := modPeriod.ForecastStartDate;
    calcPeriod.IdentificationEndDate := modPeriod.IdentificationEndDate;
    calcPeriod.IdentificationStartDate := modPeriod.IdentificationStartDate;
    matrix := determ.PairCorrelationMatrix[calculation, coord];
    nCount := determ.Operands.Count;
    System.Diagnostics.Debug.IndentSize := 15;
    System.Diagnostics.Debug.Indent();
    For i := 0 To nCount - 1 Do
        If i = 0 Then
            term := determ.Result;
        Else
            term := determ.Operands.Item[i - 1];
        End If;
        System.Diagnostics.Debug.Write(term.TermToText());
    End For;
    System.Diagnostics.Debug.WriteLine("");
    System.Diagnostics.Debug.Unindent();
    System.Diagnostics.Debug.IndentSize := 5;
    For i := 0 To nCount - 1 Do
        If i = 0 Then
            term := determ.Result;
        Else
            term := determ.Operands.Item[i - 1];
        End If;
        System.Diagnostics.Debug.Write(term.TermToText());
        System.Diagnostics.Debug.Indent();
        For j := matrix.GetLowerBound(1To matrix.GetUpperBound(1Do
            System.Diagnostics.Debug.Write(matrix[i, j]);
        End For;
        System.Diagnostics.Debug.Unindent();
        System.Diagnostics.Debug.WriteLine("");
    End For;
End Sub;

См. также:

IMsDeterministicTransform