Trend(KnownYs: Array; KnownXs: Array; NewXs: Array; HasConstant: Boolean): Array;
KnownYs. Множество значений Y, которые уже известны в соотношении y=mx+b. Значения в массиве данных должны быть больше нуля. Если массив KnownYs имеет один столбец, то каждый столбец массива KnownXs интерпретируется как отдельная переменная. Если массив KnownYs имеет одну строку, то каждая строка массива KnownXs интерпретируется как отдельная переменная. Массив KnownXs может содержать одно или несколько множеств переменных. Если используется только одна переменная, то KnownYs и KnownXs могут иметь любую форму, при условии, что они имеют одинаковую размерность. Если используется более одной переменной, то KnownYs должен быть вектором (то есть интервалом высотой в одну строку или шириной в один столбец);.
KnownXs. Множество значений X, которые уже известны для соотношения y=mx+b;
NewXs. Новые значения X, для которых Trend возвращает соответствующие значения Y. NewXs должен содержать столбец (или строку) для каждой независимой переменной, как и KnownXs. Таким образом, если KnownYs. это один столбец, то KnownXs и NewXs должны иметь такое же количество столбцов. Если KnownYs - это одна строка, то KnownXs и NewXs должны иметь такое же количество строк;
HasConstant. Логическое значение, которое указывает, требуется ли, чтобы константа b была равна нулю:
True. b вычисляется обычным образом;
False. b полагается равным нулю, а значения m подбираются так, чтобы y=mx.
Метод Trend возвращает значения в соответствии с линейным трендом. Аппроксимирует прямой линией (по методу наименьших квадратов) массивы KnownYs и KnownXs. Возвращает значения Y, в соответствии с этой прямой для заданного массива NewXs.
Для выполнения примера добавьте ссылку на системную сборку Stat.
Sub UserProc;
Var
st: Statistics;
d0: Double;
x, y, nx: Array Of Double;
res: Array Of Double;
i: Integer;
Begin
y := New Double[12];
x := New Double[12];
nx := New Double[4];
x[00] := 1; y[00] := 33100;
x[01] := 2; y[01] := 47300;
x[02] := 3; y[02] := 69000;
x[03] := 4; y[03] := 102000;
x[04] := 5; y[04] := 150000;
x[05] := 6; y[05] := 220000;
x[06] := 7; y[06] := 220100;
x[07] := 8; y[07] := 247300;
x[08] := 9; y[08] := 269000;
x[09] := 10; y[09] := 270020;
x[10] := 11; y[10] := 275210;
x[11] := 12; y[11] := 276030;
nx[0] := 13;
nx[1] := 14;
nx[2] := 15;
nx[3] := 16;
st := New Statistics.Create;
res := st.Trend(y,x,x,True);
Debug.WriteLine("Рассчитанные значения, соответствующие имеющимся значениям Y");
For i := 0 To res.Length - 1 Do
d0 := res[i];
Debug.WriteLine(d0.ToString);
End For;
res := st.Trend(y,x,nx,True);
Debug.WriteLine("Предсказываемые значения Y для новых значений X (nx)" );
For i := 0 To 3 Do
d0 := res[i];
Debug.WriteLine(d0.ToString);
End For;
End Sub UserProc;
После выполнения примера в окно консоли будут выведены результаты расчетов:
Выполнение модуля начато
Рассчитанные значения, соответствующие имеющимся значениям Y
42019.8717948718
67395.9557109557
92772.0396270396
118148.123543124
143524.207459207
168900.291375291
194276.375291375
219652.459207459
245028.543123543
270404.627039627
295780.710955711
321156.794871795
Предсказываемые значения Y для новых значений X (nx)
346532.878787879
371908.962703963
397285.046620047
422661.130536131
Выполнение модуля завершено
См. также: