Sto provando a calcolare la deviazione assoluta di un vettore online, vale a dire, poiché ogni elemento nel vettore è ricevuto, senza utilizzare l'intero vettore. La deviazione assoluta è la somma della differenza assoluta tra ogni elemento in un vettore e la media:Algoritmo online per calcolare la deviazione assoluta
So che la varianza di un vettore può essere calcolato in modo tale. Varianza è simile alla deviazione assoluta, ma ogni differenza è squadrato:
L'algoritmo online per la varianza è il seguente:
n = 0
mean = 0
M2 = 0
def calculate_online_variance(x):
n = n + 1
delta = x - mean
mean = mean + delta/n
M2 = M2 + delta*(x - mean) # This expression uses the new value of mean
variance_n = M2/n
return variance_n
Esiste un tale algoritmo di calcolo assoluto devianza? Non posso formulare una definizione ricorsiva da solo, ma i capi più saggi possono prevalere!
+1: algoritmo di calcolo della varianza in linea Interessante. – EOL
Si noti che l'algoritmo online per la varianza fornita da OP è una stima. –
@Justin Peel Tutti i calcoli in virgola mobile sono stime. Questo algoritmo è in realtà più accurato in molte situazioni del mondo reale rispetto ad altri approcci: http://www.johndcook.com/standard_deviation.html – fmark