Moving Media Vs Iir Filtro


La Guida scienziato e ingegneri per Digital Signal Processing di Steven W. Smith, Ph. D. Capitolo 19: Filtri ricorsivi Il metodo ricorsivo Per avviare la discussione di filtri ricorsivi, immaginate che avete bisogno di estrarre informazioni da un segnale, x. Il vostro bisogno è così grande che assumete un vecchio professore di matematica per elaborare i dati per voi. Il compito è quello di filtrare i professori x per la produzione di y, si spera che contiene le informazioni che interessa. Il professore inizia la sua opera di calcolare ogni punto y secondo alcuni algoritmi che è bloccato saldamente nel suo cervello over-sviluppato. in parte attraverso l'operazione, si verifica un evento più sfortunato. Il professore inizia a balbettare su singolarità analitiche e trasforma frazionali, e altri demoni da un incubo matematici. E 'chiaro che il professore ha perso la sua mente. Si guarda con ansia il professore, e l'algoritmo, vengono portati via da alcuni uomini in camice bianco. È freneticamente leggere le note professori per trovare l'algoritmo che stava usando. Si scopre che aveva completato il calcolo dei punti y 0 a y 27, e stava per iniziare il punto y 28. Come mostrato in fig. 19-1, lasceremo la variabile, n. rappresentano il punto che si sta calcolando. Ciò significa che yn è campione 28 nel segnale di uscita, yn - 1 è campione 27, yn - 2 è campione 26, ecc Analogamente, xn è il punto 28 nel segnale di ingresso, xn - 1 è punto 27, ecc Per capire l'algoritmo utilizzato, ci chiediamo: Quali informazioni sono state disponibili al professore per calcolare YN, il campione attualmente in lavorazione la più ovvia fonte di informazioni è il segnale di ingresso. vale a dire, i valori: xn, xn - 1, xn - 2, 8230. Il professore avrebbe potuto essere moltiplicando ogni punto del segnale di ingresso per un coefficiente, e aggiungendo i prodotti insieme: Si dovrebbe riconoscere che questo non è altro che semplice convoluzione, con i coefficienti: a 0. un 1. 2. 8230, formando il nucleo di convoluzione. Se questo era tutto il professore stava facendo, ci fosse scadente molto bisogno di questa storia, o di questo capitolo. Tuttavia, vi è un'altra fonte di informazioni che il professore ha avuto accesso a: i valori precedentemente calcolati del segnale in uscita, tenutasi a: yn - 1, yn - 2, yn - 3, 8230. Usando queste informazioni supplementari, l'algoritmo sarebbe nella forma: in parole, ogni punto del segnale di uscita si trova moltiplicando i valori del segnale in ingresso i coefficienti a, moltiplicando i valori precedentemente calcolati dal segnale di uscita dai coefficienti b, e aggiungendo i prodotti insieme. Si noti che ci non è un valore per B 0. perché questo corrisponde al campione calcolata. Equazione 19-1 è chiamata equazione ricorsione. e filtri che lo utilizzano sono chiamati filtri ricorsivi. I valori di A e B che definiscono il filtro sono chiamati i coefficienti di ricorsione. In pratica, non più di circa una dozzina di coefficienti di ricorsione possono essere utilizzati o il filtro diventa instabile (cioè l'uscita aumenta continuamente o oscilla). Tabella 19-1 mostra un programma di filtro ricorsivo esempio. filtri ricorsivi sono utili perché bypassare una convoluzione più lungo. Per esempio, si consideri che cosa accade quando una funzione delta viene fatto passare attraverso un filtro ricorsivo. L'uscita è la risposta all'impulso filtri. e sarà tipicamente una oscillazione sinusoidale che decade esponenzialmente. Dal momento che questa risposta all'impulso in infinitamente lungo, filtri ricorsivi sono spesso chiamati filtri infiniti risposta all'impulso (IIR). In effetti, filtri ricorsivi convolve il segnale di ingresso con un kernel filtro molto lungo, anche se solo pochi coefficienti sono coinvolti. Il rapporto tra i coefficienti ricorsione e la risposta filtri è dato da una tecnica matematica chiamata z-trasformata. l'argomento del capitolo 31. Ad esempio, la trasformata z può essere utilizzato per operazioni quali: la conversione tra i coefficienti ricorsione e la risposta in frequenza, combinando stadi in cascata e parallele in un unico filtro, progettare sistemi ricorsivi che imitano filtri analogici, ecc . Purtroppo, la Z-transform è molto matematica, e più complicato di quanto la maggior parte degli utenti DSP sono disposti ad affrontare. Questo è il regno di quelli che si specializzano in DSP. Ci sono tre modi per trovare i coefficienti di ricorsione, senza dover capire la Z-trasformazione. In primo luogo, questo capitolo contiene equazioni di progetto per i diversi tipi di semplici filtri ricorsivi. In secondo luogo, il capitolo 20 fornisce un programma per computer libro di cucina per la progettazione dei più sofisticati filtri passa-basso Chebyshev e passa-alto. In terzo luogo, il capitolo 26 descrive un metodo iterativo per la progettazione di filtri ricorsivi con una frequenza arbitraria risposta. L'elettrodo scienziato e Guida Ingegneri di Digital Signal Processing di Steven W. Smith, Ph. D. Capitolo 28: processori di segnali digitali Architettura del Digital Signal Processor Uno dei maggiori ostacoli nell'eseguire algoritmi DSP è il trasferimento delle informazioni da e verso la memoria. Questo include i dati. ad esempio campioni del segnale di ingresso e dei coefficienti del filtro, nonché istruzioni di programma. i codici binari che vanno nel sequencer programma. Ad esempio, supponiamo che dobbiamo moltiplicare due numeri che si trovano da qualche parte nella memoria. Per fare questo, dobbiamo prendere tre valori binari dalla memoria, i numeri per essere moltiplicati, oltre al programma di istruzione che descrive cosa fare. Figura 28-4a mostra come questo compito apparentemente semplice è fatto in un microprocessore tradizionale. Questo è spesso chiamato architettura di von Neumann. dopo il brillante matematico americano John von Neumann (1903-1957). Von Neumann ha guidato la matematica di molte importanti scoperte del primo Novecento. I suoi numerosi successi includono: lo sviluppo del concetto di un computer programma memorizzato, formalizzando la matematica della meccanica quantistica, e lavorare alla bomba atomica. Se era nuovo ed eccitante, Von Neumann c'era Come mostrato in (a), l'architettura Von Neumann contiene un'unica memoria e un unico bus per il trasferimento dei dati da e verso l'unità centrale di elaborazione (CPU). Moltiplicando due numeri richiede almeno tre cicli di clock, uno per trasferire ciascuno dei tre numeri sul bus dalla memoria alla CPU. Noi non contare il tempo di trasferire il risultato alla memoria, perché si suppone che rimanga nella CPU per la manipolazione aggiuntivo (come la somma dei prodotti in un filtro FIR). Il design di Von Neumann è abbastanza soddisfacente quando si è contenuto per eseguire tutte le attività necessarie in serie. In realtà, la maggior parte dei computer oggi sono del disegno di Von Neumann. Abbiamo solo bisogno di altre architetture quando è richiesta l'elaborazione molto veloce, e siamo disposti a pagare il prezzo di una maggiore complessità. Questo ci porta a l'architettura di Harvard. mostrato in (b). Questo è chiamato per il lavoro svolto alla Harvard University nel 1940 sotto la guida di Howard Aiken (1900-1973). Come mostrato in questa illustrazione, Aiken ha insistito su memorie separate per le istruzioni di dati e programmi, con gli autobus separati per ogni. Poiché gli autobus operano indipendentemente, istruzioni e dati di programma possono essere prelevati contemporaneamente, migliorando la velocità sopra il disegno unico bus. La maggior parte dei presenti DSP giorno utilizzano questa architettura dual bus. Figura (c) illustra il prossimo livello di sofisticazione, il Super Harvard Architettura. Questo termine è stato coniato da Analog Devices per descrivere il funzionamento interno delle loro famiglie ADSP-211xx ADSP-2106x e nuovo di Digital Signal Processors. Questi sono chiamati SHARC DSP, una contrazione di più lungo termine, S uper H arvard ARC hitecture. L'idea è quella di sviluppare l'architettura di Harvard con l'aggiunta di caratteristiche per migliorare il throughput. Mentre i DSP SHARC sono ottimizzate in decine di modi, due aree sono abbastanza importante da essere inclusi in Fig. 28-4c: una cache istruzioni. e un IO Controller. Innanzitutto, lascia guardare come la cache istruzioni migliora le prestazioni dell'architettura Harvard. Un handicap del progetto di base di Harvard è che il bus di memoria di dati è più occupato di bus di memoria di programma. Quando due numeri sono moltiplicati, due valori binari (i numeri) devono essere trasmessi sul bus di memoria di dati, mentre solo valore binario (l'istruzione di programma) attraversa il bus di memoria di programma. Per migliorare questa situazione, iniziamo spostando parte dei dati di memoria di programma. Per esempio, possiamo collocare i coefficienti del filtro di memoria di programma, mantenendo il segnale in ingresso nella memoria dati. (Questi dati trasferiti è chiamata dati secondari in figura). A prima vista, questo doesnt sembrano aiutare la situazione ora dobbiamo trasferire un valore sopra il bus di memoria dei dati (il campione del segnale in ingresso), ma due valori sopra il bus di memoria di programma (le istruzioni del programma e il coefficiente). In effetti, se dovessimo eseguire istruzioni a caso, questa situazione non sarebbe meglio a tutti. Tuttavia, algoritmi DSP generalmente passano la maggior parte del loro tempo di esecuzione in loop, come ad esempio le istruzioni 6-12 della tabella 28-1. Ciò significa che lo stesso insieme di istruzioni di programma continuamente passare dalla memoria di programma nella CPU. L'architettura Super Harvard sfrutta questa situazione, includendo una cache istruzioni nella CPU. Questa è una piccola memoria che contiene circa 32 delle più recenti istruzioni del programma. La prima volta attraverso un ciclo, le istruzioni del programma deve essere trasmesso sul bus memoria di programma. Ciò si traduce in un'operazione più lenta a causa del conflitto con i coefficienti che devono anche essere recuperato su questa strada. Tuttavia, ulteriori esecuzioni del ciclo, le istruzioni di programma possono essere estratti dalla cache di istruzioni. Ciò significa che tutta la memoria ai trasferimenti di informazioni CPU può essere realizzato in un unico ciclo: il campione dal segnale di ingresso viene fornito sul bus di memoria di dati, il coefficiente arriva sul bus memoria di programma, e l'istruzione programma viene fornito dalla cache istruzioni . Nel gergo del settore, questo trasferimento efficiente dei dati è chiamato a banda larga della memoria di accesso. Figura 28-5 presenta una vista più dettagliata dell'architettura SHARC, mostrando il controllore IO collegato alla memoria dati. Questo è il modo in cui i segnali entrano ed escono dal sistema. Per esempio, il SHARC DSP fornisce entrambe le porte di comunicazione seriali e parallele. Questi sono collegamenti ad altissima velocità. Ad esempio, ad una velocità di clock 40 MHz, ci sono due porte seriali che operano a 40 Mbitssecond ciascuno, mentre sei porte parallele ciascuna forniscono un trasferimento di dati 40 Mbytessecond. Quando tutte e sei le porte parallele sono utilizzati insieme, la velocità di trasferimento dei dati è un incredibile 240 Mbytessecond. Questo è abbastanza veloce per trasferire l'intero testo di questo libro in soli 2 millisecondi altrettanto importante, l'hardware dedicato permette a questi flussi di dati da trasferire direttamente nella memoria (Direct Memory Access, o DMA), senza dover passare attraverso i registri CPU. In altre parole, i compiti 1 amp 14 sulla nostra lista avvengono in modo indipendente e in contemporanea con le altre attività non cicli vengono rubati dalla CPU. I principali bus (bus di memoria di programma e bus di memoria dati) sono accessibili dall'esterno del chip, fornendo un'interfaccia aggiuntiva alla memoria off-chip e periferiche. In questo modo i DSP SHARC a utilizzare un quattro Gigaword (16 Gbyte) di memoria, accessibile a 40 Mwordssecond (160 Mbytessecond), per i dati a 32 bit. Wow questo tipo di alta velocità IO è una caratteristica fondamentale di DSP. L'obiettivo primario è quello di spostare i dati in, eseguire la matematica, e spostare i dati prima che il campione successivo è disponibile. Tutto il resto è secondario. Alcuni DSP hanno a bordo analogico-digitale e digitale-analogici convertitori, una funzione denominata segnale misto. Tuttavia, tutti i DSP possono interfacciarsi con i convertitori esterni tramite porte seriali o parallele. Ora lascia lo sguardo all'interno della CPU. Nella parte superiore del diagramma sono due blocchi etichettato Indirizzo dati Generator (DAG), uno per ciascuna delle due memorie. Questi controllano gli indirizzi inviati al programma e dati ricordi, precisando, se le informazioni devono essere letti o scritti a. In microprocessori più semplici questo compito viene gestito come parte integrante del programma di sequencer, ed è abbastanza trasparente per il programmatore. Tuttavia, DSP sono progettati per funzionare con buffer circolari. e beneficiare della hardware aggiuntivo per gestire in modo efficiente. Ciò evita di dover utilizzare preziosi cicli di clock della CPU per tenere traccia di come i dati vengono memorizzati. Ad esempio, nei DSP SHARC, ciascuno dei due DAG possono controllare otto buffer circolari. Questo significa che ogni DAG contiene 32 variabili (4 per ogni buffer), più la logica necessaria. Perché così tanti buffer circolare alcuni algoritmi DSP sono meglio effettuate in fasi. Per esempio, filtri IIR sono più stabili se implementata come una cascata di biquads (una fase contenente due poli e fino a due zeri). stadi multipli richiedono più buffer circolare per il funzionamento più veloce. I DAG nei DSP SHARC sono inoltre progettati per svolgere efficacemente la Fast Fourier Transform. In questa modalità, i DAG sono configurati per generare indirizzi bit-invertito nei buffer circolare, una parte necessaria dell'algoritmo FFT. Inoltre, l'abbondanza di buffer circolari semplifica notevolmente codice DSP generazione - sia per il programmatore umana e compilatori linguaggio di alto livello, come C. La sezione registro di dati della CPU viene utilizzata nello stesso modo come in microprocessori tradizionali. Nei ADSP-2106x SHARC DSP, ci sono 16 registri di uso generale di 40 bit ciascuno. Questi possono contenere calcoli intermedi, preparare i dati per il processore matematico, fungere da cuscinetto per il trasferimento dati, tenere bandiere per il controllo del programma, e così via. Se necessario, questi registri possono essere utilizzati anche per controllare loop e contatori tuttavia, i DSP SHARC hanno registri hardware supplementare per svolgere molte di queste funzioni. L'elaborazione matematica è suddiviso in tre sezioni, un moltiplicatore. una unità logica aritmetica (ALU). ed un shifter barile. Il moltiplicatore prende i valori da due registri, li moltiplica, e pone il risultato in un altro registro. La ALU esegue addizione, sottrazione, in valore assoluto, operazioni logiche (AND, OR, XOR, NOT), la conversione tra formati fissi e in virgola mobile, e funzioni simili. operazioni binarie elementari sono svolte da shifter botte, come spostamento, rotazione, estrazione e deposito segmenti, e così via. Una caratteristica potente della famiglia SHARC è che il moltiplicatore e l'ALU può accedere in parallelo. In un unico ciclo di clock, i dati dei registri 0-7 possono essere passati al moltiplicatore, dati dei registri 8-15 possono essere passati al ALU, ed i due risultati restituiti qualsiasi 16 registri. Ci sono anche molte caratteristiche importanti dell'architettura famiglia SHARC che arent mostrato in questa illustrazione semplificata. Per esempio, un accumulatore di 80 bit è costruito in moltiplicatore di ridurre l'errore di arrotondamento associati con più operazioni matematiche in virgola fissa. Un'altra caratteristica interessante è l'uso di registri ombra per tutti i registri chiave CPU. Questi sono i registri duplicati che possono essere commutati con le loro controparti in un singolo ciclo di clock. Sono utilizzati per la commutazione contesto veloce. la capacità di gestire interrompe rapidamente. Quando un interrupt si verifica in microprocessori tradizionali, tutti i dati interni devono essere salvati prima dell'interruzione può essere gestito. Questo di solito comporta spingendo tutti i registri occupati nello stack, uno alla volta. In confronto, un interrupt nella famiglia SHARC è gestita spostando i dati interni nei registri ombra in un unico ciclo di clock. Quando la routine di interrupt è completato, i registri sono altrettanto rapidamente ripristinati. Questa funzione consente il passaggio 4 sulla nostra lista (gestione interrupt campione-ready) da trattare molto rapido ed efficiente. Veniamo ora alla prestazione critica dell'architettura, quante delle operazioni all'interno del ciclo (punti 6-12 della Tabella 28-1) può essere eseguita contemporaneamente. A causa della sua natura altamente parallela, il SHARC DSP può contemporaneamente svolgere tutti questi compiti. In particolare, all'interno di un singolo ciclo di clock, si può eseguire una moltiplicazione (passo 11), un'aggiunta (punto 12), due mosse di dati (i punti 7 e 9), aggiornare due puntatori buffer circolare (punti 8 e 10), e controllare la ciclo (fase 6). Ci saranno cicli di clock aggiuntivi associati con inizio e fine ciclo (punti 3, 4, 5 e 13, oltre a spostare i valori iniziali in posizione) Tuttavia, questi compiti vengono gestiti in modo molto efficiente. Se il ciclo viene eseguito più di un paio di volte, questo overhead sarà trascurabile. A titolo di esempio, si supponga che si scrive un programma di filtro FIR efficiente utilizzando 100 coefficienti. Ci si può aspettare per richiedere circa 105 a 110 di clock cicli per campione da eseguire (cioè 100 cicli coefficiente più alto). Questo è molto impressionante un microprocessore tradizionale richiede molte migliaia di cicli di clock per questo algorithm. I sto lavorando con una grande quantità di serie temporali. Tali serie sono sostanzialmente misurazioni rete provenienti ogni 10 minuti, e alcuni di loro sono periodiche (cioè la larghezza di banda), mentre altre Arent (cioè la quantità di traffico di instradamento). Vorrei un semplice algoritmo per fare un rilevamento di valori erratici on-line. Fondamentalmente, voglio mantenere in memoria (o su disco) l'intero dati storici per ogni serie temporale, e voglio rilevare qualsiasi valore anomalo in uno scenario vivo (ogni volta che un nuovo campione viene catturato). Qual è il modo migliore per raggiungere questi risultati Im attualmente utilizzando una media mobile al fine di rimuovere il rumore, ma poi cosa prossimi Cose semplici come deviazione standard, pazza. contro l'intero insieme di dati doesnt funziona bene (non posso presumo il tempo della serie sono fermi), e vorrei qualcosa di più preciso, idealmente una scatola nera come: doppia outlierdetection (doppia vettore, valore doppio) dove vettore è la matrice del doppio contenente i dati storici, e il valore di ritorno è il punteggio di anomalia per il nuovo valore del campione. chiesto 2 agosto 10 alle 20:37 Sì, ho assunto la frequenza è nota e specificato. Ci sono metodi per stimare la frequenza automaticamente, ma che complicherebbe la funzione considerevolmente. Se è necessario stimare la frequenza, provate a chiedere una domanda separata su di esso - e I39ll probabilmente fornire una risposta, ma ha bisogno di più spazio di quello che ho a disposizione in un commento. ndash Rob Hyndman 3 agosto 10 alle 23:40 Una buona soluzione avrà diversi ingredienti, tra cui: Utilizzare un resistente, finestra mobile liscio per rimuovere non stazionarietà. Riesprimere i dati originali in modo che i residui rispetto al corretto sono circa simmetricamente distribuite. Data la natura dei dati, la sua probabile che le loro radici quadrate o logaritmi darebbero residui simmetrici. Applicare metodi di controllo grafico, o almeno di controllo grafico pensiero, per i residui. Per quanto riguarda l'ultima si va, carta di controllo pensiero dimostra che le soglie convenzionali come 2 SD o 1,5 volte la IQR oltre i quartili funzionano male perché fanno scattare troppi falsi segnali out-of-controllo. La gente di solito usano 3 SD sotto controllo il lavoro grafico, dove 2.5 (o anche 3) volte il IQR oltre i quartili sarebbe un buon punto di partenza. Ho più o meno delineato la natura della soluzione Rob Hyndmans mentre l'aggiunta ad esso due punti principali: la potenziale necessità di ri-esprimere i dati e la saggezza di essere più conservatore nel segnalare un outlier. Non sono sicuro che Loess è buono per un rilevatore on-line, però, perché doesnt funzionare bene alle estremità. Si potrebbe invece utilizzare qualcosa di semplice come un filtro mediano in movimento (come in lisciatura resistenti Tukeys). Se i valori anomali Dont Come a raffica, è possibile utilizzare una stretta finestra (5 punti di dati, forse, che si rompe solo con una raffica di 3 o più valori anomali all'interno di un gruppo di 5). Dopo aver eseguito l'analisi per determinare un buon ri-espressione dei dati, la sua youll improbabile bisogno di cambiare la ri-espressione. Pertanto, il rilevatore on-line in realtà ha solo bisogno di fare riferimento ai valori più recenti (l'ultima finestra) perché non ci vorrà utilizzare i dati precedenti a tutti. Se si dispone di serie storiche molto lungo si potrebbe andare oltre per analizzare autocorrelazione e stagionalità (come ricorrenti giornaliera o fluttuazioni settimanali) per migliorare la procedura. risposto 26 Ago 10 in 18:02 John, 1.5 IQR è Tukey39s raccomandazione originale per i baffi più lunghi su un grafico a scatole e 3 IQR è la sua raccomandazione per la marcatura punti quotfar outliersquot (un riff su un popolare frase 6039s). Questo è integrata in molti algoritmi grafico a scatole. La raccomandazione viene analizzato teoricamente in Hoaglin, Mosteller, amplificatore Tukey, comprensione robusta e analisi esplorativa dei dati. ndash w Huber 9830 9 ottobre 12 a 21:38 Questo conferma i dati di serie temporali ho cercato di analizzare. media finestra e anche una deviazione standard della finestra. ((X - media) sd) GT 3 sembrano essere i punti che voglio segnala come valori anomali. Beh, almeno avvertire come valori anomali, segnalo qualcosa di superiore al 10 SD come valori anomali di errore estreme. Il problema che ho incontrato è ciò che è una lunghezza vetrina ideale I39m giocare con nulla tra 4-8 punti di dati. ndash NeoZenith 29 giugno 16 alle 8:00 Neo La cosa migliore potrebbe essere quella di sperimentare un sottoinsieme di dati e di confermare le conclusioni con i test sul resto. Si potrebbe effettuare una convalida incrociata più formale, anche (ma è richiesta particolare attenzione con i dati di serie temporali a causa della interdipendenza di tutti i valori). ndash w Huber 9830 29 Giugno 16 anni al 00:10 (Questa risposta è risposto a un duplicato (ora chiuso) domanda a rilevare eventi eccezionali. che ha presentato alcuni dati in forma grafica.) rilevamento di valori erratici dipende dalla natura dei dati e su ciò che si sono disposti ad assumere su di loro. metodi di impiego generale si basano su statistiche affidabili. Lo spirito di questo approccio è quello di caratterizzare la maggior parte dei dati in un modo che non è influenzato da eventuali valori anomali e quindi selezionare i valori individuali che non rientrano nell'ambito di tale caratterizzazione. Poiché si tratta di una serie storica, si aggiunge la complicazione di dover (ri) scoprire i valori anomali su base continuativa. Se questo deve essere fatto come la serie si sviluppa, quindi ci sono solo permesso di utilizzare i dati meno recenti per la rilevazione, non dati futuri Inoltre, come protezione contro le molte prove ripetute, vorremmo usare un metodo che ha un bassissimo falso tasso positivo. Queste considerazioni suggeriscono l'esecuzione di un semplice, robusta prova outlier finestra mobile sui dati. Ci sono molte possibilità, ma un semplice, facilmente comprensibile e di facile applicazione è basato su un MAD esecuzione: deviazione assoluta mediana dalla mediana. Questa è una misura fortemente di variazione robusto all'interno dei dati, simile a una deviazione standard. Un picco periferico sarebbe diverse organizzazioni sanitarie o più superiore alla mediana. C'è ancora un po 'di messa a punto da fare. quanto di una deviazione dalla maggior parte dei dati dovrebbe essere considerato periferico e quanto indietro nel tempo dovrebbe uno sguardo Lascia lasciare questi come parametri per la sperimentazione. Ecco una implementazione R applicata ai dati x (1,2, ldots, n) (con n1150 di emulare i dati) con i corrispondenti valori y: Applicato ad un insieme di dati come la curva rossa illustrata nella questione, che produce questo risultato: i dati sono mostrati in rosso, la finestra di 30 giorni di soglie median5MAD in grigio, e le aberranti - che sono semplicemente quei valori di dati al di sopra della curva di colore grigio - in nero. (La soglia può essere calcolato solo a partire dalla fine della finestra iniziale Per tutti i dati all'interno di questa finestra iniziale, la prima soglia viene utilizzato:.. Ecco perché la curva grigia è piatta tra x0 e x30) Gli effetti della modifica dei parametri sono (a) aumentando il valore della finestra tenderà a smussare la curva grigia e (b) aumentare la soglia solleverà la curva grigia. Sapendo questo, si può prendere un segmento iniziale dei dati e rapidamente identificare i valori dei parametri che meglio segregano i picchi periferiche dal resto dei dati. Applicare questi valori dei parametri per controllare il resto dei dati. Se un grafico mostra il metodo peggiora nel tempo, significa che la natura dei dati stanno cambiando ed i parametri potrebbe essere necessario ri-sintonizzazione. Si noti quanto poco questo metodo presuppone sui dati: essi non devono essere distribuiti normalmente non hanno bisogno di esibire alcuna periodicità essi non hanno nemmeno bisogno di essere non negativo. Tutto assume è che i dati si comportano in modo ragionevolmente simili nel tempo e che i picchi periferiche sono visibilmente superiore rispetto al resto dei dati. Se qualcuno volesse sperimentare (o confrontare qualche altra soluzione a quello offerto qui), ecco il codice che ho usato per la produzione di dati come quelli indicati nella domanda. Sto indovinando modello di serie sofisticato tempo non funziona per voi a causa del tempo necessario per rilevare valori anomali utilizzando questa metodologia. Quindi, ecco una soluzione: in primo luogo stabilire una base schemi di traffico normali per un anno sulla base di analisi manuale dei dati storici che rappresenta il momento della giornata, giorno della settimana vs fine settimana, i mesi dell'anno, ecc Utilizzare questa linea di base insieme ad alcuni semplice meccanismo (ad esempio media mobile suggerito da Carlos) per rilevare valori anomali. Si consiglia inoltre di rivedere la letteratura controllo statistico di processo per alcune idee. Sì, questo è esattamente ciò che sto facendo: fino ad ora ho diviso manualmente il segnale in periodi, in modo che per ognuno di loro posso definire un intervallo di confidenza all'interno del quale il segnale dovrebbe essere fisso, e quindi posso usare metodi standard tali come deviazione standard. Il vero problema è che non riesco a decidere il modello atteso per tutti i segnali che devo analizzare e that39s perché I39m alla ricerca di qualcosa di più intelligente. ndash gianluca 2 agosto 10 alle 21.37 Ecco una sola idea: Fase 1: Implementare e stimare un modello Time Series generico su una base una volta sulla base dei dati storici. Questo può essere fatto in linea. Fase 2: utilizzare il modello risultante per individuare valori anomali. Fase 3: Ad una certa frequenza (forse ogni mese), ri-calibrare il modello di serie storica (questo può essere fatto in linea) in modo che il rilevamento punto 2 di valori anomali non va troppo al passo con i modelli di traffico attuali. Vorrei che il lavoro per il contesto ndash user28 2-ago-10 a 22:24 Sì, questo potrebbe funzionare. Stavo pensando a un approccio simile (ricalcolare la linea di base ogni settimana, che può essere la CPU se si dispone di centinaia di serie temporali univariata per analizzare). BTW la vera domanda è difficile quotwhat è il miglior algoritmo di Blackbox stile per la modellazione di un segnale del tutto generico, considerando il rumore, la stima tendenza e seasonalityquot. Per quanto ne so, ogni approccio in letteratura richiede una fase quotparameter tuningquot davvero difficile, e l'unico metodo automatico che ho trovato è un modello ARIMA da Hyndman (robjhyndmansoftwareforecast). Mi sto perdendo qualcosa ndash gianluca 2 agosto 10 alle 22:38 Ancora una volta, questo funziona abbastanza bene se si suppone il segnale di avere una stagionalità del genere, ma se uso una serie storica completamente diversa (cioè il tempo di andata e ritorno TCP media nel corso del tempo ), questo metodo non funziona (poiché sarebbe meglio gestire quella con una semplice media globale e deviazione standard utilizzando una finestra scorrevole contenente dati storici). ndash gianluca 2 agosto 10 a 22:02 A meno che non si è disposti a implementare un modello di serie storica generale (che porta nei suoi svantaggi in termini di latenza, ecc) Sono pessimista che troverete un'implementazione generale che allo stesso tempo è abbastanza semplice a lavorare per tutti i tipi di serie temporali. ndash user28 2 10 agosto a 22:06 Un altro commento: So che una buona risposta potrebbe essere quotso si potrebbe stimare la periodicità del segnale, e decidere l'algoritmo da utilizzare in base alle itquot, ma ho didn39t trovare una vera buona soluzione a questo altro problema (ho giocato un po 'con l'analisi spettrale utilizzando DFT e analisi in tempo utilizzando la funzione di autocorrelazione, ma la mia serie temporali contengono un sacco di rumore e tali metodi danno alcuni risultati folli mosts del tempo) ndash Gianluca 2 agosto 10 alle 22:06 a commento al tuo ultimo commento: that39s perché I39m alla ricerca di un approccio più generico, ma ho bisogno di una sorta di quotblack boxquot perché ho can39t fare qualsiasi ipotesi circa il segnale analizzato, e quindi mi can39t creare il parametro quotbest impostato per il algorithmquot apprendimento. ndash gianluca 2 agosto 10 a 22:09 Dal momento che è un dato di serie temporali, un semplice en. wikipedia. orgwikiExponentialsmoothing filtro esponenziale lisciare i dati. E 'un buon filtro in quanto non avete bisogno di accumulare i vecchi punti di dati. Confronta ogni valore dati appena lisciato con il suo valore non livellato. Una volta che la deviazione supera una certa soglia predefinita (a seconda di ciò che si crede un outlier in dati), allora il vostro outlier possono essere facilmente individuati. risposto 30 Apr 15 alla 08:50 Si potrebbe utilizzare la deviazione standard delle ultime misurazioni N (è necessario scegliere un adeguato N). Un buon punteggio anomalia sarebbe quanti deviazioni standard una misura è dalla media mobile. ha risposto 2 agosto 10 a 20:48 Grazie per la risposta, ma cosa succede se il segnale presenta una elevata stagionalità (vale a dire un sacco di misure di rete sono caratterizzati da uno schema giornaliero e settimanale, allo stesso tempo, ad esempio di notte vs giorno o week-end vs giorni lavorativi) Un approccio basato sulla deviazione standard non funziona in questo caso. ndash gianluca 2 agosto 10 a 20:57 Per esempio, se ho un nuovo campione ogni 10 minuti, e I39m fare un rilevamento di valori erratici del consumo di banda della rete di un'azienda, in fondo a 6pm questa misura cadrà (si tratta di un previsto un modello totalmente normale), e una deviazione standard calcolato su una finestra scorrevole fallirà (perché attiverà un avviso di sicuro). Allo stesso tempo, se la misura cade a 4pm (deviando dal solito basale), questo è un vero outlier. ndash gianluca 2 agosto 10 at 20:58 quello che faccio è il gruppo delle misure di ora e giorno della settimana e confrontare deviazioni standard di questo. Ancora doesnt corretto per cose come le vacanze e EstateInverno stagionalità, ma la sua corretta la maggior parte del tempo. Lo svantaggio è che si ha realmente bisogno di raccogliere un anno o giù di lì di dati da avere abbastanza in modo che stdDev comincia ad avere senso. Analisi spettrale rileva la periodicità in serie tempo di sosta. L'approccio dominio della frequenza sulla base di stima della densità spettrale è un approccio mi sento di raccomandare come il primo passo. Se per certi periodi irregolarità significa un picco molto superiore è tipico per quel periodo poi la serie con tali irregolarità non sarebbe fermo e anlsysis spettrale non sarebbe appropriata. Ma supponendo che avete identificato il periodo che ha le irregolarità si dovrebbe essere in grado di determinare circa quale sarebbe la normale altezza di picco e quindi in grado di impostare una soglia a un certo livello superiore a quello medio per designare i casi irregolari. Risposi 3 settembre 12 a 14:59 suggerisco lo schema qui sotto, che dovrebbe essere implementabile in un giorno o due: raccogliere il maggior numero di campioni, come si può tenere in memoria Rimuovere valori anomali evidenti utilizzando la deviazione standard per ogni attributo calcolare e memorizzare la matrice di correlazione e anche la media di ciascun attributo calcolare e memorizzare le distanze di Mahalanobis di tutti i vostri campioni Calcolo outlierness: per il singolo campione di cui si vuole conoscere la sua outlierness: Recuperare i mezzi, matrice di covarianza e Mahalanobis distanza s dalla formazione Calcolare la Mahalanobis distanza d per il campione Rientro percentile in cui cade d (usando le distanze di Mahalanobis dalla formazione) che sarà il tuo punteggio di valori anomali: 100 è un outlier estrema. PS. In calculating the Mahalanobis distance. use the correlation matrix, not the covariance matrix. This is more robust if the sample measurements vary in unit and number.

Comments

Popular Posts