Saturday 1 July 2017

Bewegungs Durchschnitt Reine Daten


Einführung in ARIMA Nichtseasonale Modelle. ARIMA p, d, q Vorhersage Gleichung ARIMA Modelle sind in der Theorie die allgemeinste Klasse von Modellen für die Vorhersage einer Zeitreihe, die gemacht werden kann, um stationär zu sein, indem sie gegebenenfalls, wenn auch in Verbindung mit nichtlinearen Transformationen, differenziert werden Wie z. B. Protokollierung oder Abblendung, wenn nötig Eine zufällige Variable, die eine Zeitreihe ist, ist stationär, wenn ihre statistischen Eigenschaften alle über die Zeit konstant sind. Eine stationäre Serie hat keinen Trend, ihre Variationen um ihren Mittelwert haben eine konstante Amplitude, und sie wackelt in einer konsistenten Weise Dh ihre kurzfristigen zufälligen Zeitmuster sehen immer in einem statistischen Sinn gleich aus. Die letztere Bedingung bedeutet, dass ihre Autokorrelationskorrelationen mit ihren eigenen vorherigen Abweichungen vom Mittel konstant über die Zeit bleiben oder äquivalent, dass sein Leistungsspektrum über die Zeit konstant bleibt Variable dieses Formulars kann wie gewöhnlich als eine Kombination von Signal und Rauschen betrachtet werden, und das Signal, wenn man offensichtlich ist, könnte ein Muster der schnellen oder langsamen mittleren Reversion oder sinusförmigen Oszillation oder eines schnellen Wechseles im Zeichen sein, und es könnte auch haben Eine saisonale Komponente Ein ARIMA-Modell kann als ein Filter betrachtet werden, der versucht, das Signal vom Rauschen zu trennen, und das Signal wird dann in die Zukunft extrapoliert, um Prognosen zu erhalten. Die ARIMA-Prognosegleichung für eine stationäre Zeitreihe ist eine lineare, dh regression - Typ-Gleichung, in der die Prädiktoren aus Verzögerungen der abhängigen Variablen und / oder Verzögerungen der Prognosefehler bestehen. Das ist. Gezahlter Wert von Y eine Konstante und / oder eine gewichtete Summe aus einem oder mehreren neueren Werten von Y und einer gewichteten Summe von eins oder Neuere Werte der Fehler. Wenn die Prädiktoren nur aus verzögerten Werten von Y bestehen, ist es ein reines autoregressives, selbstregressives Modell, das nur ein Spezialfall eines Regressionsmodells ist und mit Standardregressionssoftware ausgestattet werden könnte Erstklassiges autoregressives AR 1 - Modell für Y ist ein einfaches Regressionsmodell, bei dem die unabhängige Variable nur Y um eine Periode LAG Y, 1 in Statgraphics oder YLAG1 in RegressIt liegt. Wenn einige der Prädiktoren Fehler der Fehler sind, ein ARIMA-Modell Es handelt sich dabei nicht um ein lineares Regressionsmodell, denn es gibt keine Möglichkeit, den letzten Periodenfehler als eigenständige Variable anzugeben, die Fehler müssen auf einer Periodendauer berechnet werden, wenn das Modell an die Daten angepasst ist. Aus technischer Sicht ist die Problem bei der Verwendung von verzögerten Fehlern als Prädiktoren ist, dass die Vorhersagen des Modells keine linearen Funktionen der Koeffizienten sind, obwohl sie lineare Funktionen der vergangenen Daten sind. Daher müssen Koeffizienten in ARIMA-Modellen, die verzögerte Fehler enthalten, durch nichtlineare Optimierungsmethoden hill-climbing geschätzt werden Anstatt nur ein System von Gleichungen zu lösen. Das Akronym ARIMA steht für Auto-Regressive Integrated Moving Average Lags der stationären Serie in der Prognose Gleichung heißen autoregressive Begriffe, Verzögerungen der Prognosefehler werden als gleitende durchschnittliche Ausdrücke und eine Zeitreihe bezeichnet Die gestört werden muss, um stationär zu sein, soll eine integrierte Version einer stationären Serie sein. Random-Walk - und Random-Trend-Modelle, autoregressive Modelle und exponentielle Glättungsmodelle sind alle Sonderfälle von ARIMA-Modellen. Ein nicht seasonales ARIMA-Modell wird klassifiziert Als ARIMA p, d, q Modell, wobei p die Anzahl der autoregressiven Terme ist. d ist die Anzahl der für die Stationarität benötigten Nichtseasonalunterschiede und ist die Anzahl der verzögerten Prognosefehler in der Vorhersagegleichung. Die Prognosegleichung ist Konstruiert wie folgt Zuerst bezeichne y die d-te Differenz von Y, die bedeutet. Hinweis, dass die zweite Differenz von Y der d 2 Fall ist nicht der Unterschied von 2 Perioden vor Vielmehr ist es die erste Differenz-of-the-first Unterschied, das ist das diskrete Analog einer zweiten Ableitung, dh die lokale Beschleunigung der Serie und nicht die lokale Tendenz. In Bezug auf y die allgemeine Prognose Gleichung ist. Hier sind die gleitenden durchschnittlichen Parameter s definiert, so dass ihre Zeichen sind negativ in der Gleichung, nach der Konvention von Box und Jenkins eingeführt Einige Autoren und Software einschließlich der R-Programmiersprache definieren sie so, dass sie Pluszeichen statt haben Wenn die tatsächlichen Zahlen in die Gleichung gesteckt sind, gibt es keine Mehrdeutigkeit, aber es ist wichtig zu wissen, welche Konvention Ihre Software verwendet, wenn Sie die Ausgabe lesen Oft werden die Parameter dort mit AR 1, AR 2, und MA 1, MA 2, etc. identifiziert. Um das passende ARIMA-Modell für Y zu identifizieren, beginnen Sie mit der Bestimmung der Reihenfolge der differenzierenden d Notwendigkeit Um die Serie zu stationieren und die Brutto-Features der Saisonalität zu entfernen, vielleicht in Verbindung mit einer Varianz-stabilisierenden Transformation wie Logging oder Deflating Wenn Sie an dieser Stelle stoppen und voraussagen, dass die differenzierte Serie konstant ist, haben Sie nur einen zufälligen Spaziergang oder zufällig platziert Trendmodell Allerdings können die stationärisierten Serien noch autokorrelierte Fehler aufweisen, was darauf hindeutet, dass in der Prognosegleichung auch eine Anzahl von AR-Terme p1 und / oder einige Anzahl MA-Terme q1 erforderlich sind. Verfahren zur Bestimmung der Werte von p, d und Q, die am besten für eine gegebene Zeitreihe sind, werden in späteren Abschnitten der Notizen besprochen, deren Links oben auf dieser Seite stehen, aber eine Vorschau auf einige der Arten von nicht-seasonalen ARIMA-Modellen, die häufig angetroffen werden, ist unten angegeben. ARIMA 1 , 0,0 erstklassiges autoregressives Modell, wenn die Serie stationär und autokorreliert ist, vielleicht kann es als ein Vielfaches ihres eigenen vorherigen Wertes prognostiziert werden, plus eine Konstante Die Prognosegleichung in diesem Fall ist. das ist Y, das auf sich selbst zurückgeblieben ist Eine Periode Dies ist ein ARIMA 1,0,0 Konstante Modell Wenn der Mittelwert von Y Null ist, dann wäre der konstante Term nicht enthalten. Wenn der Steigungskoeffizient 1 positiv und kleiner als 1 in der Größenordnung ist, muss er kleiner als 1 in sein Größe, wenn Y stationär ist, beschreibt das Modell das Mittel-Rückkehr-Verhalten, bei dem der nächste Perioden-s-Wert 1 mal so weit weg von dem Mittelwert liegen sollte, wie dieser Periodenwert Wenn 1 negativ ist, prognostiziert er das Mittel-Rückkehr-Verhalten mit Wechsel Von Zeichen, dh es sagt auch voraus, dass Y unterhalb der mittleren nächsten Periode sein wird, wenn es über dem Mittelwert dieser Periode liegt. In einem autoregressiven Modell der zweiten Ordnung ARIMA 2,0,0 würde es einen Y-t-2-Term geben Genau so gut und so weiter Abhängig von den Zeichen und Größenordnungen der Koeffizienten könnte ein ARIMA 2.0,0 Modell ein System beschreiben, dessen mittlere Reversion in einer sinusförmig oszillierenden Weise stattfindet, wie die Bewegung einer Masse auf einer Feder, die Wird zufälligen Schocks ausgesetzt. ARIMA 0,1,0 zufälliger Spaziergang Wenn die Serie Y nicht stationär ist, ist das einfachste Modell für sie ein zufälliges Spaziergangmodell, das als Begrenzungsfall eines AR 1 - Modells betrachtet werden kann Autoregressiver Koeffizient ist gleich 1, dh eine Reihe mit unendlich langsamer mittlerer Reversion Die Vorhersagegleichung für dieses Modell kann wie überall geschrieben werden, wo der konstante Term die durchschnittliche Periodenänderung ist, dh die Langzeitdrift in Y Dieses Modell könnte sein Als ein Nicht-Intercept-Regressionsmodell, bei dem die erste Differenz von Y die abhängige Variable ist, da sie nur eine nicht-seasonale Differenz und einen konstanten Term enthält, wird sie als ARIMA 0,1,0-Modell mit Konstante klassifiziert. Die zufällige Walk - Ohne - Drift-Modell wäre ein ARIMA-0,1,0-Modell ohne constant. ARIMA 1,1,0 differenzierte Autoregressive Modell erster Ordnung Wenn die Fehler eines zufälligen Walk-Modells autokorreliert sind, kann das Problem eventuell durch Hinzufügen einer Verzögerung behoben werden Der abhängigen Variablen zur Vorhersagegleichung - dh durch Rückkehr der ersten Differenz von Y auf sich selbst verzögert um eine Periode Dies würde die folgende Vorhersagegleichung ergeben, die umgeordnet werden kann. Dies ist ein autoregressives Modell erster Ordnung mit einer Ordnung von Nonseasonal differenzing und ein konstanter term - dh ein ARIMA 1,1,0 model. ARIMA 0,1,1 ohne konstante einfache exponentielle Glättung Eine weitere Strategie zur Korrektur autokorrelierter Fehler in einem zufälligen Walk-Modell wird durch das einfache exponentielle Glättungsmodell vorgeschlagen Für einige nichtstationäre Zeitreihen, z. B. solche, die geräuschvolle Schwankungen um ein langsam variierendes Mittel aufweisen, führt das zufällige Spaziergangmodell nicht so gut wie ein gleitender Durchschnitt der vergangenen Werte. Anders ausgedrückt, anstatt die jüngste Beobachtung als die Prognose der Nächste Beobachtung ist es besser, einen Durchschnitt der letzten Beobachtungen zu verwenden, um das Rauschen herauszufiltern und den lokalen Mittel genauer zu schätzen. Das einfache exponentielle Glättungsmodell verwendet einen exponentiell gewichteten gleitenden Durchschnitt der vergangenen Werte, um diesen Effekt zu erzielen. Die Vorhersagegleichung Denn das einfache exponentielle Glättungsmodell kann in einer Anzahl von mathematisch äquivalenten Formen geschrieben werden, von denen eine die sogenannte Fehlerkorrekturform ist, in der die vorherige Prognose in Richtung des von ihr vorgenommenen Fehlers eingestellt wird. Weil e t-1 Y T-1 - t-1 per definitionem kann dies umgeschrieben werden, da ist eine ARIMA 0,1,1 - without-konstante Prognosegleichung mit 1 1 - das bedeutet, dass man eine einfache exponentielle Glättung platzieren kann, indem man sie als ARIMA 0,1,1 Modell ohne Konstante, und der geschätzte MA 1 - Koeffizient entspricht 1-minus-alpha in der SES-Formel Erinnern Sie sich, dass im SES-Modell das Durchschnittsalter der Daten in den Prognosen von 1 Periode 1 beträgt Was bedeutet, dass sie tendenziell hinter Trends oder Wendepunkten um etwa 1 Perioden zurückbleiben. Daraus folgt, dass das Durchschnittsalter der Daten in den 1-Periodenprognosen eines ARIMA 0,1,1 - without-constant-Modells 1 1 - 1 Wenn also 1 0 8 das Durchschnittsalter 5 ist, so nähert sich das ARIMA 0,1,1 - without-konstantes Modell zu einem sehr langfristigen gleitenden Durchschnitt, und wenn 1 sich nähert, wird es Ein zufälliges Spaziergang ohne Drift-Modell. Was ist der beste Weg, um die Autokorrelation zu korrigieren, indem man AR-Terme hinzufügt oder MA-Terme hinzufügt. In den vorangegangenen zwei Modellen, die oben diskutiert wurden, wurde das Problem der autokorrelierten Fehler in einem zufälligen Walk-Modell auf zwei verschiedene Arten festgelegt Durch Hinzufügen eines verzögerten Wertes der differenzierten Reihe zur Gleichung oder Hinzufügen eines verzögerten Wertes des Prognosefehlers, welcher Ansatz am besten ist. Ein Schlüsselbund für diese Situation, der später ausführlicher erörtert wird, ist die positive Autokorrelation In der Regel am besten behandelt durch Hinzufügen eines AR-Begriffs zum Modell und negative Autokorrelation ist in der Regel am besten durch Hinzufügen eines MA-Begriffs In Business-und wirtschaftlichen Zeitreihen, negative Autokorrelation oft entsteht als Artefakt der Differenzierung Im Allgemeinen, differenziert reduziert positive Autokorrelation und kann sogar verursachen Ein Wechsel von positiver zu negativer Autokorrelation So wird das ARIMA-0,1,1-Modell, bei dem die Differenzierung mit einem MA-Term begleitet wird, häufiger als ein ARIMA 1,1,0 Modell verwendet. ARIMA 0,1,1 mit konstantem Einfache exponentielle Glättung mit Wachstum Durch die Implementierung des SES-Modells als ARIMA-Modell erhalten Sie tatsächlich eine gewisse Flexibilität Zunächst einmal darf der geschätzte MA 1 - Koeffizient negativ sein, dies entspricht einem Glättungsfaktor größer als 1 in einem SES-Modell In der Regel nicht erlaubt durch das SES-Modell-Anpassungsverfahren Zweitens haben Sie die Möglichkeit, einen konstanten Begriff in das ARIMA-Modell einzubeziehen, wenn Sie es wünschen, um einen durchschnittlichen Nicht-Null-Trend zu schätzen. Das ARIMA-0,1,1-Modell mit Konstante hat Die Vorhersagegleichung. Die Prognosen für ein Periodenabschätzung von diesem Modell sind qualitativ ähnlich denen des SES-Modells, mit der Ausnahme, dass die Trajektorie der Langzeitprognosen typischerweise eine abfallende Linie ist, deren Steigung gleich mu ist, anstatt einer horizontalen Linie. ARIMA 0,2,1 oder 0,2,2 ohne konstante lineare exponentielle Glättung Lineare exponentielle Glättungsmodelle sind ARIMA-Modelle, die zwei Nichtseason-Differenzen in Verbindung mit MA-Terme verwenden. Der zweite Unterschied einer Serie Y ist nicht einfach der Unterschied zwischen Y und Selbst ist von zwei Perioden verzögert, aber vielmehr ist es der erste Unterschied der ersten Differenz - der Wechsel-in-der-Änderung von Y in der Periode t. Somit ist die zweite Differenz von Y in der Periode t gleich Yt-Y T-1 - Y t-1 - Y t-2 Y t - 2Y t-1 Y t-2 Eine zweite Differenz einer diskreten Funktion ist analog zu einer zweiten Ableitung einer stetigen Funktion, die die Beschleunigung oder Krümmung in der Funktion misst Zu einem gegebenen Zeitpunkt. Das ARIMA-0,2,2-Modell ohne Konstante prognostiziert, dass die zweite Differenz der Serie gleich einer linearen Funktion der letzten beiden Prognosefehler ist, die umgestellt werden kann, wo 1 und 2 die MA 1 sind Und MA 2 Koeffizienten Dies ist ein allgemeines lineares exponentielles Glättungsmodell, das im Wesentlichen das gleiche wie das Holt-Modell ist, und das Brown-Modell ist ein Spezialfall Es verwendet exponentiell gewichtete Bewegungsdurchschnitte, um sowohl eine lokale Ebene als auch einen lokalen Trend in der Serie zu schätzen. Term-Prognosen aus diesem Modell konvergieren zu einer Geraden, deren Steigung von der durchschnittlichen Tendenz abhängt, die gegen Ende der Serie beobachtet wird. ARIMA 1,1,2 ohne konstante gedämpfte Trend lineare exponentielle Glättung. Dieses Modell ist in den begleitenden Folien auf ARIMA dargestellt Modelle Es extrapoliert den lokalen Trend am Ende der Serie, aber legt es bei längeren Prognosehorizonten ab, um eine Note des Konservatismus einzuführen, eine Praxis, die empirische Unterstützung hat. Sehen Sie den Artikel auf Warum der gedämpfte Trend von Gardner und McKenzie und der Goldenen Regel arbeitet Artikel von Armstrong et al für Details. Es ist in der Regel ratsam, an Modellen, in denen mindestens eines von p und q ist nicht größer als 1, dh nicht versuchen, ein Modell wie ARIMA 2,1,2, wie dies zu passen Dürfte zu Überfüllung und Gemeinsamen Faktoren führen, die in den Anmerkungen zur mathematischen Struktur von ARIMA-Modellen näher erörtert werden. Spreadsheet-Implementierung ARIMA-Modelle wie die oben beschriebenen sind einfach in einer Tabellenkalkulation implementierbar. Die Vorhersagegleichung ist einfach ein Lineare Gleichung, die sich auf vergangene Werte der ursprünglichen Zeitreihen und vergangene Werte der Fehler bezieht. So können Sie eine ARIMA-Prognosekalkulationstabelle einrichten, indem Sie die Daten in Spalte A, die Prognosemethode in Spalte B und die Fehlerdaten abzüglich Prognosen in Spalte speichern C Die Prognoseformel in einer typischen Zelle in Spalte B wäre einfach ein linearer Ausdruck, der sich auf Werte in vorhergehenden Zeilen der Spalten A und C bezieht, multipliziert mit den entsprechenden AR - oder MA-Koeffizienten, die in anderen Zellen auf der Spreadsheet gespeichert sind. 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 Datei mit zwei Spalten und ich habe die Daten, die ich die Daten genau gezeichnet habe, aber in der Übung sagt es, ändern Sie Ihr Programm weiter Zu berechnen und zu zeichnen den laufenden Durchschnitt der Daten, definiert durch. wo r 5 in diesem Fall und die yk ist die zweite Spalte in der Datendatei Haben das Programm sowohl die ursprünglichen Daten und die laufenden Durchschnitt auf dem gleichen Diagramm. So weit Ich habe diese. So Wie kann ich die Summe berechnen In Mathematica ist es einfach, da es s symbolische Manipulation Summe i, zum Beispiel, aber wie man Summe in Python berechnen, die alle zehn Punkte in den Daten nimmt und sie durchschnittt, und zwar so weit Das Ende der Punkte. Ich schaute auf das Buch, aber fand nichts, was das erklären würde. heltonbiker s Code hat den Trick D. Danke Sie sehr viel. Es gibt ein Problem mit der akzeptierten Antwort Ich denke, wir müssen gültig anstelle von gleichen verwenden Hier - Rückkehr Fenster, same. As ein Beispiel ausprobieren 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 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. Try dies mit gültigen gleichen und sehen, ob die Mathematik macht sinnvoll. answered Okt 29 14 bei 4 27.Haven t versucht dies aus, aber ich ll Schau mal hinein, es ist schon eine Weile her, seit ich in Python-Dingod codiert habe. 29. Oktober 14 um 7 07. Dingod Warum hast du das nicht schnell mit dem rostigen Code und dem Sample-Set als einfache Liste probiert Einige faulen Leute wie ich war anfangs - seine Masken aus der Tatsache, dass gleitenden Durchschnitt ist, sollten Sie in Erwägung ziehen, Ihre ursprüngliche Antwort zu beenden Ich habe es nur gestern versucht und doppelte Kontrolle gespeichert mich Gesicht von schauen schlecht bei der Berichterstattung an Cxo Ebene Alles, was Sie tun müssen , Ist es, den gleichen gleitenden Durchschnitt einmal mit gültiger und anderer Zeit mit dem gleichen zu versuchen - und sobald du überzeugt bist, gib mir etwas Liebe aka-up-vote ekta Okt 29 14 bei 7 16.Ich weiß, das ist eine alte Frage, aber hier ist Eine Lösung, die keine zusätzlichen Datenstrukturen oder Bibliotheken verwendet. Es ist linear in der Anzahl der Elemente der Eingabeliste und ich kann nicht anders denken, um es effizienter zu machen, wenn jemand weiß, dass es besser ist, das Ergebnis zuzuordnen, Bitte lass es mich wissen. HINWEIS Dies wäre viel schneller mit einem numpy Array statt einer Liste, aber ich wollte alle Abhängigkeiten zu beseitigen Es wäre auch möglich, Leistung durch Multi-Threaded Ausführung zu verbessern. Die Funktion geht davon aus, dass die Eingabe-Liste ist eins Dimensionale, also seien Sie vorsichtig. UPD effizientere Lösungen wurden von Alleo und jasaarim vorgeschlagen. Sie können für das verwenden. Das Modus-Argument spezifiziert, wie man die Kanten behandeln Ich wählte den gültigen Modus hier, weil ich denke, dass s, wie die meisten Menschen erwarten, dass Laufen bedeutet Zu arbeiten, aber Sie können andere Prioritäten haben Hier ist eine Handlung, die den Unterschied zwischen den Modi veranschaulicht. derwerted Mar 24 14 am 22 01.Ich mag diese Lösung, weil es sauber ist eine Zeile und relativ effiziente Arbeit in numpy gemacht Aber Alleo s Efficient Lösung mit besserer Komplexität Ulrich Stern Sep 25 15 bei 0 31.Sie können einen laufenden Mittelwert berechnen. Glücklicherweise enthält numpy eine Faltenfunktion, die wir verwenden können, um die Dinge zu beschleunigen. Das laufende Mittel ist gleichbedeutend mit dem Falten von x mit einem Vektor, der ist N lang, mit allen Mitgliedern gleich 1 N Die numpy Implementierung von convolve beinhaltet den Start-Transienten, also musst du die ersten N-1 Punkte entfernen. Auf meiner Maschine ist die schnelle Version 20-30 mal schneller, je nach Länge Des Eingangsvektors und der Größe des Mittelungsfensters. Hinweis, dass Falten hat einen gleichen Modus, der scheint, wie es sollte das Anfangsübergang Problem, aber es teilt es zwischen dem Anfang und Ende. Es entfernt die Transient aus dem Ende und die Anfang doesn t haben eine gut, ich denke es sa sach von prioritäten, ich brauche nicht die gleiche zahl der ergebnisse auf die kosten, um eine steigung in Richtung null, dass isn t gibt es in den Daten BTW, hier ist ein Befehl, um den Unterschied zu zeigen Zwischen den Modi Modi voll, gleiches, gültiges Plot, das 200,, 50, 50, Modus m für m in den Modi-Achsen -10, 251, - 1, 1 1 Legenden-Modi, loc unteren Zentrum mit pyplot und numpy importierten Lapis Mar 24 14 bei 13 56.pandas ist besser geeignet für diese als NumPy oder SciPy Seine Funktion Rollingmean macht den Job bequem Es gibt auch ein NumPy-Array, wenn die Eingabe ein Array ist. Es ist schwer zu Rollingmean in Leistung mit jeder benutzerdefinierten reinen Python-Implementierung zu schlagen Hier ist eine beispielhafte Leistung gegen zwei der vorgeschlagenen Lösungen. Es gibt auch schöne Möglichkeiten, wie man mit den Kantenwerten umgehen kann. Ich bin immer durch Signalverarbeitungsfunktion verärgert, die Ausgangssignale unterschiedlicher Form als die Eingangssignale zurückgibt, wenn beide Eingänge und Ausgänge sind von gleicher Art zB beides zeitliche Signale Es bricht die Korrespondenz mit verwandter unabhängiger Variable zB Zeit, Frequenz machen Plotten oder Vergleich nicht eine direkte Sache sowieso, wenn Sie das Gefühl teilen, möchten Sie vielleicht die letzten Zeilen der vorgeschlagenen Funktion ändern Als selbe Rückkehr y windowlen-1 - windowlen-1 Christian O Reilly Aug 25 15 bei 19 56. Ein bisschen spät zur Party, aber ich habe meine eigene kleine Funktion gemacht, die NICHT um die Enden oder Pads mit Nullen umschlingt, die dann sind Verwendet, um den Durchschnitt zu finden, wie eine weitere behandeln ist, dass es auch das Sample das Signal an linear beabstandeten Punkten anpassen. Passen Sie den Code nach Belieben an, um andere Features zu erhalten. Die Methode ist eine einfache Matrixmultiplikation mit einem normalisierten Gaußschen Kernel Verwendung auf einem sinusförmigen Signal mit zusätzlichen normalen verteilten Lärm. Diese Frage ist jetzt noch älter als wenn NeXuS schrieb über es im letzten Monat, aber ich mag, wie seine Code befasst sich mit Rand Fällen Allerdings, weil es ein einfacher gleitender Durchschnitt ist, es s Ergebnisse lag Hinter den Daten, die sie anwenden, dachte ich, dass der Umgang mit Randfällen in einer befriedigenderen Weise als NumPy s Modi gültig, die gleich und voll könnte durch die Anwendung eines ähnlichen Ansatzes zu einer Faltung basierte Methode erreicht werden. Mein Beitrag verwendet einen zentralen laufenden Durchschnitt, um seine auszurichten Ergebnisse mit ihren Daten Wenn für das vollformatige Fenster zwei Punkte vorhanden sind, werden laufende Mittelwerte aus sukzessiv kleineren Fenstern an den Kanten des Arrays berechnet. Eigentlich aus sukzessiv größeren Fenstern, aber das ist ein Implementierungsdetail S relativ langsame, weil es convolve verwendet und könnte wahrscheinlich ziemlich viel durch eine echte Pythonista aufgeholt werden, aber ich glaube, dass die Idee stands. answered Jan 2 bei 0 28. ist schön, aber langsam, wenn die Fensterbreite wächst groß Einige Antworten bieten Mehr effiziente Algorithmen mit aber scheinen nicht in der Lage, Kantenwerte zu behandeln Ich selbst habe einen Algorithmus implementiert, der dieses Problem gut behandeln kann, wenn dieses Problem als Input-Parameter deklariert wird. Mergenum kann als 2 windowwidth gedacht werden 1.Ich kenne diesen Code ein wenig Unleserlich, wenn du es nützlich machst und irgendwelche Ausdehnungen wünschst, lass es mich bitte wissen und ich werde diese Antwort aktualisieren Da das Schreiben einer Erklärung mir viel Zeit kosten kann, hoffe ich, dass ich es nur tue, wenn jemand es braucht. Bitte vergib mir für meine Faulheit Nur du bist an seiner ursprünglichen version interessiert. Es ist noch mehr unleserlich die erste Lösung befreit von Randproblem durch padding Nullen um das Array, aber die zweite Lösung hier gehandhabt es in einer harten und direkten Weise. In meinem letzten Satz war ich Versuchen, anzugeben, warum es hilft Flimmerpunkt Fehler Wenn zwei Werte sind etwa die gleiche Größenordnung, dann das Hinzufügen von ihnen verliert weniger Präzision als wenn Sie eine sehr große Zahl zu einem sehr kleinen hinzugefügt Der Code kombiniert benachbarte Werte in einer Weise, dass auch Zwischenprodukt Summen sollten immer vernünftig in der Größenordnung sein, um den Fließkomma-Fehler zu minimieren Nichts ist narrensicher, aber diese Methode hat ein paar sehr schlecht umgesetzte Projekte in der Produktion gespeichert Mayur Patel Dez 15 14 bei 17 22. Alleo Anstatt einen zusätzlichen Wert pro Wert zu machen, Du wirst zwei tun Der Beweis ist das gleiche wie das Bit-Flipping-Problem Allerdings ist der Punkt dieser Antwort nicht unbedingt Leistung, aber Präzision Memory-Nutzung für die Mittelung 64-Bit-Werte würde nicht mehr als 64 Elemente im Cache, so dass es s Freundlich im Gedächtnisgebrauch auch Mayur Patel 29 Dez 14 um 17 04.

No comments:

Post a Comment