Monday, 2 October 2017

Mathematica Gleit Durchschnitt Plot


Ich habe eine Handlung von Zeitreihen in ggplot2 Paket und ich habe den Moving Durchschnitt durchgeführt und ich möchte das Ergebnis des gleitenden Durchschnitts in die Handlung der Zeitreihen hinzufügen. Beispiel des Datensatzes (p31): ambtemp dt -1.14 2007-09-29 00:01:57 -1.12 2007-09-29 00:03:57 -1.33 2007-09-29 00:05:57 -1.44 2007 -09-29 00:07:57 -1.54 2007-09-29 00:09:57 -1.29 2007-09-29 00:11:57 Angegebener Code für die Zeitreihen-Präsentation: Beispiel für Moving Average Plot Beispiel für erwartete Ergebnisse The Herausforderung ist, dass Zeitreihen-Daten aus dem Datensatz, der Zeitstempel und Temperatur enthält, aber die Verschiebung der durchschnittlichen Daten nur die durchschnittliche Spalte und nicht die Zeitstempel und die Anpassung dieser beiden können Inkonsistenz verursachen. Ich habe eine Liste von Datenpunkten,. meine Daten. Wenn ich sie plotze, ist die Kurve gezackt. Ich möchte die Kurve glätten und die beiden scharfen Ecken bewahren. Dies ist eine Handlung der Rohdaten. Ich habe versucht, mit Tiefpassfiltern für eine Woche, aber die Kurve ist immer noch nicht sehr gut. Meine Kurve hat viele Zickzacke. Das folgende ist meine Tiefpassfilterfunktion. Nach der Auswertung des obigen Codes kann ich die drei Teile der Zickzackkurve separat glätten. Dann kombiniere ich sie. Wie ich schon sagte, die Kurve sieht immer noch nicht gut aus. Einige Teile sind unangemessen gewechselt Was ich will, ist so etwas wie das, was man durch Zeichnung bekommen hat :). Ich möchte nur einige Mathematica-Plot-Tricks oder einen anderen Ansatz verwenden, der mir die glatte Kurve gibt, die ich suche. Fragte am 10.10 um 13:04 Nur ein erweiterter Kommentar zu starten. Ich versuche es, mit einem Code später noch heute oder über das Wochenende zu folgen. Das klingt wie ein perfekter Job für einen Laguerre-Filter und wahrscheinlich ein adaptiver, z. B. Laguerre Filter Eine Einführung. Hier finden Sie viele Infos zu diesem Online. Der Laguerre Filter glättet einen Datensatz auf Basis von Laguerre-Polynomen. Sein erster Begriff, ein Exponential Moving Average, gefolgt von bestimmten Feedback-Bedingungen. Die Glättung wird durch einen Alpha-Faktor (das Alpha für den Exponential Moving Average) gesteuert und dämpft auch die weiteren Begriffe. Alpha kann von 1 reichen, um den Daten fast genau zu 0 für eine sehr langsame Antwort zu folgen. Das Ergebnis ergibt einen gewichteten Durchschnitt der vergangenen Werte. Ein adaptiver Laguerre-Filter führt einen variablen Alpha-Faktor ein, basierend darauf, wie gut der Filter die bisherigen N-Werte verfolgt. Dies sollte es ermöglichen, dass der Filter den Daten sehr genau folgt, da er das Zeichen über die Spanne der x-Achse ändert. Mathematicas LaguerreL-Funktion kann das ganz einfach machen. Aus der Dokumentation: Ill versuchen, einige Code später zu posten. Hallo Jagra Vielen Dank für Ihr Interessant Ich werde es auch versuchen Ich denke, dass MovingAverage diesen Job perfekt machen kann, wenn wir das Gewicht kontrollieren können, um den Durchschnitt am oszillierenden Teil zu machen und meiner Kurve nahe zu folgen Die beiden inversion Punkte. Wie Sie sehen können, mit meinem LowpassFilter oder Kale39s GaussianFilter. Es gibt eine unangemessene Veränderung im rechten Teil der Kurve, wo die ursprüngliche Kurve glatt oder gut genug ist. Ndash kann 10.10 14 um 14:14 Heres ein ziemlich ham-fisted Ansatz mit GaussianFilter: Erstens eine Filterfunktion: Diese Funktion wendet einen Gaußschen Filter auf alle Daten an, die größer als ein bestimmter y-Wert sind. Wir können es so verwenden: Um mit den Werten zu spielen, können wir ein einfaches Manipulierprogramm bauen: Ich denke, der WienerFilter fährt besser: beantwortet 10. Oktober 14 um 13:52 Danke Kale Wie du sehen kannst, mit meinem LowpassFilter oder deinem GaussianFilter. Es gibt sowohl eine unangemessene Veränderung im rechten Teil der Kurve, wo die ursprüngliche Kurve glatt oder gut genug ist. Ich denke dein WienerFilter ist relativ gut Aber wir können es noch verbessern. Könnten Sie pls Post Ihre WienerFilter Code ndash kann 10.10 14 um 14:21 Ixy Ersetzen Sie einfach GaussianFilter mit WeinerFilter. Ndash kale 10.10 bei 14:22 Ihre Antwort 2017 Stack Exchange, IncI Ich spiele in Python ein bisschen wieder, und ich fand ein ordentliches Buch mit Beispielen. Eines der Beispiele ist, einige Daten zu zeichnen. Ich habe eine. txt Datei mit zwei Spalten und ich habe die Daten. Ich habe die Daten ganz gut gezeichnet, aber in der Übung heißt es: Ändern Sie Ihr Programm weiter zu berechnen und plotten den laufenden Durchschnitt der Daten, definiert durch: wo r5 in diesem Fall (und die yk ist die zweite Spalte in der Datendatei) . Habe das Programm sowohl die Originaldaten als auch den laufenden Durchschnitt auf demselben Graphen. Bisher habe ich das: Also, wie berechne ich die Summe In Mathematica ist es einfach, da seine symbolische Manipulation (zB Sumi), aber wie man die Summe in der Pythonmenge berechnet, die alle zehn Punkte in den Daten nimmt und sie mittelt und tut Bis zum Ende der Punkte sah ich das Buch an, fand aber nichts, was das erklären würde: Heltonbikers Code hat den Trick gemacht: D Vielen Dank :) Es gibt ein Problem mit der akzeptierten Antwort. Ich denke, wir müssen hier stattdessen gültig verwenden - return numpy. convolve (Intervall, Fenster, gleich). Als Beispiel probiere das MA dieses Datensatzes 1,5,7,2,6,7,8,2,2,7,8,3,7,3,7,3,15,6 - das Ergebnis aus Sollte 4,2,5,4,6,0,5,0,5,0,5,2,5,4,4,4,5,4,5,6,5,6,4,6,7,0,6,8 sein. Aber das gleiche gibt uns eine falsche Ausgabe von 2,6,3,0,4,2,5,4,6,0,5,0,5,0,5,2,5,4,4,4,5,4,5,6,5,6, 4,6,7,0,6,8,6,2,4,8 Rusty Code, um dies auszuprobieren - - Versuchen Sie das mit gültigem Verstärker und sehen Sie, ob die Mathematik sinnvoll ist. Antwortete 29. Oktober 14 um 4:27 Haven39t versuchte dies aus, aber ich schaue hinein, es war eine Weile seit I39ve in Python kodiert. Ndash dingod Okt 29 14 at 7:07 dingod Warum hast du das schnell mit dem rostigen Code (und dem Beispieldatensatz (als einfache Liste) ausprobiert. Für einige faulen Leute (wie ich schon einmal war) - seine Masken aus der Tatsache, dass gleitenden Durchschnitt ist falsch. Während Sie sollten in Erwägung ziehen, Ihre ursprüngliche Antwort zu bearbeiten. Ich habe es nur gestern versucht und doppelte Überprüfung gespeichert mich Gesicht von schauen schlecht bei der Berichterstattung auf Cxo Ebene. Sie müssen nur tun, ist zu versuchen Ihr gleicher gleitender Durchschnitt einmal mit quotvalidquot und andere Zeit mit quotsamequot - und sobald Sie überzeugt sind, geben Sie mir etwas Liebe (aka-up-vote) ndash ekta Okt 29 14 at 7:16

No comments:

Post a Comment