Calcolo della varianza

Come abbiamo già visto per la media, il calcolo delle statistiche di un campione può portare diversi problemi, sia perché, utilizzando le formule canoniche, è spesso necessario sapere in partenza il numero di elementi che si andrà a considerare, sia per le approssimazioni dovute alla rappresentazione con cifre finite dei numeri reali, che possono portare problemi quali la perdita di significatività e la cancellazione catastrofica.

Se prendiamo in considerazione la varianza, la formula canonica per il calcolo della varianza campionaria è la seguente:

\sigma^2 = \frac{1}{n} \sum_{i = 1}^{n} (x_{i} - \bar{x}_{n})^2


Questa formula però richiede la conoscenza a priori del numero di elementi del campione, cosa che non sempre è possibile. Sono stati quindi sviluppati diversi algoritmi che permetto di superare questa limitazione ed anche quella relativa alla precisione del calcolo. In particolare, l’algoritmo di Knuth permette il calcolo online della varianza

Algoritmo di Knuth

Questo algoritmo permette appunto il calcolo della varianza in un passo singolo, elaborando ogni valore x_{i} una sola volta. Per prima cosa occorre definire l’aggiornamento della media campionaria, che avviene con la seguente formula (descritta meglio nell’articolo relativo all’algoritmo di Knuth):

\bar{x}_{n} = \bar{x}_{n-1} + \frac{1}{n}(x_{n} - \bar{x}_{n-1})


Vediamo innanzitutto come può essere decomposto lo scarto semplice dell’ultimo elemento osservato dalla media campionaria, in modo da poterlo legare al passo (n-1)esimo:

x_{n} - \bar{x}_{n} = x_{n} - \frac{1}{n}\sum_{i = 1}^{n} x_{i} = x_{n} - \frac{n-1}{n}\frac{1}{n-1}\sum_{i = 1}^{n-1} x_{i} - \frac{1}{n}x_{n} =
= \frac{n-1}{n} (x_{n} - \bar{x}_{n})


A questo punto sfruttiamo una delle proprietà della media campionaria. Essa infatti minimizza la somma delle differenze al quadrato , ovvero:

argmin_{c \in C} \sum_{i = 1}^{n} (x_{i} - c)^2 = \bar{x}_{n}


Inoltre è vera l’equazione:

\sum_{i = 1}^{n} (x_{i} - c)^2 = \sum_{i = 1}^{n} (x_{i} - \bar{x}_{n})^2 - n(\bar{x}_{n} - \bar{x}_{n-1})^2


Considerando ora la devianza delle n osservazioni, e chiamandola SS_{n} per semplicità, è vera la seguente relazione:

SS_{n} = \sum_{i = 1}^{n} (x_{i} - \bar{x}_{n-1})^2 - n(\bar{x}_{n} - \bar{x}_{n-1})^2


Sostituendo ad \bar{x}_{n} la media aggiornata utilizzando la prima formula, e ad il primo termine SS_{n-1} è possibile riscrivere la formula della devianza con una struttura iterativa che utilizza, per il calcolo della devianza all’elemento nesimo, la devianza all’elemento (n-1)esimo. Per ricavare la varianza non servirà altro che dividere il risultato per n. La formula diventa quindi la seguente:

SS_{n} = SS_{n-1} + (x_{n} - \bar{x}_{n-1})^2  - n(\bar{x}_{n-1} + \frac{1}{n}(x_{n} - \bar{x}_{n-1}) - \bar{x}_{n-1})^2 =
= SS_{n-1} + \frac{n-1}{n} (x_{n} - \bar{x}_{n-1})^2


Infine, utilizzando la formula che lega lo scarto semplice dell’ultimo elemento osservato dalla media campionari al passo (n-1)esimo, possiamo scrivere:

SS_{n} = SS_{n-1} + (x_{n} - \bar{x}_{n})(x_{n} - \bar{x}_{n-1})


2 risposte a "Calcolo della varianza"

Lascia un commento