J'utilise actuellement un algorithme de variance en ligne pour calculer la variance pour une séquence donnée. Cela fonctionne bien, et donne également une bonne stabilité numérique et une résistance au débordement, au prix d'une certaine vitesse, ce qui est bien. Ma question est, existe-t-il un algorithme qui sera plus rapide que si la moyenne de l'échantillon est déjà connue, tout en ayant une stabilité et une résistance similaires au débordement (donc pas quelque chose comme un calcul de variance naïf).Calcul de la variance donnée moyenne
Le calcul actuel de la variance en ligne est un algorithme à un seul passage avec des divisions et des multiplications dans la boucle principale (ce qui influe sur la vitesse). De wikipedia:
def online_variance(data):
n = 0
mean = 0
M2 = 0
for x in data:
n = n + 1
delta = x - mean
mean = mean + delta/n
M2 = M2 + delta*(x - mean)
variance = M2/(n - 1)
return variance
Nous ne pouvons pas dire qu'un algorithme est plus rapide qu'un autre, sans connaître l'autre ... – Floris