Introduzione
In statistica la varianza di una variabile aleatoria X è un numero, indicato con Var(X), o

La formula matematica per il calcolo della varianza per un’intera
popolazione di dimensione N è:
La formula per il calcolo di una stima corretta della varianza di un
campione di grandezza n è invece:
Gli algoritmi per il calcolo della varianza svolgono un ruolo importante nel calcolo statistico. Uno degli algoritmi per calcolare la media e la varianza è il cosiddetto Algoritmo Naive:

Quest’algoritmo può essere utilizzato per il calcolo della varianza per un’intera popolazione semplicemente dividendo per N invece che per n-1 nell’ultima riga.
Poiché Sum_sqr e (Sum*Sum)/n possono essere numeri molto simili, questo potrebbe portare ad avere una varianza molto vicina allo 0 e quindi ad una poca precisione del risultato.
Un algoritmo alternativo a quello appena presentato prevede l’utilizzo di due step separati per il calcolo della varianza:
1) calcoliamo la media del campione:
2) calcoliamo la somma dei quadrati della differenza dalla media:
Il codice utilizzato per il Two Step Algorithm è il seguente:

Quest’algoritmo è sempre numericamente stabile, a meno che n non sia troppo elevato.
Entrambi gli algoritmi calcolano la differenza tra due somme di grandi dimensioni simili tra loro. E’, dunque, poco conveniente utilizzarli nella pratica, in quanto sono estremamente vulnerabili agli effetti dell’arrotondamento nelle operazioni con numeri a virgola mobile; è, infatti, facile incorrere ad errori computazioni come la Catastrophic Cancellation che prevede la cancellazione di molte cifre significative. E’ possibile ottenere, in alcuni casi, varianza negativa!
Gli algoritmi precedenti possono, però, essere migliorati.
Il problema della perdita di cifre significative è descritta e analizzata
da Donald Knuth (Art of Computer Programming, Vol 2, Seminumerical
Algorithms“, section 4.2.2), un informatico statunitense. La
soluzione prevede di calcolare media e varianza utilizzando equazioni di
ricorrenza nel caso di data stream:
Dalle precedenti equazioni possiamo ricavare anche la formula di ricorrenza
per la covarianza:
Media:
Varianza:
Consideriamo la differenza
:
=
=
=
=
=
I “running Algorithm” (o algoritmi online) sono quegli algoritmi che utilizzano le formule appena dimostrate. Essi vengono attribuiti da Knuth a Welford.
Considerando la quantità
, riportiamo di seguito il codice dell’algoritmo online:

Quest’algoritmo è molto meno incline alla perdita di precisione dovuta alla cancellazione, ma potrebbe essere meno efficiente a causa dell’operazione di divisione all’interno del ciclo.
Esempio
Di seguito riportiamo un codice per il calcolo della media, della varianza e della covarianza implementati in VB.NET e in C# considerando due liste a priori.
Mettendo i due codici dei due linguaggi a confronto risultano essere molto simili tra loro.
Calcolo della media in VB.NET:

Calcolo della varianza in C#:
Per il calcolo della covarianza bisogna definire un’altra lista in
quanto la covarianza è una misura di quanto due variabili aleatorie variano
assieme, ovvero al loro dipendenza:
Calcolo della covarianza in C#:
Nessun commento:
Posta un commento