InitValue: Double;
InitValue: double;
Свойство InitValue определяет начальное приближение для коэффициента при экзогенной переменной.
Значение по умолчанию «0,0025».
Для выполнения примера добавьте ссылку на системную сборку «Stat».
Sub UserProc;
Var
lr: ISmLinearRegress;
W: Array[12] Of Double;
X: array[20] Of Double;
Explan: ISlSerie;
res, i: Integer;
d: Double;
CoefficientsX: ICoefficients;
ModelCoefficients: IModelCoefficients;
Begin
lr := New SmLinearRegress.Create;
// значения объясняющей переменной
w[0] := 2; w[4] := -1.9; w[8] := -0.7;
w[1] := 0.8; w[5] := Double.Nan; w[9] := Double.Nan;
w[2] := -0.3; w[6] := 3.2; w[10] := 4.3;
w[3] := -0.3; w[7] := 1.6; w[11] := 1.1;
// значения экзогенной переменной
x[0] := 1; x[10] := 11;
x[1] := 2; x[11] := 12;
x[2] := 3; x[12] := 13;
x[3] := 4; x[13] := Double.Nan;
x[4] := 5; x[14] := 15;
x[5] := 6; x[15] := 16;
x[6] := Double.Nan; x[16] := 17;
x[7] := 8; x[17] := Double.Nan;
x[8] := 9; x[18] := 19;
x[9] := 10; x[19] := 20;
// задаем период идентификации
lr.ModelPeriod.FirstPoint := 1;
lr.ModelPeriod.LastPoint := 12;
lr.Forecast.LastPoint := 19;
lr.MissingData.Method := MissingDataMethod.LinTrend;
// задаем объясняемую переменную
lr.Explained.Value := w;
// задаем экзогенную переменную и её параметры
lr.Explanatories.Clear;
Explan := lr.Explanatories.Add;
Explan.Id := "Explanatories_X";
Explan.Name := "X";
Explan.Value := X;
Explan.Include := True;
Explan.InitValue := 0.44;
ModelCoefficients := lr.ModelCoefficients;
// задаем автоматическую оценку значения константы
ModelCoefficients.Intercept.Mode := InterceptMode.AutoEstimate;
// рассчитываем модель и выводим результаты в окно консоли
res := lr.Execute;
// коэффициенты экзогенной переменной
CoefficientsX := ModelCoefficients.Coefficients;
Debug.WriteLine("Оценки коэффициентов X:");
d := CoefficientsX.Estimate[0];
Debug.WriteLine(" - значение: " + d.ToString);
d := CoefficientsX.StandardError[0];
Debug.WriteLine(" - стандартная ошибка: " + d.ToString);
d := CoefficientsX.TStatistic[0];
Debug.WriteLine(" - t-статистика: " + d.ToString);
d := CoefficientsX.Probability[0];
Debug.WriteLine(" - вероятность: " + d.ToString);
Debug.WriteLine("=== Исходный ряд ===");
For i := 0 To lr.Explained.OriginalValue.Length - 1 Do
Debug.WriteLine(lr.Explained.OriginalValue[i]);
End For;
Debug.WriteLine("=== Полученный ряд ===");
For i := 0 To lr.Explained.Value.Length - 1 Do
Debug.WriteLine(lr.Explained.Value[i]);
End For;
End Sub UserProc;
В результате выполнения примера будет создана модель линейной регрессии, в которой начальное приближение для коэффициента при экзогенной переменной равно «0,44».
Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.
Imports Prognoz.Platform.Interop.Stat;
…
Public Shared Sub Main(Params: StartParams);
Var
lr: ISmLinearRegress;
W: Array[12] Of Double;
X: array[20] Of Double;
Explan: ISlSerie;
res, i: Integer;
d: Double;
CoefficientsX: ICoefficients;
ModelCoefficients: IModelCoefficients;
OriginalValue, Value: System.Array;
Begin
lr := New SmLinearRegress.Create();
// значения объясняющей переменной
w[0] := 2; w[4] := -1.9; w[8] := -0.7;
w[1] := 0.8; w[5] := Double.Nan; w[9] := Double.Nan;
w[2] := -0.3; w[6] := 3.2; w[10] := 4.3;
w[3] := -0.3; w[7] := 1.6; w[11] := 1.1;
// значения экзогенной переменной
x[0] := 1; x[10] := 11;
x[1] := 2; x[11] := 12;
x[2] := 3; x[12] := 13;
x[3] := 4; x[13] := Double.Nan;
x[4] := 5; x[14] := 15;
x[5] := 6; x[15] := 16;
x[6] := Double.Nan; x[16] := 17;
x[7] := 8; x[17] := Double.Nan;
x[8] := 9; x[18] := 19;
x[9] := 10; x[19] := 20;
// задаем период идентификации
lr.ModelPeriod.FirstPoint := 1;
lr.ModelPeriod.LastPoint := 12;
lr.Forecast.LastPoint := 19;
lr.MissingData.Method := MissingDataMethod.mdmLinTrend;
// задаем объясняемую переменную
lr.Explained.Value := w;
// задаем экзогенную переменную и её параметры
lr.Explanatories.Clear();
Explan := lr.Explanatories.Add();
Explan.Id := "Explanatories_X";
Explan.Name := "X";
Explan.Value := X;
Explan.Include := True;
Explan.InitValue := 0.44;
ModelCoefficients := lr.ModelCoefficients;
// задаем автоматическую оценку значения константы
ModelCoefficients.Intercept.Mode := InterceptMode.imAutoEstimate;
// рассчитываем модель и выводим результаты в окно консоли
res := lr.Execute();
// коэффициенты экзогенной переменной
CoefficientsX := ModelCoefficients.Coefficients;
System.Diagnostics.Debug.WriteLine("Оценки коэффициентов X:");
d := CoefficientsX.Estimate.GetValue(0) As double;
System.Diagnostics.Debug.WriteLine(" - значение: " + d.ToString());
d := CoefficientsX.StandardError.GetValue(0) As double;
System.Diagnostics.Debug.WriteLine(" - стандартная ошибка: " + d.ToString());
d := CoefficientsX.TStatistic.GetValue(0) As double;
System.Diagnostics.Debug.WriteLine(" - t-статистика: " + d.ToString());
d := CoefficientsX.Probability.GetValue(0) As double;
System.Diagnostics.Debug.WriteLine(" - вероятность: " + d.ToString());
OriginalValue := lr.Explained.OriginalValue;
Value := lr.Explained.Value;
System.Diagnostics.Debug.WriteLine("=== Исходный ряд ===");
For i := 0 To OriginalValue.Length - 1 Do
System.Diagnostics.Debug.WriteLine(OriginalValue[i]);
End For;
System.Diagnostics.Debug.WriteLine("=== Полученный ряд ===");
For i := 0 To Value.Length - 1 Do
System.Diagnostics.Debug.WriteLine(Value[i]);
End For;
End Sub;
См. также: