Algoritmos para calcular la varianza

Los algoritmos para calcular la varianza juegan un papel importante en la estadística informática.

Como SumSq y (Sum×Sum)/n pueden ser números muy similares, cancelación de los restos puede llevar a que la precisión del resultado sea mucho menor que la precisión inherente de coma flotante utilizada para realizar el cálculo.

Por lo tanto, se ha propuesto este algoritmo no debe utilizarse en la práctica.

[3]​ Esto es particularmente malo si la desviación estándar es pequeña en relación con la media.

Sin embargo, el algoritmo puede mejorarse adoptando el método de la media falsa.

una constante cualquiera, se obtiene la nueva fórmula: Cuanto más cerca esté

Técnicas como la suma compensada se pueden usar para combatir este error hasta cierto punto.

A menudo es útil poder calcular la variación en una sola pasada, inspeccionando cada valor

solo una vez; por ejemplo, cuando los datos se recopilan sin el almacenamiento suficiente para mantener todos los valores, o cuando los costos de acceso a la memoria dominan a los de cálculo.

: Este algoritmo fue ideado por Welford,[5]​[6]​ y se ha analizado exhaustivamente.

El algoritmo paralelo mostrado más adelante ilustra cómo combinar varios conjuntos de estadísticas calculadas en línea.

West (1979)[9]​ sugiere este algoritmo incremental: Chan et al.

El método de Chan para estimar la media es numéricamente inestable cuando

Esto se puede generalizar para permitir la paralelización con Extensiones Vectoriales Avanzadas (EVA), con unidades de procesamiento gráfico y agregados de computadoras, y para la covarianza.

Si bien esta pérdida de precisión puede ser tolerable y vista como un defecto menor del algoritmo "ingenuo", un aumento adicional del desplazamiento hace que el error sea catastrófico.

Este es un problema serio con el algoritmo "ingenuo" y se debe a la cancelación catastrófica en la resta de dos números similares en la etapa final del algoritmo.

Terriberry[11]​ amplía las fórmulas de Chan para calcular el tercer y cuarto momento central, necesarios, por ejemplo, al estimar la asimetría estadística y la curtosis: Aquí, los

Un ejemplo del algoritmo en línea para la curtosis implementado como se describe es: Pébaÿ[12]​ extiende aún más estos resultados a momentos centrales de orden arbitrario, para los casos incrementales y por pares, y posteriormente Pébaÿ et al.

El primer enfoque es calcular los momentos estadísticos separando los datos en contenedores y luego calculando los momentos a partir de la geometría del histograma resultante, que efectivamente se convierte en un algoritmo de un paso para momentos más altos.

se pueden calcular a partir del histograma relativo: donde el superíndice

indica que los momentos se calculan a partir del histograma.

se pueden combinar por adición, y no hay límite superior en el valor de

) se utilizan después para calcular los momentos centrales de la historia temporal concatenada.

Finalmente, los momentos estadísticos de la historia concatenada se computan a partir de los momentos centrales: Se pueden usar algoritmos muy similares para calcular el covarianza.

El algoritmo "ingenuo" es: Para el algoritmo anterior, se podría usar el siguiente código de Python: En cuanto a la varianza, la covarianza de dos variables aleatorias también es invariante al cambio, por lo que dados dos valores constantes

pueden escribirse: y nuevamente, elegir un valor dentro del rango de valores estabilizará la fórmula contra la cancelación catastrófica y lo hará más robusto contra grandes sumas.

Tomando el primer valor de cada conjunto de datos, el algoritmo se puede escribir como: El algoritmo de dos pasos primero calcula las medias muestrales y luego la covarianza: Se puede escribir como: Una versión compensada ligeramente más precisa realiza el algoritmo "ingenuo" completamente en los residuos.

deberían ser cero, pero la segunda pasada compensa cualquier pequeño error.

: La asimetría aparente en esa última ecuación se debe al hecho de que

Así se puede calcular la covarianza como También se puede hacer una pequeña modificación para calcular la covarianza ponderada: Del mismo modo, existe una fórmula para combinar las covarianzas de dos conjuntos que se pueden usar para paralelizar el cálculo:[3]​ También existe una versión del algoritmo en línea ponderado que se actualiza por lotes: haciendo que