Gli algoritmi per il calcolo della varianza

Il calcolo della varianza in programmazione potrebbe portare a diversi tipi di errore, poichè trattandosi di valori di tipo floating point si potrebbero venire a creare problemi di approssimazione, cancellazione catastrofica e perdita di significatività. Nel tempo sono stati proposti diversi algoritmi per ovviare a questo tipo di problematiche, come l’algoritmo a due passi, in cui la devianza viene calcolata come il prodotto di due differenze e non come un quadrato, o come l’algoritmo di Knuth che ad ogni passo aggiorna sia la media che la varianza utilizzando la somma dei quadrati delle differenze dall’ultimo valore della media aritmetica calcolata.

L’algoritmo più efficienti, tra tutti quelli proposti, risulta essere l’algoritmo di Welford che utilizza una relazione tra la somma dei quadrati nelle prime n-1 unità e la somma dei quadrati delle prime unità.

Per ricostruire i passaggi matematici che permettono di arrivare alla struttura iterativa finale dell’algoritmo si ricorda la formula utilizzata nell’algoritmo di Knuth per il calcolo della media:

Si considera poi una relazione che lega lo scarto del valore al passo n dalla media al passo n con lo scarto del valore al passo n dalla media al passo n-1:

Perciò si ha una sorta di “fattore di correzione” tra la differenza del valore al passo e la media allo stesso passo con la differenza tra lo stesso valore e la media al passo precedente. Si considerano poi le seguenti proprietà della media aritmetica:

Si considera ora la devianza, o somma dei quadrati, che attraverso la seconda proprietà della media sopracitata, si può riscrivere come segue:

Utilizzando la prima relazione che utilizzata per l’algoritmo per il calcolo della media, si ottiene:

Per cui si ottiene la struttura iterativa finale dell’algoritmo per il calcolo della devianza, e quindi della varianza dividendo la devianza per n:

dove alla devianza al passo n-1 è sommata una quantità che di fatto è la “funzione di aggiornamento” del valore corrente.

Lascia un commento

Progetta un sito come questo con WordPress.com
Comincia ora