INonLinearRegressionExplanatory.Serie

Синтаксис

Serie: ISlSerie;

Описание

Свойство Serie определяет параметры регрессора.

Пример

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;

Reg1, Reg2: INonLinearRegressionExplanatory;

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;

Reg1 := Regs.Add;

Reg1.Serie.Value := ar2;

Reg2 := Regs.Add;

Reg2.Serie.Value := ar3;

NLr.FunctionString := "A1 + A2 * " + Reg1.VariableName + " * " + Reg2.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

См. также:

INonLinearRegressionExplanatory