A blog about data, information and Tech by Mario Alberich

        

Calcular la variancia sin recorrer dos veces los datos

El cálculo de la variancia (o varianza, según la literatura) implica a la media.  Dado que para calcular la media necesitamos todos los datos (bueno no siempre, pero en este caso sí), el algoritmo más básico nos obligaría a recorrer dos veces la muestra de datos:

  • Recorremos la primera vez sumando los valores, y acabamos calculando la media.
  • Recorremos una segunda vez la muestra, y para cada valor calculamos el cuadrado de su distancia respecto a la media.
  • Finalizamos dividiendo el segundo resultado entre el número de datos de la muestra.


Este proceso es harto costoso en términos de tiempo. Recorremos dos veces una muestra (que pueden ser miles de datos) y eso ya es motivo para pensar si podemos reducirlo.

Por suerte, la varianza se puede exponer, en términos de esperanza matemática, de otra forma. Extraído directamente de Wikipedia:

Desglose de la varianza en términos de esperanza matemáticaLo que está indicando esta fórmula es que podemos separar el cálculo de la media del de sus valores al cuadrado.

¿Esto mejora lo anterior? Sí, porque al poderlo diferenciar, lo podemos paralelizar, y por lo que podemos utilizar un solo recorrido por los datos para calcular la varianza.

 

 

 

Algoritmo de cálculo

  • Recorremos los datos, generando dos variables: X y M.
  • Para cada valor de los datos
    • sumamos el valor a M.
    • Elevamos el valor al cuadrado y lo sumamos a X.


  • Al finalizar el cálculo dividimos ambos valores por el número de datos de la muestra.
  • restamos X-M, y tenemos la varianza.

Calcular la varianza como flujo


Relacionado con el post sobre el algoritmo de cálculo de la media, y viendo la optimización anterior, ¿Crees que es posible calcular la varianza al vuelo?

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