Онлайн-алгоритм для вычисления абсолютного отклонения

Я пытаюсь вычислить абсолютное отклонение вектора в режиме онлайн , то есть при получении каждого элемента в векторе без использования весь вектор. Абсолютное отклонение - это сумма абсолютной разницы между каждым элементом вектора и средним значением:

\sum_{i=0}^{n-1}{{abs%28\overline{x}%20-%20x_i}%29}

Я знаю, что таким образом можно вычислить дисперсию вектора. Дисперсия аналогична абсолютному отклонению, но каждое различие возводится в квадрат:

\frac{\sum_{i=0}^{n-1}{{%28\overline{x}%20-%20x_i}%29}^2}{n}

Онлайн-алгоритм дисперсии выглядит следующим образом:

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

Существует ли такой алгоритм для вычисления абсолютного отклонения? Сам я не могу сформулировать рекурсивное определение, но разумные головы могут преобладать!

11
задан outis 12 October 2010 в 02:42
поделиться