J'ai un tableau de valeurs réelles, qui a la moyenne et l'écart type . Si un élément du tableau est remplacé par un autre élément , alors la nouvelle moyenne sera
L'avantage de cette approche est qu'elle nécessite un calcul constant quelle que soit la valeur de . Existe-t-il une approche pour calculer utilisant comme le calcul de utilisant ?
standard-deviation
online
utilisateur
la source
la source
Réponses:
Une section de l'article de Wikipédia sur "Algorithmes de calcul de la variance" montre comment calculer la variance si des éléments sont ajoutés à vos observations. (Rappelez-vous que l'écart-type est la racine carrée de la variance.) Supposons que vous ajoutez à votre tableau, puisxn+1
EDIT : La formule ci-dessus semble être erronée, voir le commentaire.
Maintenant, remplacer un élément signifie ajouter une observation et en supprimer une autre; les deux peuvent être calculés avec la formule ci-dessus. Cependant, gardez à l'esprit que des problèmes de stabilité numérique peuvent survenir; l'article cité propose également des variantes numériquement stables.
Pour dériver la formule par vous-même, calculez utilisant la définition de la variance de l'échantillon et remplacez μ n e w par la formule que vous avez donnée le cas échéant. Cela vous donne σ 2 n e w - σ 2 o l d à la fin, et donc une formule pour σ n e w étant donné σ o l d et(n−1)(σ2new−σ2old) μnew σ2new−σ2old σnew σold . Dans ma notation, je suppose que vous remplacez l'élément xμold par x ′ n :xn x′n
Thexk in the sum transform into something dependent of μold , but you'll have to work the equation a little bit more to derive a neat result. This should give you the general idea.
la source
Based on what i think i'm reading on the linked Wikipedia article you can maintain a "running" standard deviation:
Although in the article they don't maintain a separate running
sum
andcount
, but instead have the singlemean
. Since in thing i'm doing today i keep acount
(for statistical purposes), it is more useful to calculate the means each time.la source
Given originalx¯ , s , and n , as well as the change of a given element xn to x′n , I believe your new standard deviation s′ will be the square root of
Maybe there is a snazzier way of writing it?
I checked this against a small test case and it seemed to work.
la source