Calcolare la media di un flusso di dati, ignorando i valori che sono molto lontani

2

Ho un flusso di dati interi e voglio eseguire alcune analisi statistiche su di esso. Voglio calcolare la media e la deviazione standard di esso. Finora non è difficile, ma tieni presente che sto parlando di flussi di dati, preferirei non archiviare tutti i dati. Esiste sia un algoritmo per la media che la deviazione per mantenere i dati memorizzati al minimo - mi riferisco a Wikipedia in questa materia.

Ma il problema ora è che alcuni dati saranno completamente assurdi rispetto al resto dei dati. Per esempio riceverò

1 2 2134 7 -2 14 // 2134 is out of line and junk, don't calculate with it

So in quali intervalli saranno probabilmente i miei valori, ma solo in relazione al loro valore medio. Quindi mi piacerebbe sapere se c'è un buon approccio per affrontare questo tipo di rumori.

È ancora più fastidioso, dato che i dati spazzatura saranno probabilmente i primi ad arrivare e non in linea con il valore medio del resto della sequenza, quindi non posso precalcolare il valore medio. Un esempio potrebbe essere qualcosa di simile

1111 1564 13 1645 12 -4 37 90 ...

Il junk rende < 5% dei dati, quindi almeno non c'è molto rumore, ma devo tenerlo fuori dai miei calcoli.

Per distinguere tra dati reali e dati spazzatura, so che i dati reali si trovano in un intervallo limitato attorno al valore medio - adattato all'esempio precedente, sarebbe qualcosa come + -200. I "gruppi" di dati spazzatura possono comportarsi allo stesso modo, solo che il loro valore medio differisce di almeno 1 volte la lunghezza dell'intervallo dal valore medio dei dati reali.

All'inizio, senza dati, non ho idea di quale potrebbe essere il valore medio dei dati reali.

Posso riprodurre una quantità limitata / piccola frazione di dati solo salvandoli prima in memoria.

Esiste un buon algoritmo che occupa meno spazio possibile e funziona quando applicato iterativamente a una sequenza?

    
posta WorldSEnder 06.08.2015 - 19:51
fonte

1 risposta

3

L'elaborazione del segnale è un argomento enorme, e molto dipende dalla tua applicazione, ma un buon inizio per la tua ricerca sarebbe un filtro di Kalman . È ricorsivo, quindi non richiede la memorizzazione dell'intera cronologia e viene comunemente utilizzato per attività come il filtraggio di valori anomali da un segnale del sensore.

    
risposta data 06.08.2015 - 20:52
fonte

Leggi altre domande sui tag