Estoy tratando de calcular la desviación absoluta de un vector online, es decir, a medida que se recibe cada elemento en el vector, sin usar todo el vector. La desviación absoluta es la suma de la diferencia absoluta entre cada elemento en un vector y la media:Algoritmo en línea para calcular la desviación absoluta
sé que la varianza de un vector se puede calcular de una manera tal. La variación es similar a la desviación absoluta, pero cada diferencia se eleva al cuadrado:
El algoritmo de línea de varianza es el siguiente:
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
¿Existe un algoritmo para calcular absoluta ¿Desviación? No puedo formular una definición recursiva, ¡pero las cabezas más prudentes pueden prevalecer!
+1: Interesante algoritmo de cálculo de la varianza en línea. – EOL
Tenga en cuenta que el algoritmo en línea para la varianza dada por OP es una estimación. –
@Justin Peel Todos los cálculos de punto flotante son estimaciones. Este algoritmo es realmente más preciso en muchas situaciones del mundo real que otros enfoques: http://www.johndcook.com/standard_deviation.html – fmark