CovarianceMatrix: Array;
CovarianceMatrix: System.Array;
Свойство CovarianceMatrix возвращает значения ковариационной матрицы.
Необходимо использовать массив типа Double.
Для выполнения примера добавьте ссылку на системную сборку Stat.
Sub UserProc;
Var
bm: SmBinaryModel;
can: Array[9] Of Double;
bin2: Array[5] Of Integer;
i, j, res: Integer;
str: String;
Intercept: IIntercept;
Explanatories: ISlSeries;
Begin
bm := New SmBinaryModel.Create;
// Задаем значения объясняющего ряда
can[00] := 6.209; can[05] := 5;
can[01] := 6.385; can[06] := 6;
can[02] := 6.29; can[07] := 7;
can[03] := 6.25; can[08] := 8;
can[04] := 6.1;
// Задаем значения объясняемого ряда
bin2[00] := 1; bin2[03] := 0;
bin2[01] := 1; bin2[04] := 0;
bin2[02] := 0;
// Задаем значения первой и последней точек периода идентификации
bm.ModelPeriod.FirstPoint := 1;
bm.ModelPeriod.LastPoint := 5;
// Задаем значение последней точки прогноза
bm.Forecast.LastPoint := 9;
// Задаем тип модели
bm.BinaryDistr := BinaryDistrType.Probit;
// Задаем значение деления на группы
bm.ClassificationCutOff := 0.5;
// Используем начальные значения по умолчанию
bm.UseDefaultInitValues := True;
// Задаем точность и максимальное число итераций
bm.Tolerance := 0.001;
bm.MaxIteration := 100;
// Задаём метод оптимизации
bm.OptimizationMethod := BinaryOptimizationMethod.NewtonRaphson;
// Задаем способ оценки константы
Intercept := bm.ModelCoefficients.Intercept;
Intercept.Mode := InterceptMode.AutoEstimate;
// Задаем объясняемый ряд
bm.BinaryExplained := bin2;
// Задаем объясняющий ряд
Explanatories := bm.Explanatories;
Explanatories.Add.Value := can;
// Производим расчет и выводим сообщения об ошибках
res:= bm.Execute;
// Выводим результаты расчетов
If (res = 0) Then
Debug.WriteLine("Ковариационная матрица");
For i := 0 To bm.CovarianceMatrix.GetUpperBound(2) Do
str := "";
For j := 0 To bm.CovarianceMatrix.GetUpperBound(1) Do
str := str + " " + (bm.CovarianceMatrix[j, i] As Double).ToString;
End For;
Debug.WriteLine(str);
End For;
End If;
End Sub UserProc;
В результате выполнения примера в окно консоли будет выведена ковариационная матрица.
Необходимые требования и результат выполнения примера совпадают с примером Fore.
Imports Prognoz.Platform.Interop.Stat;
…
Public Shared Sub Main(Params: StartParams);
Var
bm: SmBinaryModel;
can: Array[9] Of double;
bin2: Array[5] Of integer;
i, j, res: integer;
str: string;
Intercept: IIntercept;
Explanatories: ISlSeries;
Matrix: System.Array;
Begin
bm := New SmBinaryModel.Create();
// Задаем значения объясняющего ряда
can[00] := 6.209; can[05] := 5;
can[01] := 6.385; can[06] := 6;
can[02] := 6.29; can[07] := 7;
can[03] := 6.25; can[08] := 8;
can[04] := 6.1;
// Задаем значения объясняемого ряда
bin2[00] := 1; bin2[03] := 0;
bin2[01] := 1; bin2[04] := 0;
bin2[02] := 0;
// Задаем значения первой и последней точек периода идентификации
bm.ModelPeriod.FirstPoint := 1;
bm.ModelPeriod.LastPoint := 5;
// Задаем значение последней точки прогноза
bm.Forecast.LastPoint := 9;
// Задаем тип модели
bm.BinaryDistr := BinaryDistrType.bdtProbit;
// Задаем значение деления на группы
bm.ClassificationCutOff := 0.5;
// Используем начальные значения по умолчанию
bm.UseDefaultInitValues := True;
// Задаем точность и максимальное число итераций
bm.Tolerance := 0.001;
bm.MaxIteration := 100;
// Задаём метод оптимизации
bm.OptimizationMethod := BinaryOptimizationMethod.bomtNewtonRaphson;
// Задаем способ оценки константы
Intercept := bm.ModelCoefficients.Intercept;
Intercept.Mode := InterceptMode.imAutoEstimate;
// Задаем объясняемый ряд
bm.BinaryExplained := bin2;
// Задаем объясняющий ряд
Explanatories := bm.Explanatories;
Explanatories.Add().Value := can;
// Производим расчет и выводим сообщения об ошибках
res:= bm.Execute();
// Выводим результаты расчетов
If (res = 0) Then
Matrix := bm.CovarianceMatrix;
System.Diagnostics.Debug.WriteLine("Ковариационная матрица");
For i := 0 To bm.CovarianceMatrix.GetUpperBound(1) Do
str := "";
For j := 0 To bm.CovarianceMatrix.GetUpperBound(0) Do
str := str + " " + (Matrix[j, i] As Double).ToString();
End For;
System.Diagnostics.Debug.WriteLine(str);
End For;
End If;
End Sub;
См. также: