Я пытаюсь вычислить абсолютное отклонение вектора online, то есть по мере поступления каждого элемента в векторе, без использования всего вектора. Абсолютное отклонение представляет собой сумму абсолютной разницы между каждым элементом вектора и средним значением:
Я знаю, что дисперсия вектора может быть рассчитана таким образом. Отклонение аналогично абсолютному отклонению, но каждая разница квадратична:
Онлайн-алгоритм для дисперсии выглядит следующим образом:
n = 0
mean = 0
M2 = 0
def calculate_online_variance(x):
n = n + 1
delta = x - mean
mean = mean + delta/n
M2 = M2 + delta*(x - mean) # This expression uses the new value of mean
variance_n = M2/n
return variance_n
Есть ли такой алгоритм для вычисления абсолютного отклонения? Я не могу сформулировать рекурсивное определение сам, но более разумные головы могут преобладать!