In statistica applicata nelle applicazioni, non si calcola la media aritmetica come di consueto. Cioè non si fa la somma dei numeri diviso semplicemente per il conteggio. Questo tipo di approccio non va utilizzato nelle applicazioni. E' considerato errore grave, implementare la media in quel modo in qualunque contesto. Perché sommare i valori di una variabile e dividerli per il loro conteggio può portare ad errori macroscopici. In quanto il computer nel caso del VB.Net lavorando nella rappresentazione floating-point si possono generare degli errori di approssimazione veramente mostruosi!. Calcolare la media in questo modo Naive non va fatto quando si creano codice di programmi.
Quale approccio va utilizzato?
Ad esempio se voglio calcolare la media di un dadaset in una applicazione utilizzo il cosiddetto:
Algoritmo di Knuth che è un algoritmo di tipo incrementale ovvero: la media al passo n (relativa alla n-osservazioni) viene ottenuta dalla media al passo precedente cioè relativa alle n-1 osservazioni e aggiornata con le nuove osservazioni che via via arrivano. Si tratta di uno Streaming Algorithm cioè di un algoritmo che è anche in grado di lavorare su uno stream di dati che via via che arrivano, aggiorna la media ogni qual volta arriva un nuovo dato.
Su che cosa si basa questo algoritmo?
Questo algoritmo si basa su una espressione che è matematicamente equivalente alla definizione di media, ma che una volta implementata da luogo ad un algoritmo che non ha i problemi che avrebbe un algoritmo basato semplicemente sulla definizione base di media.
Il trucco sta nel partire dalla definizione iniziale di media e prendere la somma degli n-1 elementi e farla diventare la media al passo precedente. Per fare ciò moltiplichiamo e dividiamo per n-1 come quanto segue:
In questo modo otteniamo la media al passo precedente, poi semplificando i due n e poi mettendo 1/ n in evidenza otteniamo l'espressione finale :
Che cosa rappresenta questa espressione?
Ripetendo, abbiamo la media al passo n-1 + lo scarto del nuovo valore dalla media al passo n-1 con peso 1/n. Dal punto di vista concettuale stiamo dicendo che:
Stiamo calcolando la media al passo n come la media al passo precedente cioè al passo n-1 + un termine che ha peso 1/n esimo pari allo scarto tra l'osservazione e la media al passo precedente. Quindi stiamo esplicitamente utilizzando la media al passo precedente più un termine che rappresenta l'aggiornamento di quel valore, tramite l'ultimo valore pervenuto. E' un procedimento iterativo tramite il quale calcoliamo la media, cioè lo step n tramite la media dello step precedente modificata con il contributo dell'ennesimo termine. Costruiamo un algoritmo estremamente stabile che non ha problemi di approssimazione e che si dimostra essere notevolmente più accurato di quello che si potrebbe avere utilizzando la definizione di media.
Nessun commento:
Posta un commento