Item(Index: Integer): INonLinearRegressionExplanatory
Index. Индекс объясняющего ряда в коллекции.
Свойство Item определяет параметры регрессора по заданному индексу.
Sub Main;
Var
NLr: ISmNonLinearLeastSquare;
ar: Array[0..6] Of Double;
ar2: Array[0..8] Of Double;
ar3: Array[0..8] Of Double;
InitEst: Array[0..1] Of Double;
Per: IStatPeriod;
res: Integer;
MC: ISlConstCoefficients;
Regs: INonLinearRegressionExplanatories;
Sub Print(Data: Array Of Double);
Var
i: Integer;
CI: ICultureInfo;
Begin
CI := CultureInfo.Current;
Debug.WriteLine("---Begin---");
For i := 0 To Data.Length - 1 Do
If Double.IsNan(Data[i]) Then
Debug.WriteLine("---empty---");
Else
Debug.WriteLine(i.ToString + ", " + CI.FormatDoublePrec(Data[i], 4));
End If;
End For;
Debug.WriteLine("---End---");
End Sub Print;
Begin
NLr := New SmNonLinearLeastSquare.Create;
// значения ar, ar2, ar3
ar[0] := 100; ar2[0] := 120; ar3[0] := 122;
ar[1] := 111; ar2[1] := 125; ar3[1] := 127;
ar[2] := 123; ar2[2] := 124; ar3[2] := 130;
ar[3] := 113; ar2[3] := 130; ar3[3] := 135;
ar[4] := 119; ar2[4] := 133; ar3[4] := 140;
ar[5] := 121; ar2[5] := 129; ar3[5] := 149;
ar2[6] := 139; ar3[6] := 150;
ar2[7] := 140; ar3[7] := 155;
NLr.Explained.Value := ar;
Regs := NLr.Explanatories;
Regs.Add.Serie.Value := ar2;
Regs.Add.Serie.Value := ar3;
NLr.FunctionString := "A1 + A2 * " + Regs.Item(0).VariableName + " * " + Regs.Item(1).VariableName;
NLr.CoefficientsOrder := "A1;A2";
Per := NLr.ModelPeriod;
Per.FirstPoint := 1;
Per.LastPoint := 5;
NLr.Forecast.LastPoint := 9;
NLr.MaxIteration := 100;
NLr.UseDerivatives := False;
NLr.Tolerance := 0.003;
InitEst[0] := 0.5;
InitEst[1] := 1.0;
Nlr.InitApproximation := InitEst;
res := NLr.Execute;
If res <> 0 Then
Debug.WriteLine(NLr.Errors);
Else
Debug.WriteLine("== Коэффициенты ==");
Debug.WriteLine("A1");
MC := NLr.ModelCoefficients("A1");
Debug.WriteLine("значение: " + MC.Estimate.ToString);
Debug.WriteLine("вероятность: " + MC.Probability.ToString);
Debug.WriteLine("A2");
MC := NLr.ModelCoefficients("A2");
Debug.WriteLine("значение: " + MC.Estimate.ToString);
Debug.WriteLine("вероятность: " + MC.Probability.ToString);
Debug.WriteLine("== Сглаженный ряд ==");
Print(NLr.Fitted);
End If;
End Sub Main;
После выполнения примера в окно консоли будут выведены результаты расчетов:
Module execution started
== Коэффициенты ==
A1
значение: 53.880580866221038
вероятность: 0.29238729337484076
A2
значение: 0.0035818742339464894
вероятность: 0.25398912831100334
== Сглаженный ряд ==
---Begin---
0, 106.3192
1, 110.7428
2, 111.6204
3, 116.7425
4, 120.5751
---empty---
---empty---
---End---
Module execution finished
См. также: