Moving Average Vs Iir Filter


Die Wissenschaftler und Ingenieure Leitfaden zur digitalen Signalverarbeitung Von Steven W. Smith, Ph. D. Kapitel 19: Rekursive Filter Die rekursive Methode Um die Diskussion über rekursive Filter zu starten, stellen Sie sich vor, dass Sie Informationen aus irgendeinem Signal extrahieren müssen, x. Ihr Bedarf ist so toll, dass Sie einen alten Mathematikprofessor anstellen, um die Daten für Sie zu verarbeiten. Die Professoren Aufgabe ist es, x zu filtern y, die hoffentlich enthält die Informationen, die Sie interessiert sind. Der Professor beginnt seine Arbeit der Berechnung jeder Punkt in y nach einem Algorithmus, der eng in seinem überentwickelten Gehirn gesperrt ist. Ein Teil durch die Aufgabe, ein unglückliches Ereignis tritt auf. Der Professor beginnt, über analytische Singularitäten und fraktionale Transformationen und andere Dämonen aus einem Mathematiker-Alptraum zu kämpfen. Es ist klar, dass der Professor seinen Verstand verloren hat. Sie sehen mit Angst, wie der Professor, und Ihr Algorithmus, werden von mehreren Männern in weißen Mänteln weggenommen. Sie verzweifeln die Professoren Notizen, um den Algorithmus zu finden, den er benutzt hat. Sie finden, dass er die Berechnung der Punkte y 0 bis y 27 abgeschlossen hatte und im Begriff war, auf Punkt y 28 zu beginnen. Wie in Abb. 19-1 werden wir die Variable, n. Stellen Sie den Punkt dar, der gerade berechnet wird. Dies bedeutet, dass yn die Abtastung 28 im Ausgangssignal ist, yn - 1 die Probe 27 ist, yn - 2 die Probe 26 usw. ist. Ebenso ist xn Punkt 28 im Eingangssignal, xn - 1 ist Punkt 27 usw. Zu verstehen Der Algorithmus verwendet wird, fragen wir uns: Welche Informationen wurden dem Professor zur Verfügung gestellt, um yn zu berechnen, die Probe, die derzeit bearbeitet wird. Die offensichtlichste Informationsquelle ist das Eingangssignal. Das heißt, die Werte: xn, xn - 1, xn - 2, 8230. Der Professor hätte jeden Punkt im Eingangssignal mit einem Koeffizienten multiplizieren und die Produkte zusammen addieren können: Man sollte erkennen, dass dies nichts mehr als einfach ist Faltung, mit den Koeffizienten: a 0. Ein 1. A 2 8230, bilden den Faltungskern. Wenn das alles war, was der Professor tat, würde es nicht viel Bedarf für diese Geschichte oder dieses Kapitel geben. Es gibt jedoch eine weitere Informationsquelle, auf die der Professor zugreifen konnte: die zuvor berechneten Werte des Ausgangssignals, die in: yn - 1, yn - 2, yn - 3, 8230 gehalten wurden. Mit diesen zusätzlichen Informationen wäre der Algorithmus In der Form: In Worten wird jeder Punkt im Ausgangssignal durch Multiplizieren der Werte aus dem Eingangssignal mit den a-Koeffizienten, Multiplizieren der vorher berechneten Werte aus dem Ausgangssignal mit den b Koeffizienten und Addition der Produkte zusammen. Beachten Sie, dass es keinen Wert für b 0 gibt. Da dies der zu berechnenden Probe entspricht. Gleichung 19-1 heißt die Rekursionsgleichung. Und Filter, die es verwenden, heißen rekursive Filter. Die a - und b-Werte, die den Filter definieren, werden die Rekursionskoeffizienten genannt. In der Praxis können nicht mehr als etwa ein Dutzend Rekursionskoeffizienten verwendet werden oder der Filter wird instabil (d. h. der Ausgang nimmt kontinuierlich zu oder oszilliert). Tabelle 19-1 zeigt ein Beispiel rekursives Filterprogramm. Rekursive Filter sind nützlich, weil sie eine längere Faltung umgehen. Zum Beispiel, was passiert, wenn eine Delta-Funktion durch einen rekursiven Filter geleitet wird. Der Ausgang ist die Filterimpulsantwort. Und wird typischerweise eine sinusförmige Oszillation sein, die exponentiell zerfällt. Da diese Impulsantwort in unendlich lange, rekursive Filter oft als unendliche Impulsantwort (IIR) - Filter bezeichnet werden. In der Tat, rekursive Filter falten das Eingangssignal mit einem sehr langen Filterkernel, obwohl nur wenige Koeffizienten beteiligt sind. Die Beziehung zwischen den Rekursionskoeffizienten und der Filterantwort wird durch eine mathematische Technik gegeben, die z-Transformation genannt wird. Das Thema von Kapitel 31. Beispielsweise kann die z-Transformation für solche Aufgaben wie: Umwandlung zwischen den Rekursionskoeffizienten und dem Frequenzgang verwendet werden, wobei kaskadierte und parallele Stufen in einem einzigen Filter kombiniert werden, wobei rekursive Systeme entworfen werden, die analoge Filter usw Leider ist die Z-Transformation sehr mathematisch und komplizierter als die meisten DSP-Benutzer bereit sind, damit umzugehen. Dies ist das Reich derer, die sich auf DSP spezialisieren. Es gibt drei Möglichkeiten, die Rekursionskoeffizienten zu finden, ohne die z-Transformation verstehen zu müssen. Zuerst liefert dieses Kapitel Designgleichungen für verschiedene Arten von einfachen rekursiven Filtern. Zweitens, Kapitel 20 bietet ein Kochbuch Computer-Programm für die Gestaltung der anspruchsvolleren Chebyshev Tiefpass-und Hochpass-Filter. Drittens beschreibt Kapitel 26 eine iterative Methode zum Entwerfen von rekursiven Filtern mit einer beliebigen Frequenzantwort. Wissenschaftler und Ingenieur Leitfaden zur digitalen Signalverarbeitung Von Steven W. Smith, Ph. D. Kapitel 28: Digitale Signalprozessoren Architektur des digitalen Signalprozessors Einer der größten Engpässe bei der Ausführung von DSP-Algorithmen ist die Übertragung von Informationen in und aus dem Speicher. Dazu gehören Daten. Wie zB Abtastwerte aus dem Eingangssignal und den Filterkoeffizienten sowie Programmbefehle. Die binären Codes, die in den Programm-Sequenzer gehen. Angenommen, wir müssen zwei Zahlen multiplizieren, die irgendwo im Gedächtnis wohnen. Um dies zu tun, müssen wir drei Binärwerte aus dem Speicher abrufen, die zu multiplizierenden Zahlen, plus die Programmanweisung, die beschreibt, was zu tun ist. Abbildung 28-4a zeigt, wie diese scheinbar einfache Aufgabe in einem traditionellen Mikroprozessor erfolgt. Dies wird oft als eine von Neumann-Architektur bezeichnet. Nach dem brillanten amerikanischen Mathematiker John von Neumann (1903-1957). Von Neumann führte die Mathematik vieler wichtiger Entdeckungen des frühen zwanzigsten Jahrhunderts. Zu seinen zahlreichen Errungenschaften gehören: Entwicklung des Konzepts eines gespeicherten Programmcomputers, Formalisierung der Mathematik der Quantenmechanik und Bearbeitung der Atombombe Wenn es neu und aufregend war, war Von Neumann da Wie in (a) gezeigt, enthält eine Von Neumann Architektur einen einzigen Speicher und einen einzigen Bus für die Datenübertragung in die zentrale Verarbeitungseinheit (CPU). Das Multiplizieren von zwei Zahlen erfordert mindestens drei Taktzyklen, eine, um jede der drei Zahlen über den Bus aus dem Speicher in die CPU zu übertragen. Wir zählen nicht die Zeit, um das Ergebnis zurück in den Speicher zu übertragen, weil wir davon ausgehen, dass es in der CPU für zusätzliche Manipulation (wie die Summe der Produkte in einem FIR-Filter) bleibt. Das Von Neumann Design ist sehr zufrieden stellend, wenn Sie zufrieden sind, alle erforderlichen Aufgaben seriell auszuführen. In der Tat sind die meisten Computer heute von der Von Neumann Design. Wir brauchen nur andere Architekturen, wenn eine sehr schnelle Bearbeitung erforderlich ist, und wir sind bereit, den Preis der erhöhten Komplexität zu bezahlen. Das führt uns zur Harvard-Architektur. Gezeigt in (b). Dies ist für die Arbeit an der Harvard University in den 1940er Jahren unter der Leitung von Howard Aiken (1900-1973) benannt. Wie in dieser Abbildung gezeigt, bestand Aiken auf getrennten Erinnerungen für Daten - und Programmanweisungen, mit separaten Bussen für jeden. Da die Busse unabhängig arbeiten, können Programmbefehle und Daten gleichzeitig abgerufen werden, wodurch die Geschwindigkeit über das Einzelbusdesign verbessert wird. Die meisten heutigen DSPs verwenden diese Dual-Bus-Architektur. Abbildung (c) zeigt die nächste Stufe der Raffinesse, die Super Harvard Architektur. Dieser Begriff wurde von Analog Devices geprägt, um den internen Betrieb ihrer ADSP-2106x und neuer ADSP-211xx-Familien von digitalen Signalprozessoren zu beschreiben. Diese werden als SHARC DSPs bezeichnet, eine Kontraktion der längerfristigen, S uper H arvard ARC hitecture. Die Idee ist, auf der Harvard-Architektur zu bauen, indem sie Features hinzufügen, um den Durchsatz zu verbessern. Während die SHARC-DSPs auf Dutzende von Möglichkeiten optimiert sind, sind zwei Bereiche wichtig genug, um in Abb. 28-4c: ein Befehls-Cache. Und ein IO-Controller. Zuerst sehen wir, wie der Befehls-Cache die Leistung der Harvard-Architektur verbessert. Ein Handicap der grundlegenden Harvard-Design ist, dass der Datenspeicher Bus ist beschäftiger als der Programm Speicher Bus. Wenn zwei Zahlen multipliziert werden, müssen zwei Binärwerte (die Zahlen) über den Datenspeicherbus geleitet werden, während nur ein Binärwert (der Programmbefehl) über den Programmspeicherbus geleitet wird. Um diese Situation zu verbessern, beginnen wir mit der Verlagerung eines Teils der Daten in den Programmspeicher. Zum Beispiel könnten wir die Filterkoeffizienten im Programmspeicher platzieren, während wir das Eingangssignal im Datenspeicher behalten. (Diese verlagerten Daten werden in der Abbildung als Sekundärdaten bezeichnet). Auf den ersten Blick scheint dies nicht der Situation zu helfen, jetzt müssen wir einen Wert über den Datenspeicherbus übertragen (die Eingangssignalabtastung), aber zwei Werte über den Programmspeicherbus (Programmbefehl und Koeffizient). In der Tat, wenn wir zufällige Anweisungen ausführen würden, wäre diese Situation überhaupt nicht besser. Allerdings verteilen DSP-Algorithmen in der Regel die meisten ihrer Ausführungszeit in Schleifen, wie die Anweisungen 6-12 von Tabelle 28-1. Dies bedeutet, dass der gleiche Satz von Programmbefehlen kontinuierlich vom Programmspeicher zur CPU übergeht. Die Super-Harvard-Architektur nutzt diese Situation, indem sie einen Befehlscache in der CPU enthält. Dies ist ein kleines Gedächtnis, das etwa 32 der aktuellsten Programmanweisungen enthält. Das erste Mal durch eine Schleife müssen die Programmbefehle über den Programmspeicherbus übergeben werden. Dies führt zu einem langsamen Betrieb aufgrund des Konflikts mit den Koeffizienten, die auch auf diesem Weg geholt werden müssen. Bei zusätzlichen Ausführungen der Schleife können jedoch die Programmbefehle aus dem Befehls-Cache gezogen werden. Dies bedeutet, dass der gesamte Speicher für CPU-Informationstransfers in einem einzigen Zyklus durchgeführt werden kann: das Sample aus dem Eingangssignal kommt über den Datenspeicherbus, der Koeffizient kommt über den Programmspeicherbus und der Programmbefehl kommt aus dem Befehlscache . Im Jargon des Feldes wird diese effiziente Datenübertragung als hohe Speicherzugriffsbandbreite bezeichnet. Abbildung 28-5 zeigt eine detailliertere Darstellung der SHARC-Architektur, wobei der IO-Controller mit dem Datenspeicher verbunden ist. So kommen die Signale ein und verlassen das System. Zum Beispiel bieten die SHARC DSPs sowohl serielle als auch parallele Kommunikationsschnittstellen. Das sind extrem schnelle Verbindungen. Zum Beispiel gibt es bei einer Taktrate von 40 MHz zwei serielle Schnittstellen, die mit jeweils 40 Mbits Sekunden arbeiten, während sechs parallele Ports jeweils eine Datenübertragung von 40 Mbytessecond liefern. Wenn alle sechs parallelen Ports zusammen verwendet werden, ist die Datenübertragungsrate eine unglaubliche 240 Mbytessecond. Dies ist schnell genug, um den gesamten Text dieses Buches in nur 2 Millisekunden zu übertragen. Ebenso wichtig ist, dass dedizierte Hardware diese Datenströme direkt in den Speicher (Direct Memory Access oder DMA) übertragen kann, ohne dass die CPUs registriert werden müssen. Mit anderen Worten, die Aufgaben 1 amp 14 auf unserer Liste passieren unabhängig und gleichzeitig mit den anderen Aufgaben werden keine Zyklen aus der CPU gestohlen. Die Hauptbusse (Programmspeicherbus und Datenspeicherbus) sind auch von außerhalb des Chips zugänglich und bieten eine zusätzliche Schnittstelle zum Off-Chip-Speicher und Peripherie. Dies ermöglicht es den SHARC-DSPs, einen vier Gigaword (16 Gbyte) Speicher zu verwenden, der bei 40 Mwordssecond (160 Mbytessecond) für 32-Bit-Daten zugänglich ist. Wow Diese Art von High-Speed-IO ist ein Schlüsselelement von DSPs. Das übergeordnete Ziel ist es, die Daten zu verschieben, die Mathematik auszuführen und die Daten zu verschieben, bevor das nächste Sample verfügbar ist. Alles andere ist sekundär. Einige DSPs verfügen über integrierte Analog-Digital - und Digital-Analog-Wandler, eine Funktion namens Mischsignal. Allerdings können alle DSPs mit externen Wandlern über serielle oder parallele Ports verbinden. Jetzt schauen wir in die CPU. Am oberen Rand des Diagramms befinden sich zwei Blöcke, die als Data Address Generator (DAG) bezeichnet sind, eine für jeden der beiden Speicher. Diese steuern die an das Programm und die Datenspeicher gesendeten Adressen und geben an, wo die Informationen gelesen oder geschrieben werden sollen. Bei einfacheren Mikroprozessoren wird diese Aufgabe als inhärenter Teil des Programmsequenzers behandelt und ist für den Programmierer sehr transparent. Allerdings sind DSPs für den Betrieb mit kreisförmigen Puffern ausgelegt. Und profitiere von der zusätzlichen Hardware, um sie effizient zu verwalten. Dies vermeidet es, wertvolle CPU-Taktzyklen zu verwenden, um zu verfolgen, wie die Daten gespeichert werden. Beispielsweise kann bei den SHARC-DSPs jeder der beiden DAGs acht Kreispuffer steuern. Dies bedeutet, dass jeder DAG 32 Variablen (4 pro Puffer) plus die erforderliche Logik enthält. Warum so viele kreisförmige Puffer Einige DSP-Algorithmen werden am besten in Stufen durchgeführt. Zum Beispiel sind IIR-Filter stabiler, wenn sie als Kaskade von Biquads implementiert werden (eine Bühne, die zwei Pole und bis zu zwei Nullen enthält). Mehrere Stufen erfordern mehrere kreisförmige Puffer für den schnellsten Betrieb. Die DAGs in den SHARC DSPs sind auch entworfen, um die Fast Fourier Transformation effizient durchzuführen. In diesem Modus sind die DAGs so konfiguriert, dass sie Bit-umgekehrte Adressen in die kreisförmigen Puffer erzeugen, einen notwendigen Teil des FFT-Algorithmus. Darüber hinaus vereinfacht eine Fülle von kreisförmigen Puffern die DSP-Code-Generierung - sowohl für den menschlichen Programmierer als auch für hochrangige Sprachkompilatoren wie C. Der Datenregisterabschnitt der CPU wird genauso verwendet wie bei herkömmlichen Mikroprozessoren. In den ADSP-2106x SHARC DSPs gibt es 16 Allzweckregister mit jeweils 40 Bits. Diese können Zwischenberechnungen aufnehmen, Daten für den mathematischen Prozessor vorbereiten, als Puffer für die Datenübertragung dienen, Flags für die Programmsteuerung halten und so weiter. Bei Bedarf können diese Register auch zur Steuerung von Schleifen und Zählern verwendet werden. Die SHARC-DSPs verfügen jedoch über zusätzliche Hardware-Register, um viele dieser Funktionen auszuführen. Die mathematische Verarbeitung ist in drei Abschnitte unterteilt, ein Multiplikator. Eine arithmetische Logikeinheit (ALU). Und einen Fassschieber. Der Multiplikator nimmt die Werte aus zwei Registern, multipliziert sie und platziert das Ergebnis in ein anderes Register. Die ALU führt Addition, Subtraktion, Absolutwert, logische Operationen (AND, OR, XOR, NOT), Umwandlung zwischen festen und floatenden Punktformaten und ähnlichen Funktionen durch. Elementare binäre Operationen werden durch den Trommelschieber ausgeführt, wie z. B. Verschieben, Drehen, Extrahieren und Abscheiden von Segmenten und so weiter. Ein starkes Merkmal der SHARC-Familie ist, dass der Multiplikator und die ALU parallel zugänglich sind. In einem einzigen Taktzyklus können Daten von den Registern 0-7 an den Multiplikator übergeben werden, Daten von den Registern 8-15 können an die ALU übergeben werden, und die beiden Ergebnisse kehren zu einem der 16 Register zurück. Es gibt auch viele wichtige Merkmale der SHARC-Familienarchitektur, die in dieser vereinfachten Darstellung gezeigt wurde. Zum Beispiel ist ein 80-Bit-Akkumulator in den Multiplikator eingebaut, um den Rundungsfehler zu reduzieren, der mit mehreren Festpunkt-Mathematikoperationen verbunden ist. Ein weiteres interessantes Merkmal ist die Verwendung von Schattenregistern für alle CPUs-Tastenregister. Dies sind doppelte Register, die mit ihren Gegenstücken in einem einzigen Taktkreis umgeschaltet werden können. Sie werden für die schnelle Kontextumschaltung verwendet. Die Fähigkeit, Interrupts schnell zu behandeln. Wenn bei herkömmlichen Mikroprozessoren ein Interrupt auftritt, müssen alle internen Daten gespeichert werden, bevor der Interrupt bearbeitet werden kann. Dies beinhaltet in der Regel das Drücken aller besetzten Register auf den Stapel, eine zu einer Zeit. Im Vergleich dazu wird ein Interrupt in der SHARC-Familie durch Verschieben der internen Daten in die Schattenregister in einem einzigen Taktzyklus behandelt. Wenn die Interruptroutine abgeschlossen ist, werden die Register genauso schnell wiederhergestellt. Mit dieser Funktion kann Schritt 4 auf unserer Liste (Managing the sample-ready interrupt) sehr schnell und effizient gehandhabt werden. Nun kommen wir zur kritischen Leistung der Architektur, wie viele der Operationen innerhalb der Schleife (Schritte 6-12 von Tabelle 28-1) gleichzeitig durchgeführt werden können. Aufgrund seiner sehr parallelen Natur kann der SHARC DSP gleichzeitig alle diese Aufgaben ausführen. Insbesondere kann innerhalb eines einzigen Taktzyklus ein Multipliziervorgang (Schritt 11), eine Addition (Schritt 12), zwei Datenbewegungen (Schritte 7 und 9), Aktualisieren von zwei kreisförmigen Pufferzeigern (Schritte 8 und 10) durchgeführt werden Schleife (Schritt 6). Es gibt zusätzliche Taktzyklen, die mit dem Anfang und dem Ende der Schleife verbunden sind (Schritte 3, 4, 5 und 13, plus bewegliche Anfangswerte) aber diese Aufgaben werden auch sehr effizient gehandhabt. Wenn die Schleife mehr als ein paar Mal ausgeführt wird, ist dieser Overhead vernachlässigbar. Als Beispiel nehmen Sie an, dass Sie ein effizientes FIR-Filterprogramm mit 100 Koeffizienten schreiben. Sie können erwarten, dass es etwa 105 bis 110 Taktzyklen pro Probe benötigt, um sie auszuführen (d. h. 100 Koeffizientenschleifen plus Overhead). Dies ist sehr beeindruckend ein traditioneller Mikroprozessor erfordert viele Tausende von Taktzyklen für diesen Algorithmus. Ich arbeite mit einer großen Menge an Zeitreihen. Diese Zeitreihen sind grundsätzlich Netzwerkmessungen, die alle 10 Minuten kommen, und einige von ihnen sind periodisch (d. h. die Bandbreite), während einige andere Arent (d. h. die Menge des Routing-Verkehrs). Ich möchte einen einfachen Algorithmus für eine Online-Ausreißer-Erkennung. Grundsätzlich möchte ich die ganze historische Daten für jede Zeitreihe im Speicher (oder auf Festplatte) behalten und ich möchte jeden Ausreißer in einem Live-Szenario erkennen (jedes Mal, wenn ein neues Sample erfasst wird). Was ist der beste Weg, um diese Ergebnisse zu erreichen Im derzeit mit einem gleitenden Durchschnitt, um etwas Lärm zu entfernen, aber dann was als nächstes Einfache Dinge wie Standardabweichung, verrückt. Gegen den ganzen Datensatz funktioniert nicht gut (ich kann nicht annehmen, dass die Zeitreihen stationär sind), und ich möchte etwas genaueres, idealerweise eine Black Box wie: double outlierdetection (double vector, double value) wobei vector das Array von doppelten enthält Die historischen Daten und der Rückgabewert ist die Anomalie für den neuen Stichprobenwert. Fragte am 2. August um 20:37 Ja, ich habe angenommen, dass die Frequenz bekannt und spezifiziert ist. Es gibt Methoden, um die Frequenz automatisch abzuschätzen, aber das würde die Funktion erheblich erschweren. Wenn du die Häufigkeit abschätzen musst, versuchst du, eine eigene Frage darüber zu stellen - und ich werde wahrscheinlich eine Antwort geben. Aber es braucht mehr Platz, als ich in einem Kommentar zur Verfügung habe. Ndash Rob Hyndman Eine gute Lösung wird mehrere Zutaten haben, einschließlich: Verwenden Sie eine resistente, bewegte Fenster glatt, um Nichtstationarität zu entfernen. Die ursprünglichen Daten so ausdrücken, dass die Reste in Bezug auf die Glattheit etwa symmetrisch verteilt sind. Angesichts der Natur Ihrer Daten, ist es wahrscheinlich, dass ihre Quadratwurzeln oder Logarithmen symmetrische Residuen geben würde. Tragen Sie Kontroll-Chart-Methoden, oder zumindest Kontrolle Diagramm Denken, um die Residuen. Soweit das letzte Mal geht, zeigt das Kontroll-Diagramm-Denken, dass herkömmliche Schwellen wie 2 SD oder das 1,5-fache des IQR jenseits der Quartile schlecht funktionieren, weil sie zu viele falsche Out-of-Control-Signale auslösen. Die Leute benutzen gewöhnlich 3 SD in der Kontrollkarte Arbeit, wo 2,5 (oder sogar 3) mal die IQR jenseits der Quartile wäre ein guter Ausgangspunkt. Ich habe mehr oder weniger die Art der Rob-Hyndmans-Lösung umrissen und dabei zwei Hauptpunkte hinzugefügt: das Potenzial, die Daten wiederzugeben und die Weisheit, bei der Signalisierung eines Ausreißers konservativer zu sein. Im nicht sicher, dass Loess ist gut für einen Online-Detektor, obwohl, weil es nicht gut funktioniert an den Endpunkten. Sie könnten stattdessen etwas so einfaches wie ein bewegliches Medianfilter verwenden (wie bei Tukeys resistenten Glättung). Wenn Ausreißer nicht in Bursts kommen, können Sie ein schmales Fenster benutzen (5 Datenpunkte, vielleicht, die nur mit einem Burst von 3 oder mehr Ausreißern innerhalb einer Gruppe von 5 brechen). Sobald Sie die Analyse durchgeführt haben, um eine gute Re-Expression der Daten zu bestimmen, ist es unwahrscheinlich, dass Sie den Re-Ausdruck ändern müssen. Daher muss Ihr Online-Detektor wirklich nur die aktuellsten Werte (das neueste Fenster) verweisen, weil es nicht die früheren Daten überhaupt verwenden wird. Wenn Sie wirklich lange Zeitreihen haben, können Sie weiter gehen, um Autokorrelation und Saisonalität zu analysieren (wie wiederkehrende tägliche oder wöchentliche Schwankungen), um das Verfahren zu verbessern. Antwortete Aug 26 10 at 18:02 John, 1.5 IQR ist Tukey39s ursprüngliche Empfehlung für die längsten Whiskers auf einem Boxplot und 3 IQR ist seine Empfehlung für die Markierung von Punkten als Quoten outliersquot (ein Riff auf einer beliebten 6039s Phrase). Dies ist in viele Boxplot-Algorithmen eingebaut. Die Empfehlung wird theoretisch in Hoaglin, Mosteller, amp Tukey, Understanding Robust und Exploratory Data Analysis analysiert. Ndash w huber 9830 Oct 9 12 at 21:38 Dies bestätigt Zeitreihendaten, die ich versucht habe zu analysieren. Fensterdurchschnitt und auch Fensterfensterabweichungen. ((X - avg) sd) gt 3 scheinen die Punkte zu sein, die ich als Ausreißer markieren möchte. Nun zumindest warnen als Ausreißer, ich fasse etwas höher als 10 sd als extreme Fehler Ausreißer. Das Problem, in das ich hineingehe, ist, was eine ideale Fensterlänge ist, die mit etwas zwischen 4-8 Datenpunkten spielt. Ndash NeoZenith Jun 29 16 um 8:00 Neo Ihre beste Wette kann sein, mit einer Teilmenge Ihrer Daten zu experimentieren und bestätigen Sie Ihre Schlussfolgerungen mit Tests auf dem Rest. Sie könnten auch eine formellere Cross-Validierung durchführen (aber aufgrund der Interdependenz aller Werte ist besondere Aufmerksamkeit mit Zeitreihendaten erforderlich). Ndash w huber 9830 Jun 29 16 at 12:10 (Diese Antwort antwortete auf eine doppelte (jetzt geschlossene) Frage bei Erkennung von herausragenden Ereignissen, die einige Daten in grafischer Form vorstellten.) Die Ausreißererkennung hängt von der Art der Daten und von dem ab, was du bist Sind bereit, über sie zu übernehmen. Allzweck-Methoden beruhen auf robusten Statistiken. Der Geist dieses Ansatzes besteht darin, den Großteil der Daten in einer Weise zu charakterisieren, die nicht von Ausreißern beeinflusst wird und dann auf irgendwelche individuellen Werte hinweist, die nicht in diese Charakterisierung passen. Weil dies eine Zeitreihe ist, fügt es die Komplikation hinzu, um die Ausreißer laufend zu ermitteln. Wenn dies geschehen soll, wenn die Serie entfaltet ist, dann dürfen wir nur ältere Daten für die Erkennung verwenden, nicht zukünftige Daten. Darüber hinaus möchten wir als Schutz gegen die vielen wiederholten Tests eine Methode verwenden, die eine sehr niedrige falsche hat Positive Rate. Diese Überlegungen schlagen vor, einen einfachen, robusten bewegten Fensterausreißertest über die Daten zu führen. Es gibt viele Möglichkeiten, aber eine einfache, leicht verständliche und leicht umsetzbare basiert auf einer laufenden MAD: median absolute Abweichung vom Median. Dies ist ein stark robustes Maß an Variation innerhalb der Daten, verglichen mit einer Standardabweichung. Eine ausgedehnte Spitze wäre mehrere MADs oder mehr größer als der Median. Es gibt noch etwas Tuning. Wie viel von einer Abweichung von der Masse der Daten sollte als outlying und wie weit zurück in der Zeit sollte man aussehen Lets verlassen diese als Parameter für Experimente. Heres a R-Implementierung auf Daten x (1,2, ldots, n) angewendet (mit n1150, um die Daten zu emulieren) mit entsprechenden Werten y: Angewendet auf einen Datensatz wie die in der Frage dargestellte rote Kurve ergibt sich das Ergebnis: Die Daten Sind rot dargestellt, das 30-Tage-Fenster von median5MAD-Schwellen in grau und die Ausreißer - die sind einfach die Datenwerte über der grauen Kurve - in schwarz. (Die Schwelle kann nur am Ende des Anfangsfensters berechnet werden. Für alle Daten innerhalb dieses Anfangsfensters wird die erste Schwelle verwendet: Das ist der Grund, warum die graue Kurve zwischen x0 und x30 flach ist.) Die Auswirkungen der Änderung der Parameter sind (A) Erhöhung des Wertes des Fensters neigt dazu, die graue Kurve zu glätten und (b) die Erhöhung der Schwelle erhöht die graue Kurve. Wenn man das kennt, kann man ein erstes Segment der Daten nehmen und schnell die Werte der Parameter identifizieren, die die auslaufenden Peaks am besten aus dem Rest der Daten teilen. Wenden Sie diese Parameterwerte an, um den Rest der Daten zu überprüfen. Wenn ein Diagramm zeigt, dass sich die Methode im Laufe der Zeit verschlechtert, bedeutet dies, dass sich die Daten der Daten ändern und die Parameter möglicherweise neu eingestellt werden müssen. Beachten Sie, wie wenig diese Methode von den Daten übernimmt: Sie müssen nicht normal verteilt sein, sie müssen keine Periodizität ausstellen, die sie nicht einmal nicht negativ sein müssen. Alles, was davon ausgeht, ist, dass sich die Daten in angemessener Weise über die Zeit verhalten und dass die äußeren Peaks sichtbar höher sind als der Rest der Daten. Wenn jemand experimentieren möchte (oder eine andere Lösung mit dem hier angebotenen vergleichen), hier ist der Code, den ich verwendet habe, um Daten wie die in der Frage gezeigten zu produzieren. Ich vermute, anspruchsvolle Zeitreihe Modell wird nicht für Sie arbeiten, weil der Zeit, die es braucht, um Ausreißer mit dieser Methode zu erkennen. Daher ist hier ein Workaround: Erstens eine Basislinie normalen Verkehrsmuster für ein Jahr auf der Grundlage der manuellen Analyse der historischen Daten, die für die Zeit des Tages, Wochentag vs Wochenende, Monat des Jahres etc. verwenden. Verwenden Sie diese Grundlinie zusammen mit einigen einfachen Mechanismus (ZB gleitender Durchschnitt von Carlos vorgeschlagen), um Ausreißer zu erkennen. Sie können auch die statistische Prozesskontrollliteratur für einige Ideen überprüfen. Ja, das ist genau das, was ich tue: bis jetzt habe ich das Signal manuell in Perioden aufgeteilt, so dass für jeden von ihnen kann ich ein Konfidenzintervall definieren, in dem das Signal stationär sein soll, und deshalb kann ich Standardmethoden verwenden Als Standardabweichung. Das eigentliche Problem ist, dass ich das erwartete Muster für alle Signale, die ich zu analysieren habe, nicht entscheiden kann, und warum suchst du etwas Intelligenteres. Ndash gianluca Aug 2 10 at 21:37 Hier ist eine Idee: Schritt 1: Implementieren und Schätzen eines generischen Zeitreihenmodells auf einer einmaligen Basis basierend auf historischen Daten. Dies kann offline erfolgen. Schritt 2: Verwenden Sie das resultierende Modell, um Ausreißer zu erkennen. Schritt 3: Bei einer gewissen Frequenz (vielleicht jeden Monat) das Zeitreihenmodell neu kalibrieren (dies kann offline geschehen), so dass Ihr Schritt 2 Erkennung von Ausreißern nicht zu viel aus dem Schritt mit aktuellen Verkehrsmustern geht. Würde das für deinen Kontext arbeiten ndash user28 Aug 2 10 um 22:24 Ja, das könnte funktionieren. Ich dachte an einen ähnlichen Ansatz (Replizierung der Grundlinie jede Woche, die CPU-intensiv sein kann, wenn Sie Hunderte von univariate Zeitreihen zu analysieren haben). BTW die echte schwierige Frage ist quotwhat ist der beste Blackbox-Stil Algorithmus für die Modellierung eines völlig generischen Signal, unter Berücksichtigung von Lärm, Trend Schätzung und Saisonalität. AFAIK, jeder Ansatz in der Literatur erfordert eine wirklich harte quotparameter tuningquot Phase, und die einzige automatische Methode, die ich gefunden habe, ist ein ARIMA Modell von Hyndman (robjhyndmansoftwareforecast). Bin ich vermisse etwas ndash gianluca Auch hier geht es gut gut, wenn das Signal soll eine Saisonalität wie das haben, aber wenn ich eine ganz andere Zeitreihe (dh die durchschnittliche TCP Rundreise Zeit im Laufe der Zeit verwenden ), Wird diese Methode nicht funktionieren (da es besser wäre, diese mit einem einfachen globalen Mittelwert und Standardabweichung mit einem Schiebefenster mit historischen Daten zu behandeln). Wenn Sie bereit sind, ein allgemeines Zeitreihenmodell (das in seine Nachteile in Bezug auf Latenz usw. bringt) zu implementieren, bin ich pessimistisch, dass Sie eine allgemeine Implementierung finden, die zur gleichen Zeit einfach genug ist. Deutsch:. Englisch: v3.espacenet. com/textdoc? DB = EPODOC & ... PN = Für alle möglichen Zeitreihen arbeiten. Ndash user28 Aug 2 10 at 22:06 Ein weiterer Kommentar: Ich kenne eine gute Antwort könnte auch sein, du könntest die Periodizität des Signals abschätzen und den Algorithmus nach itquot entscheiden, aber ich habe keine echte gute Lösung für dieses andere gefunden Problem (ich spielte ein bisschen mit Spektralanalyse mit DFT und Zeitanalyse mit der Autokorrelationsfunktion, aber meine Zeitreihe enthält viel Lärm und solche Methoden geben einige verrückte Ergebnisse die meisten der Zeit) ndash gianluca Aug 2 10 um 22:06 A Kommentieren Sie zu Ihrem letzten Kommentar: that39s warum I39m auf der Suche nach einem generischeren Ansatz, aber ich brauche eine Art von quadratischen boxquot, weil ich canuldt irgendeine Annahme über das analysierte Signal machen kann, und deshalb kann ich den Questsatz für den Lernalgorithmus erstellen. Ndash gianluca Aug 2 10 at 22:09 Da es sich um eine Zeitreihe handelt, wird ein einfacher Exponentialfilter en. wikipedia. orgwikiExponentialsmoothing die Daten glätten. Es ist ein sehr guter Filter, da Sie nicht brauchen, um alte Datenpunkte zu akkumulieren. Vergleichen Sie jeden neu geglätteten Datenwert mit seinem ungehinderten Wert. Sobald die Abweichung eine bestimmte vordefinierte Schwelle überschreitet (je nachdem, was Sie glauben, dass ein Ausreißer in Ihren Daten ist), dann kann Ihr Ausreißer leicht erkannt werden. Beantwortet Apr 30 15 at 8:50 Du könntest die Standardabweichung der letzten N Messungen verwenden (du musst eine passende N auswählen). Eine gute Anomalie Ergebnis wäre, wie viele Standardabweichungen eine Messung aus dem gleitenden Durchschnitt ist. Beantwortet am 2. August 10 um 20:48 Vielen Dank für Ihre Antwort, aber was ist, wenn das Signal eine hohe Saisonalität aufweist (dh viele Netzwerkmessungen zeichnen sich durch ein tägliches und wöchentliches Muster zur gleichen Zeit aus, zB Nacht vs Tag oder Wochenende Vs Arbeitstage) Ein Ansatz, der auf Standardabweichung basiert, funktioniert in diesem Fall nicht. Ndash gianluca Zum Beispiel, wenn ich eine neue Probe alle 10 Minuten zu bekommen, und I39m eine Ausreißer Erkennung der Netzwerk-Bandbreite Nutzung eines Unternehmens, im Grunde um 18 Uhr diese Maßnahme wird fallen (dies ist ein erwartet Ein total normales Muster), und eine Standardabweichung, die über ein Schiebefenster berechnet wird, wird fehlschlagen (weil es eine Warnung sicher auslöst). Zur gleichen Zeit, wenn die Maßnahme um 4pm abfällt (abweichend von der üblichen Grundlinie), ist dies ein echter Ausreißer. Ndash gianluca Was ich tue, gruppiere die Messungen um Stunde und Wochentag und vergleiche Standardabweichungen davon. Immer noch nicht korrigieren Dinge wie Feiertage und Sommerwinter Saisonalität aber seine korrekte die meiste Zeit. Der Nachteil ist, dass Sie wirklich brauchen, um ein Jahr oder so von Daten zu sammeln, um genug zu sammeln, damit stddev beginnt Sinn zu machen. Spektralanalyse erkennt Periodizität in stationären Zeitreihen. Der Frequenzbereich Ansatz auf der Grundlage der spektralen Dichte Schätzung ist ein Ansatz, den ich als Ihren ersten Schritt empfehlen würde. Wenn für bestimmte Perioden Unregelmäßigkeit eine viel höhere Spitze als für diese Zeit typisch ist, dann wäre die Reihe mit solchen Unregelmäßigkeiten nicht stationär und die spektrale Anlsyse wäre nicht angemessen. Aber vorausgesetzt, Sie haben die Periode identifiziert, die die Unregelmäßigkeiten aufweist, die Sie in der Lage sein sollten, ungefähr zu bestimmen, was die normale Höhepunkthöhe sein würde, und kann dann eine Schwelle auf irgendeinem Niveau über diesem Durchschnitt setzen, um die unregelmäßigen Fälle zu bezeichnen. Antwortete am 3. September um 14:59 Ich schlage vor, das Schema unten, die sollte implementiert werden in einem Tag oder so: Sammeln Sie so viele Samples, wie Sie im Speicher halten können Entfernen Sie offensichtliche Ausreißer mit der Standardabweichung für jedes Attribut Berechnen und speichern Sie die Korrelationsmatrix Und auch der Mittelwert jedes Attributes Berechnen und speichern Sie die Mahalanobis Entfernungen aller Ihrer Proben Berechnen Ausreißer: Für die einzelne Probe, von der Sie wissen wollen, ihre Ausreißer: Abrufen der Mittel, Kovarianz Matrix und Mahalanobis Abstand s aus der Ausbildung Berechnen Sie die Mahalanobis Abstand d Für deine Probe Rückgabe des Perzentils, in dem d fällt (unter Verwendung der Mahalanobis-Distanzen vom Training) Das wird dein Outlier-Score sein: 100 ist ein extremer Ausreißer. PS Bei der Berechnung der Mahalanobis Entfernung. Verwenden Sie die Korrelationsmatrix, nicht die Kovarianzmatrix. Dies ist robuster, wenn die Probenmessungen in Einheit und Anzahl variieren.

Comments

Popular Posts