Sunday, 8 October 2017

Mathematica Gleitender Durchschnitt


Ich habe eine Handlung von Zeitreihen in ggplot2 Paket und ich habe die Moving Average durchgeführt und ich möchte das Ergebnis der gleitenden Durchschnitt auf 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 Angewandter Code für die Zeitreihen-Darstellung: Beispiel für Moving-Average-Plot Beispiel für erwartete Ergebnisse Herausforderung ist, dass die Zeitreihendaten aus dem Datensatz erhalten, die Zeitstempel und Temperatur enthalten, aber Moving Average Daten enthalten nur die durchschnittliche Spalte und nicht die Zeitstempel und 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 Auftragung der Rohdaten. Ich habe versucht, mit Tiefpassfilter für eine Woche, aber die Kurve ist immer noch nicht sehr gut. Meine Kurve hat viele Zickzacke. Das folgende ist meine Tiefpaßfilterfunktion. Nachdem ich den obigen Code ausgewertet habe, kann ich die drei Teile der Zickzackkurve separat glätten. Dann kombiniere ich sie. Wie ich schon sagte, die Kurve noch nicht gut genug. Einige Teile sind unangemessen geändert Was ich will, ist so etwas wie dieses, das durch eine Zeichnung erhalten wurde :). Ich möchte nur einige Mathematica Plot Tricks oder einen anderen Ansatz, die mir die glatte Kurve Ich suche zu verwenden. Fragte Okt 10 14 am 13:04 Nur einen erweiterten Kommentar zu starten. Ill versuchen, Follow-up mit einigen Code später heute oder über das Wochenende. Das klingt nach einem perfekten Job für einen Laguerre-Filter und höchstwahrscheinlich ein adaptiver, z. B. Laguerre Filter Eine Einführung. Sie können viele Informationen auf diesem online finden. Der Laguerre Filter glättet einen Datensatz basierend auf Laguerre-Polynomen. Sein erster Begriff, ein Exponential Moving Average, gefolgt von bestimmten Feedback-Begriffe. Die Glättung wird durch einen Alpha-Faktor gesteuert (Alpha für den Exponential Moving Average) und dämpft die weiteren Begriffe. Alpha kann von 1 bis zu den Daten fast genau auf 0 für eine sehr langsame Antwort. Das Ergebnis ergibt den gewichteten Mittelwert der vergangenen Werte. Ein adaptives Laguerre-Filter führt einen variablen Alpha-Faktor ein, basierend darauf, wie gut der Filter die vergangenen N-Werte verfolgt. Dies sollte dem Filter ermöglichen, den Daten sehr genau zu folgen, während er den Charakter über die Spanne der x-Achse verändert. Mathematicas LaguerreL-Funktion kann dies ganz einfach. Aus der Dokumentation: Ill versuchen, einige Code später Post. Hallo, Jagra Vielen Dank für Ihre interessante Ich werde es auch versuchen Ich denke, dass MovingAverage diese Arbeit perfekt tun kann, wenn wir das Gewicht kontrollieren können, um den Durchschnitt an der oszillierenden Teil zu tun und folgen Sie meiner Kurve in der Nähe Die beiden Inversionspunkte. Wie Sie sehen können, mit meinem LowpassFilter oder kale39s GaussianFilter. Gibt es eine unangemessene Änderung im rechten Teil der Kurve, wo die ursprüngliche Kurve glatt oder gut genug ist. Ndash kann man mit GaussianFilter etwas anfangen: Zuerst 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 wie folgt verwenden: Um mit den Werten zu spielen, können wir ein einfaches Manipulat-Programm aufbauen: Ich denke, der WienerFilter funktioniert besser: beantwortet Okt 10 14 am 13:52 Thanks kale Wie Sie sehen können, mit meinem LowpassFilter oder Ihrem GaussianFilter. Gibt es sowohl eine unangemessene Änderung im rechten Teil der Kurve, wo die ursprüngliche Kurve glatt oder gut genug ist. Ich finde dein WienerFilter ist relativ gut. Aber wir können sie noch verbessern. Könnten Sie pls Post Ihre WienerFilter-Code ndash kann Oct 10 14 am 14:21 Ixy Ersetzen Sie einfach GaussianFilter mit WeinerFilter. Ndash kale Ich habe in Python ein wenig gespielt, und ich fand ein ordentliches Buch mit Beispielen. Eines der Beispiele ist die Auftragung einiger Daten. Ich habe eine. txt-Datei mit zwei Spalten und ich habe die Daten. Ich habe die Daten genau dargestellt, aber in der Übung heißt es: Ändern Sie Ihr Programm weiter, um den laufenden Durchschnitt der Daten zu berechnen und zu zeichnen, die durch Folgendes definiert sind: wobei r5 in diesem Fall (und yk die zweite Spalte in der Datendatei ist) . Lassen Sie das Programm sowohl die Originaldaten als auch den laufenden Durchschnitt auf demselben Graphen dar. Bisher habe ich dies: So wie berechne ich die Summe In Mathematica seine einfache, da seine symbolische Manipulation (Sumi, zum Beispiel), sondern wie die Summe in python, die alle zehn Punkte in den Daten und mittelt, und es tut Bis zum Ende der Punkte schaute ich das Buch an, fand aber nichts, was das erklären würde: heltonbikers code hat den Trick: D Vielen Dank :) Es gibt ein Problem mit der akzeptierten Antwort. Ich denke, wir müssen gültig anstelle der gleichen hier - return numpy. convolve (Intervall, Fenster, gleiche). Als Beispiel versuchen Sie die MA dieses Datensatzes 1,5,7,2,6,7,8,2,2,7,8,3,7,3,7,3,15,6 - das Ergebnis 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 mit demselben 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 dies mit gültigen amp gleichen und sehen, ob die Mathematik sinnvoll ist. Ich habe versucht, dies aus, aber ich werde es untersuchen, es ist eine Weile seit I39ve codiert in Python. Ndash dingod Warum don39t Sie schnell ausprobieren dies mit dem rostigen Code (und die Beispiel-Datensatz (als einfache Liste), schrieb ich. Für einige faul Personen (wie ich auf den ersten) - seine Masken aus der Tatsache, dass gleitende Durchschnitt ist falsch. Wahrscheinlich sollten Sie erwägen, die Bearbeitung Ihrer ursprünglichen Antwort. Ich versuchte es nur gestern und doppelte Kontrolle rettete mir Gesicht von schauen schlecht bei der Berichterstattung auf Cxo Ebene. Sie müssen nur tun, ist zu versuchen Ihre gleiche gleitende Durchschnitt einmal mit quotvalidquot und andere Zeit mit quotsamequot - und sobald Sie überzeugt sind, geben Sie mir einige Liebe (aka-up-vote) ndash ekta Okt 29 14 bei 7:16

No comments:

Post a Comment