расчет для линейной регрессии основан на сумме различных значений.так что вы могли бы написать более эффективную процедуру, которая изменяет сумму при перемещении окна (добавляя одну точку и вычитая предыдущую).
это будет намного эффективнее, чем повторять процесс каждый раз, когда окно сдвигается, нооткрыт для ошибок округления.так что вам нужно будет время от времени перезапускать.
вы, вероятно, можете добиться большего успеха, чем это, для точек с одинаковыми интервалами, предварительно рассчитав все зависимости x, но я не понимаю вашего примера в деталях, поэтому не уверен, насколько он актуален.
поэтому я предполагаю, что я просто предположу, что это так.
наклон равен (NΣXY - (ΣX) (ΣY)) / (NΣX2 - (ΣX) 2) где "2 "равно" в квадрате "- http://easycalculation.com/statistics/learn-regression.php
для равномерно распределенных данных, знаменатель фиксирован (поскольку вы можете сместить ось x в начало окна без изменения градиента).(ΣX) в числителе также является фиксированным (по той же причине).так что вам нужно иметь дело только с ΣXY и ΣY.последнее тривиально - просто добавьте и вычтите значение.первый уменьшается на ΣY (каждый вес X уменьшается на 1) и увеличивается на (N-1) Y (при условии, что x_0 равен 0, а x_N равен N-1) на каждом шаге.
Я подозреваю, что это не ясно.То, что я говорю, - то, что формулу для наклона не нужно полностью пересчитывать каждый шаг.в частности потому, что на каждом шаге вы можете переименовывать значения X в 0,1, ... N-1 без изменения наклона.так что почти все в формуле одинаково.все эти изменения - два слагаемых, которые зависят от Y, когда Y_0 «выпадает» из окна и Y_N «перемещается».