Central Moving Average Algorithm


Moving Average Von: David Hyde am November 3, 2009 7:48 PM Q: Ich muss wissen, welche mathematische Algorithmus für die gleitenden Durchschnitt Berechnungen verwendet wird. Normalerweise erfordert ein gleitender Durchschnitt, dass die Endbereiche des Graphen nicht in den Graphen des gleitenden Durchschnitts aufgenommen werden, da beispielsweise ein zentrierter 11-tägiger gleitender Durchschnitt keine Daten für die ersten 5 Tage bereitstellen kann und deshalb nicht dargestellt werden kann . Das gleiche gilt für die letzten 5 Tage in diesem Beispiel. Ich glaube, dass dieses Problem allen gleitenden Durchschnittsberechnungssorten innewohnt (obwohl Im offen für erzogen zu werden). Ich bringe es her, weil die Graphik der Endpunktregionen eines gleitenden Durchschnittes in den Klimawissenschaften, in denen ich arbeite, einiges an Kontroversen erzeugt, weil die Endregionen, die normalerweise in einem gleitenden Durchschnitt ausgeschlossen sind, aufgrund einer Art (oftmals) ausgefüllt werden müssen Unwissenschaftlich) Annahme - auch nur eine einfache Fortsetzung der Trendannahme. A: Für die Versionen 2.2.7.0 und früher ist die Ausgabe des Moving Average Plugins ein Durchschnitt der letzten N Punkte, wobei N das Intervall ist, das gewählt wird. Dies ist identisch mit der Moving Average-Funktion von Excels Analysis ToolPak, mit der Ausnahme, dass Excel N / A für die ersten N-1 Punkte liefert, während das DPlot-Plugin den Durchschnitt von i Punkten für iltN ergibt. Die neue Version des Moving Average Plugins besteht aus drei Formen, von denen zwei neu sind: 1) Prior Moving Average (identisch mit der einzigen vorherigen Option), 2) Central Moving Average (eher wie das, was du redest, mit Punkt i gleich der Mittelwert der Punkte i - (N-1) / 2 bis i (N-1) / 2 und 3) kumulierter gleitender Durchschnitt. Der der Mittelwert aller Punkte bis einschließlich des i-ten Punktes ist. Darüber hinaus ermöglicht das neue Plugin Sie (oder nicht) Punkte an den Schwänzen Ihrer Daten. Wenn Include Tails geprüft wird, dann wie vor dem i-ten Punkt für iltN der Mittelwert der ersten i Punkte für einen Prior Moving Average ist. Ähnlich ist bei einem mittleren Moving Average und ilt (N1) / 2 oder größer als NP - (N-1) / 2 (wobei NP die Anzahl der Punkte im Eingang ist) der Durchschnitt der abgetasteten Eingangspunkte. Wenn Include Tails nicht markiert ist, enthält die Ausgabe nur Punkte, für die i gt N für einen Prior Moving Average. Oder i gt (N-1) / 2 und i lt NP - (N-1) / 2 für einen zentralen gleitenden Durchschnitt. Der neue Eingabedialog für das Plugin Moving Average (nur lizenzierte Version): Welche Methode für Ihren Einsatz geeignet ist, hängt davon ab, was Sie messen. Der Prior Moving Average ist ein bewährter Standard, aber für Daten, die tendenziell zu erhöhen oder zu verringern im Laufe der Zeit, führt eine Verzögerung in der Ausgabe: für eine stetig wachsende Aufzeichnung wird die Ausgabe tendenziell gleich der Eingabe N / 2 Messungen vor. Der Central Moving Average eliminiert diese Verzögerung, kann jedoch nicht für Ihre Verwendung geeignet sein, wenn die aktuelle Vorhersage nicht durch zukünftige Daten beeinflusst werden sollte. Der kumulative gleitende Durchschnitt ist hauptsächlich für Daten nützlich, die nicht monoton über die Zeit ansteigen / verringern und für die frühe Daten für die Gegenwart signifikant sind. Das neue Plugin ist in der Version 2.2.7.3 von DPlot enthalten. Lizenzierte Benutzer, die nicht auf der Update-Mailingliste sind, können diese Version erhalten, indem sie im Menü Hilfe den Befehl Nach Updates suchen auswählen. Beispiel (mit eingeschlossenen Schwänzen in allen Fällen): Moving Average Funktion resultmovingmean (data, window, dim, option) berechnet einen zentrierten gleitenden Durchschnitt der Datenmatrixdaten unter Verwendung einer Fenstergröße, die im Fenster in Dim Dimension angegeben ist Option. Dim und Option sind optionale Eingänge und werden standardmäßig auf 1. Dim und option optionale Eingänge können ganz übersprungen werden oder können durch a ersetzt werden. Beispielsweise gibt movingmean (data, window) die gleichen Ergebnisse wie movingmean (data, window, 1,1) oder movingmean (data, window ,, 1). Die Größe und Dimension der Eingabedatenmatrix ist nur durch die maximale Matrixgröße für Ihre Plattform begrenzt. Das Fenster muss eine ganze Zahl sein und sollte ungerade sein. Wenn das Fenster gerade ist, wird es auf die nächstniedrigere ungerade Zahl abgerundet. Die Funktion berechnet den gleitenden Durchschnitt mit einem Mittelpunkt und (Fenster-1) / 2 Elementen vor und nach der angegebenen Dimension. An den Rändern der Matrix wird die Anzahl der Elemente vor oder nachher reduziert, so dass die tatsächliche Fenstergröße kleiner als das angegebene Fenster ist. Die Funktion ist in zwei Teile, ein 1d-2d-Algorithmus und ein 3D-Algorithmus gebrochen. Dies wurde getan, um die Lösungsgeschwindigkeit zu optimieren, insbesondere in kleineren Matrizen (d. H. 1000 x 1). Ferner werden mehrere verschiedene Algorithmen für das Problem 1d-2d und 3d bereitgestellt, da in bestimmten Fällen der Standardalgorithmus nicht der schnellste ist. Dies geschieht typischerweise, wenn die Matrix sehr breit ist (d. h. 100 x 100000 oder 10 x 1000 x 1000), und der gleitende Durchschnitt wird in der kürzeren Dimension berechnet. Die Größe, bei der der Standardalgorithmus langsamer ist, hängt vom Computer ab. MATLAB 7.8 (R2009a) Tags für Diese Datei Bitte anmelden, um Tags zu speichern. Bitte melden Sie sich an, um einen Kommentar oder eine Bewertung hinzuzufügen. Kommentare und Bewertungen (8) Die Funktion befasst sich mit Enden, indem sie den nachlaufenden oder führenden Teil des Fensters beschneiden und zu einem anfänglichen oder nachlaufenden gleitenden Durchschnitt anstelle eines zentrierten Bildes übergehen. Um mit dem Beispiel zu gehen, das Sie in Ihrem Kommentar gegeben haben, wenn die Fenstergröße 3 ist, dann in einer Mitte von 1 die Funktion Mittelwerte von Daten von den Punkten 1 und 2 an einer Mitte von 2 Punkten 1, 2 und 3 werden in einer Mitte von 9 gemittelt Die Punkte 8, 9 und 10 werden gemittelt und in einer Mitte von 10 (angenommen, der Vektor hat 10 Einträge) werden die Punkte 9 und 10 gemittelt. Wie bewegt sich movingmean mit den Enden? Fängt es mit einer Fenstergröße an, die nur Punkt 1 bei 1, dann 3 Punkte bei Punkt 2, dann Erhöhung in Fenstergröße bis die Fenstergröße ist, die in der Funktionseingabe spezifiziert ist, beginnen Danke. Nett und einfach. Vielen Dank. Gute Arbeit Sehr nützlich, wie Stephan Wolf sagte. Gerade was ich lookin für war. Zentrierter gleitender Durchschnitt, der in der Lage ist, in einem Diagramm über die gesamte Breite zu arbeiten, ohne die Fenstergröße des Filters zu betrachten und den Anfang zu bewegen. MathWorks ist der führende Entwickler der mathematischen Computer-Software für Ingenieure und Wissenschaftler. Moving Durchschnitt - Standardabweichung Ich habe einige Zeitreihen-Daten (1x70000 Vektor), die ich möchte eine 12 Stunden (720 Punkte) Gleitenden Durchschnitt auf. Ich habe einen vektorisierten Algorithmus gefunden, um den gleitenden Durchschnitt zu berechnen: z 0 cumsum (datain) dataavg (z (numpoints1: nlength1) - z (1: nlength-numpoints1)) / numpoints wobei datain die Zeitreihendaten ist, numpoints die Zahl von Die Mittelwerte und die Nennweite die Länge des Datenvektors. Mein Hauptziel ist jedoch die Berechnung der Standardabweichung jedes 12-Stunden-Durchschnitts, d. h. 69280 70000 - 720 Standardabweichungsberechnungen. Da der obige Algorithmus für den Durchschnitt kumulative Summen verwendet, sind die einzelnen Werte nicht verfügbar, um die Standardabweichung in ihr zu berechnen. Ich habe versucht, zwei Lösungen, die beide mit Looping: 1) greifen einen Abschnitt der Daten zu durchschnittlichen berechnen Standardabweichung bewegen sich über einen Punkt und wiederholen 2) erstellen Sie ein Array 720x70000, wo jede Zeile ist die einfach die vorherige Zeile verschoben nach links ein Punkt Berechnen der Standardabweichung jeder Spalte Die zweite Methode schien das vielversprechendste, da der Großteil der Bearbeitungszeit beim Erstellen des großen Arrays war, das ich mit einer for-Schleife machte. Hat jemand irgendwelche Vorschläge in Bezug auf die effiziente Schaffung dieses Arrays Oder jede andere völlig andere Vorschläge bei der Lösung dieses Problems Vielen Dank an alle Ed On Wed, 11 Sep 2002 16:22:36 -0600, Ed Ross schrieb: gt gt gt Die zweite Methode schien am meisten Vielversprechend als die Masse der gt Verarbeitungszeit war beim Erstellen der großen Array, das ich mit einer für GT-Schleife. Hat jemand irgendwelche Vorschläge in Bezug auf effizient erstellen gt dieses Array gt gt oder jede andere völlig andere Vorschläge in der Lösung dieses Problem gt Sie könnten versuchen, mit Filter, um den gleitenden Durchschnitt zu berechnen. Es scheint ein Favorit in dieser Newsgroup zu sein. Heres eine Post beschreibt, wie: gt gt Dank allen gt Ed Ich wollte nur betonen, dass seine die Standardabweichung, nicht der Durchschnitt selbst, dass Im mit Problemen mit. Der Code, den ich oben gepostet habe, berechnet den tatsächlichen Durchschnitt sehr gut. Am Mi, 11 Sep 2002 17:06:55 -0600, Ed Ross schrieb: gt Ich wollte nur betonen, dass seine die Standardabweichung, nicht die gt-Durchschnitt selbst, dass Im mit Problemen mit. Der Code, den ich über gt geschrieben habe, berechnet den tatsächlichen Durchschnitt sehr gut. Gt gt gt Cheers, gt Ed Ja, das erkenne ich. Sie fragten, ob es andere Möglichkeiten zur Lösung des Problems, so dass ich Sie mit einem. Vielleicht hilft es bei der Berechnung der Standardabweichung. Vielleicht nicht. In Artikel lteeb20d3.1WebX. raydaftYaTPgt, Ed Ross ltedrosscayahoo. cagt schrieb: gt Ich wollte nur betonen, dass seine die Standardabweichung, nicht die gt-Durchschnitt selbst, dass Im mit Problemen mit. Der Code ich gepostet gt oben berechnet den tatsächlichen Durchschnitt sehr gut. Verwenden Sie die andere Formel für Standardabweichung. S2 (sum (x2) - nxbar2) / (n-1) Der Punkt ist, können Sie den gleichen Ansatz verwenden Sie derzeit verwenden, um den gleitenden Durchschnitt zu berechnen, aber wenden Sie es auf die Quadrate der Elemente, und dann subtrahieren Sie die xbar Begriff . Sein gerade zwei Anwendungen des Filters, einmal zur Reihe selbst und dann zur Reihe quadriert. Ein weiterer Trick. Da die Standardabweichung nicht durch einen konstanten Versatz beeinflusst wird, subtrahieren Sie zuerst den Gesamtmittelwert der Serie. Dies reduziert den Rechenfehler. Vielleicht Im nicht sehr klar hier. Lets versuchen ein Beispiel. 100 Punkte in einer Reihe, mit einem Fenster der Breite 10. (Anmerkung, ich habe Anmerkung diesen Code geprüft, aber es sollte nah sein. Ive nicht sogar überprüft, ob ich die Formel für die Varianz oben richtig erhielt.) Einige gelegentliche Daten m100 x (1, m-n1) i0: (mn) für j1: n xbarxbarx (ij) / n Endfilter macht das MA leichter: xbar filter (one (1 (1: 1, x) x (x2-nxbar 2) / (n - 1) N-1) SDsqrt (V) SD (1: (n-1) HTH, John DErrico Ed Ross ltedrosscayahoo. cagt schrieb in News: eeb20d3.-1WebX. raydaftYaTP: gt Hallo alle gt gt gt Ich habe einige Zeitreihen-Daten 1x70000 vector) Ich möchte gt einen gleitenden Durchschnitt von 12 Stunden (720 Punkte) durchführen. Ich habe einen vektorisierten gt-Algorithmus für die Berechnung des gleitenden Durchschnitts gefunden: gt gt z 0 cumsum (datain) gt dataavg (z (numpoints1: nlength1 ) - z (1: nlength-numpoints1)) / gt numpoints gt gt gt wobei datain die Zeitreihendaten ist, numpoints die Anzahl der gt-Punkte ist, die den Durchschnitt enthalten und nlength die Länge des Daten-gt-Vektors ist. Gt gt gt Allerdings ist es mein Hauptziel, die Standardabweichung jedes gt-12-Stunden-Durchschnitts zu berechnen, d. H. 69280 70000 - 720 Standardabweichung gt-Berechnungen. Da der obige Algorithmus für den Mittelwert gt kumulative Summen verwendet, sind die individuellen Werte nicht verfügbar, um gt die Standardabweichung in ihr zu berechnen. Gt gt gt Ich habe versucht, zwei Lösungen, die beide mit looping: gt gt gt 1) greifen einen Abschnitt der Daten zu durchschnittlichen berechnen Standard-gt Abweichung bewegen sich über einen Punkt und wiederholen gt gt gt 2) erstellen Sie ein Array 720x70000, wo jede Zeile ist Einfach die gt vorherige Zeile bewegt nach links ein Punkt berechnen die Standard-gt Abweichung von jeder Spalte gt gt gt Die zweite Methode schien die vielversprechendste als die Masse der gt-Bearbeitungszeit war bei der Schaffung der großen Array, die ich mit einem gt für Schleife. Hat jemand irgendwelche Vorschläge in Bezug auf effizient gt schaffen dieses Array gt gt gt Oder jede andere völlig verschiedene Vorschläge in der Lösung dieses Problem gt gt Danke jeder gt Ed gt Heres einige ziemlich undurchsichtigen Code, um eine bewegende Varianz (das Quadrat von dem, was Sie wollen. (X, N) ymovingvar (X, N) Berechnet die N-Punkt-Verschiebevarianz von Vector X Sehr empfehlenswert, dass N ungerade (Nr Autoren: Scott Seidman (scott. seidmanrochester. edu) 1/23/99 XX (:) XSQRX. X Konvsigonen (1, N) - (konvsig, XSQR) - (conv (convsig, X) .2) / N) / (N-1) - Scott Umgekehrtes erstes Feld der Adresse zu antworten gt Ich wollte nur betonen, dass es der Standard ist Ich habe keinen Zugriff auf Ihre ursprüngliche Post, aber ich nehme an, Sie wollen wissen, wie man eine bewegte Standardabweichung zu bekommen . Wenn ja, können Sie so etwas wie den folgenden (ungeprüften) Code verwenden: Dies verwendet die Formel E (x-u) 2) Ex2 - Ex2. Hoffe, dass geholfen, Was ist eine Watchlist Sie können Ihre Watch-Liste als Threads, die Sie haben Lesezeichen. Sie können Tags, Autoren, Threads und sogar Suchergebnisse zu Ihrer Beobachtungsliste hinzufügen. Auf diese Weise können Sie leicht verfolgen Themen, die Sie interessiert sind in. Um Ihre Watch-Liste, klicken Sie auf die quotMy Newsreaderquot Link. Um Artikel zu Ihrer Watchlist hinzuzufügen, klicken Sie auf den Link "quotadd to watch listquot" am unteren Rand einer Seite. Wie füge ich ein Element zu meiner Watchlist hinzu Um Suchkriterien zu Ihrer Watchlist hinzuzufügen, suchen Sie den gewünschten Begriff im Suchfeld. Klicken Sie auf den quotAddd diese Suche zu meinem watch listquot Link auf der Suchergebnisseite. Sie können auch einen Tag zu Ihrer Überwachungsliste hinzufügen, indem Sie nach dem Tag mit der Anweisung quottag suchen: tagnamequot wobei tagname der Name des Tags ist, das Sie ansehen möchten. Um einen Autor zu Ihrer Beobachtungsliste hinzuzufügen, gehen Sie zur Autorenprofilseite und klicken Sie auf den quotAdd this author zu meinem watch listquot Link am oberen Rand der Seite. Sie können auch einen Autor zu Ihrer Watch-Liste hinzufügen, indem Sie zu einem Thread, dass der Autor gebucht hat und klicken Sie auf den quotAdd diesen Autor zu meinem watch listquot Link. Sie werden benachrichtigt, wenn der Autor eine Post macht. Um einen Thread zu Ihrer Watch-Liste hinzuzufügen, gehen Sie auf die Thread-Seite und klicken Sie auf den Link diesen Thread zu meinem watch listquot Link am oberen Rand der Seite. Über Newsgroups, Newsreader und MATLAB Central Was sind Newsgroups Die Newsgroups sind ein weltweites Forum, das allen offen steht. Newsgroups werden verwendet, um eine breite Palette von Themen zu diskutieren, Ankündigungen machen und Handelsdateien. Diskussionen sind Threaded, oder gruppiert in einer Weise, die Sie eine gebuchte Nachricht und alle ihre Antworten in chronologischer Reihenfolge lesen können. Dies macht es einfach, den Faden des Gesprächs zu folgen, und zu sehen, whatrsquos bereits gesagt, bevor Sie Ihre eigene Antwort posten oder eine neue Buchung. Newsgroup-Inhalte werden von Servern verteilt, die von verschiedenen Organisationen im Internet gehostet werden. Nachrichten werden unter Verwendung von offenen Standardprotokollen ausgetauscht und verwaltet. Keine einzelne Entität ldquoownsrdquo die Newsgroups. Es gibt Tausende von Newsgroups, die jeweils ein einziges Thema oder ein bestimmtes Thema behandeln. Der MATLAB Central Newsreader platziert und zeigt Nachrichten in der comp. soft-sys. matlab-Newsgroup an. Wie lese oder poste ich in den Newsgroups Sie können den integrierten Newsreader auf der MATLAB Central-Website verwenden, um Nachrichten in dieser Newsgroup zu lesen und zu posten. MATLAB Central wird von MathWorks gehostet. Nachrichten, die über den MATLAB Central Newsreader veröffentlicht werden, werden von allen Benutzern der Newsgroups gesehen, unabhängig davon, wie sie auf die Newsgroups zugreifen. Es gibt mehrere Vorteile der Verwendung von MATLAB Central. Ein Konto Das MATLAB Central-Konto ist mit Ihrem MathWorks-Konto verknüpft. Verwenden Sie die E-Mail-Adresse Ihrer Wahl Mit dem MATLAB Central Newsreader können Sie eine alternative E-Mail-Adresse als Ihre Buchungsadresse definieren, um Unfälle in Ihrer primären Mailbox zu vermeiden und Spam zu reduzieren. Spam-Kontrolle Die meisten Newsgroup-Spam wird vom MATLAB Central Newsreader gefiltert. Tagging-Nachrichten können von jedem angemeldeten Benutzer mit einem entsprechenden Label versehen werden. Tags können als Schlüsselwörter verwendet werden, um bestimmte Dateien von Interesse zu finden, oder als eine Möglichkeit, Ihre Bookmarking-Einträge zu kategorisieren. Sie können wählen, andere zu erlauben, Ihre Umbauten anzusehen, und Sie können otherrsquo Umbauten als auch die der Gemeinschaft an sehen oder suchen. Tagging bietet eine Möglichkeit, sowohl die großen Trends und die kleineren, mehr obskuren Ideen und Anwendungen zu sehen. Beobachtungslisten Durch das Einrichten von Überwachungslisten können Sie über Updates informiert werden, die für Beiträge erstellt wurden, die von Autor, Thread oder Suchvariablen ausgewählt wurden. Ihre Benachrichtigungswünsche können per E-Mail (täglich digest oder sofort), im My Newsreader oder per RSS-Feed gesendet werden. Andere Möglichkeiten für den Zugriff auf die Newsgroups Verwenden Sie einen Newsreader über Ihre Schule, Arbeitgeber oder Internetdienstanbieter Pay for newsgroup Zugriff von einem kommerziellen Anbieter Verwenden Sie Google Groups Mathforum. org bietet einen Newsreader mit Zugriff auf die comp. soft sys. matlab newsgroup Führen Sie Ihre eigenen Server. Für typische Anweisungen siehe: slyck / ng. phppage2 Wählen Sie Ihr Land aus

Comments