Я пытаюсь вычислить абсолютное отклонение вектора в режиме онлайн , то есть при получении каждого элемента в векторе без использования весь вектор. Абсолютное отклонение - это сумма абсолютной разницы между каждым элементом вектора и средним значением:
Я знаю, что таким образом можно вычислить дисперсию вектора. Дисперсия аналогична абсолютному отклонению, но каждое различие возводится в квадрат:
Онлайн-алгоритм дисперсии выглядит следующим образом:
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
Существует ли такой алгоритм для вычисления абсолютного отклонения? Сам я не могу сформулировать рекурсивное определение, но разумные головы могут преобладать!