A blog about data, information and Tech by Mario Alberich

        

Cálculo de la media con datos en flujo

En muchos casos disponemos de todo el conjunto de datos para poder calcular la media. En esas situaciones, la suma de todos los elementos divididos por el número de éstos, ya nos proporciona la media.

Datos en bloque y datos en flujo


Pero ¿qué sucede cuando los datos van surgiendo aleatoriamente, y además no sabemos ni la cantidad, ni el momento en el que dejarán de aparecer? Necesitamos un cálculo dinámico de la media. Y para más detalle, queremos mantener el mínimo volumen de datos.

Calcular la media cada vez


Dado que la media es la suma de los elementos divididos por la cantidad, podemos tener un valor que contenga la suma de todos los elementos anteriores, y otra variable con el número de elementos que han llegado.

Cada vez que llegara un nuevo valor, sólo sería necesario sumarlo a la primera variable, incrementar en uno el valor de la segunda, y luego dividir la primera por la segunda. Tendríamos así la nueva media.

De esta forma guardamos tres valores: el total, el número de ítems y la media.

Optimizando los recursos


Aunque en este caso parezca absurdo, pueden existir situaciones en el que el ahorro pueda ser significativo. Así que, ¿cómo podemos reducir el número de variables a guardar?

Para esas situaciones la fórmula clásica no sirve. Tenemos que echar mano de una versión generalizada, la media ponderada. En realidad, una media tal como la conocemos es un caso concreto de la media ponderada: es cuando todos los valores que queremos promediar tienen la misma importancia (el mismo peso, la misma ponderación).

Para el caso que nos ocupa, tendremos dos valores: el número de ítems y la media actual. Es decir, nos ahorramos la suma del total. ¿Cuál es el procedimiento?

  • Llega el primer valor. La media es éste mismo valor.
  • A partir del segundo valor, ponderamos la media existente por el número de elementos que han llegado, y el nuevo valor por uno.


A medida que se va incrementando el número de valores, el peso de la media es tan alto, que los nuevos valores deben ser muy altos para alterar la media.

Este proceso es algo más intensivo en recursos, pero más ligero en recursos que el anterior.

 

© 2007 and beyond Mario Alberich, licensed under CC-BY-SA unless stated otherwise.