Exponentieller gleitender Durchschnitt, der zu unterschiedlichen Zeiten abgetastet wird
Habe ich einen kontinuierlichen Wert, für die würde ich gerne berechnen exponential moving average. Normalerweise würde ich einfach die standard-Formel:
- Sn = aY + (1-α)Sn-1
wobei Sn ist der Durchschnitt, α ist der alpha, Y der Probe, und Sn-1 ist der Vorherige Durchschnitt.
Leider, aufgrund verschiedener Probleme, die ich nicht haben eine einheitliche sample-Zeit. Ich weiß, ich kann die Probe an der die meisten, sagen wir, einmal pro Millisekunde, aber aufgrund von Faktoren außerhalb meiner Kontrolle, ich kann nicht in der Lage sein, eine Probe zu nehmen für mehrere Millisekunden zu einer Zeit. Eine wahrscheinlich häufigere Fall ist jedoch, dass ich einfach Beispiel ein bisschen zu früh oder zu spät: statt der Probenahme nach 0, 1 und 2 ms. Ich Probe bei 0, 0.9 und 2.1 ms. Ich erwarten, dass, unabhängig von Verzögerungen, die meinen sampling-Frequenz wird weit, weit über der Nyquist-Grenze, und somit brauche ich nicht befürchten aliasing.
Ich rechne damit, dass ich den Umgang mit diesem in mehr oder weniger angemessener Weise durch Variation der alpha angemessen, auf der Grundlage der Länge der Zeit, die seit der letzten Probe.
Teil meiner Argumentation, dass dies funktioniert ist, dass das EMA "Linear interpoliert" zwischen den bisherigen Daten Punkt und dem aktuellen. Wenn wir Bedenken, dass die Berechnung eines EMA der folgenden Liste der Proben, die bei Zeitintervallen t: [0,1,2,3,4]. Sollten wir das gleiche Ergebnis erhalten, wenn wir die Intervall-2t, wo die Eingänge werden [0,2,4], richtig? Wenn die EMA hatte angenommen, dass bei t2 der Wert hatte seit 2 da t0das wäre das gleiche wie das Intervall t-Berechnung die Berechnung auf [0,2,2,4,4], die es nicht tun. Oder macht das Sinn?
Kann mir jemand sagen wie unterscheiden sich die alpha angemessen? "Bitte zeigen Sie Ihre Arbeit." I. e., zeigen Sie mir die Mathematik, die beweist, dass Ihre Methode richtig ist, das richtige zu tun.
InformationsquelleAutor der Frage Curt J. Sampson | 2009-06-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese Antwort basiert auf meinen guten Verständnis des low-pass-Filter ("exponential moving average" ist eigentlich nur eine single-pole lowpass filter), aber mein undeutliches Verständnis von dem, was du bist suchen für. Ich denke, das folgende ist, was Sie wollen:
Ersten, können Sie vereinfachen Ihre Gleichung ein wenig (sieht komplizierter, aber es ist einfacher im code). Ich werde mit "Y" für Ausgang und "X" - Eingang (anstelle von S für die Ausgabe und Y für die Eingabe, wie Sie es getan haben).
Yn = aX + (1-α)Yn-1 → Yn = Yn-1 + α(X - Yn-1)
welche codes:
Zweiten, der Wert von α ist hier "gleich" 1-e-Δt/τwobei Δt die Zeit zwischen den Proben, und τ ist die Zeitkonstante des Tiefpass-filters. Ich sage "gleich" in Anführungszeichen, weil dies funktioniert gut, wenn Δt/τ klein im Vergleich zu 1, und α = 1-e-Δt/τ ≈ Δt/τ. (Aber nicht zu klein: Sie laufen in der Quantisierung Probleme, und es sei denn, Sie greifen, um ein paar exotische Techniken, die Sie benötigen in der Regel eine zusätzliche N-bit-Auflösung in Ihrem " state variable S, wo N = -log2(α). ) Für größere Werte von Δt/τ der Filter-Effekt zu verschwinden beginnt, bis zu dem Punkt, wo α nahe 1 und Sie sind im Grunde nur die Zuordnung der input-zu den output.
Dieser sollte ordnungsgemäß funktionieren mit unterschiedlichen Werte von Δt (die variation von Δt ist nicht sehr wichtig, solange alpha klein ist, sonst läufst du in ein paar eher seltsame Nyquist-Probleme /aliasing /etc.), und wenn Sie auf einem Prozessor, wo der Multiplikation ist billiger als division oder als fixed-point-Probleme sind wichtig, vorberechnen ω = 1/τ, und prüfen, versuchen, um die Ungefähre Formel für α.
Wenn Sie wirklich wollen, zu wissen, wie die Ableitung der Formel
α = 1-e-Δt/τ
dann betrachten die Differentialgleichung Quelle:
Y + τ dY/dt = X
welche, wenn X eine Einheit step-Funktion, hat die Lösung Y = 1 - e-t/τ. Für kleine Werte von ∆ T, die Ableitung angenähert werden können durch ΔY/Δt, wobei
Y + τ ΔY/Δt = X
ΔY/Δt = (X-Y)/τ
ΔY = (X-Y) - (Δt/τ) = α(X-Y)
und die "Hochrechnung" von α = 1-e-Δt/τ kommt aus versuchen, die Anpassung des Verhaltens mit der Einheit step-Funktion Fall.
InformationsquelleAutor der Antwort Jason S
Haben einen Blick hier: http://www.eckner.com/research.html
Blick auf den zweiten link: ""Algorithmen für Ungleichmäßig Verteilte Zeitreihen: gleitende Durchschnitte und Andere Rollende Betreiber"
Dokument beschreibt genau die Programmierung der algorithmen, die Sie brauchen, denke ich.
InformationsquelleAutor der Antwort Bent Tranberg
Dies ist keine vollständige Antwort, aber vielleicht der Anfang von einer. Es ist so weit, wie ich kam mit diesem in einer Stunde oder so spielen, bin ich Entsendung es als ein Beispiel für das, was ich Suche, und vielleicht eine inspiration für andere arbeiten an dem problem.
Fange ich mit der S0das ist der Durchschnittswert, die aus dem vorherigen Durchschnitt S-1 und die Probe Y0 aufgenommen bei t0. (t1 - t0) ist meine sample-Intervall und α festgelegt ist, um was auch immer angemessen ist, das sample-Intervall und die Periode, über die ich wünschte, zu durchschnittlich.
Ich überlegt, was passiert, wenn ich vermisse die Probe bei t1 und anstatt zu haben, um nicht mit der Probe Y2 aufgenommen bei t2? Gut, wir können beginnen, durch Erweiterung der Gleichung um zu sehen, was passiert wäre, wenn wir mussten, Y1:
Ersetzen:
Merke ich, dass die Reihe scheint unendlich verlängern auf diese Weise, weil wir Sie ersetzen kann, Sn in der rechten Seite auf unbestimmte Zeit:
Ok, also es ist nicht wirklich ein Polynom (dumm mich), aber wenn wir multiplizieren der anfänglichen Laufzeit von einem, dann sehen wir ein Muster:
Hm: es ist eine exponentielle Serie. Quelle überraschung! Vorstellen, dass aus der Gleichung für eine exponentielle gleitenden Durchschnitt!
Also wie auch immer, ich habe das x0 + x1 + x2 + x3 + ... was Los, und ich bin mir sicher, dass ich bin riechen
e
oder Natürliche Logarithmus treten hier Rum, aber ich kann mich nicht erinnern, wo ich fuhr weiter, bevor ich lief aus der Zeit.InformationsquelleAutor der Antwort Curt J. Sampson
Jede Antwort auf diese Frage, oder jeden Beweis der Richtigkeit dieser Antwort hängt stark davon ab, die Daten, die Sie Messen.
Wenn Ihr die Proben wurden bei t0=0 MS , t1=0,9 ms und t2=2.1 ms , aber Ihre Wahl von α ist, basierend auf 1-ms-Intervallen, und daher möchten Sie ein lokal angepasst αn , der Beweis der Richtigkeit der Wahl würde bedeuten, zu wissen, die sample-Werte bei t=1 MS und t=2ms .
Dies führt zu der Frage: Kann man interpolieren, Ihre Daten erschwingliches zu haben, vernünftige Vermutungen, was in-zwischen den Werten hätte? Oder kann man auch interpolieren der Durchschnitt selbst?
Wenn keines von beiden möglich ist, dann so weit wie ich es sehe, ist die logische Wahl in einer zwischen dem Wert Y(t) ist die zuletzt berechnete Mittelwertd.h. Y(t) ≈ Snwobei n maxmial so dass tn<t.
Diese Entscheidung hat eine einfache Folge: Verlassen α allein, egal, was die Zeit Unterschied war.
Wenn auf der anderen Seite ist es möglich zu interpolieren, Ihre Werte, dann geben Sie averagable konstant-Intervall Proben. Schließlich, wenn es überhaupt möglich ist, zu interpolieren und die Durchschnittliche selbst machen würde ist die Frage bedeutungslos.
InformationsquelleAutor der Antwort balpha
Durch Verwendung einer leicht unterschiedlichen α ist gleich (1-αdas man aus der Frage), die grundlegende Formel hinzufügen, um einen neuen Wert Y zu einem vorhandenen Durchschnitt der S0 sieht wie folgt aus:
Wenn wir jetzt die Länge des Zeitintervalls t und nehmen an, dass nur α hängt davon ab, dass t, dass die Formel sieht wie folgt aus:
Nehme nun an, dass t = t1 + h2. Wenn der Durchschnitt wird erstellt, indem zwei Werte von Y für die Zeit Intervallen t1 und t2die daraus resultierende Durchschnitt sieht wie folgt aus:
Wenn dieser Durchschnitt sollte die gleiche sein, wie wenn die ganze t-Intervall würde die Hinzugefügt wurden, auf einmal, es folgt, dass αt = αt1 - αt2. Eine definition von α, dass diese Forderung erfüllt wäre:
Weil:
Diese Ergebnisse in der folgenden averaging-Funktion:
Habe ich nicht wirklich getestet, aber wenn die Annahmen, die ich machte Ihr passen Szenario, das sieht aus wie ein averaging-Funktion zur Verfügung, mit Schwankungen in den sampling-Intervallen ganz gut.
InformationsquelleAutor der Antwort sth
Lassen Sie uns sagen, wir würden gern eine exponentiell abklingende Durchschnitt auf eine stetige Funktion. Aber wir haben nicht alle Werte der Funktion, nur ein paar Proben. Diese Formel würde einen gewichteten Durchschnitt der Proben, die wir haben mit den gewichten hätten Sie in den kontinuierlichen Durchschnitt.
Multiplikatorn = Alphan-Zeitn-1
Summen = Valn + Summen-1*Multiplikatorn
Countn = 1 + Countn-1*Multiplikatorn
Avgn = Summen/Countn
InformationsquelleAutor der Antwort yairchu
Ich würde den
alpha
Wert allein, und füllen Sie die fehlenden Daten ein.Da Sie nicht wissen, was passiert, während der Zeit, wenn Sie nicht Beispiel, können Sie füllen Sie die Proben mit 0, oder halten Sie den vorherigen Wert stabil und verwenden Sie diese Werte für die EMA. Oder einige rückwärts-interpolation haben Sie ein neues sample, füllen Sie die fehlenden Werte und berechnen der EMA.
Was ich versuche zu bekommen ist, haben Sie einen Eingang
x[n]
die Löcher. Es gibt keinen Weg, um zu bekommen die Tatsache, dass Sie fehlende Daten. So können Sie eine null, um zu halten, oder setzen Sie ihn auf null, oder irgendeine Art von interpolation zwischenx[n]
undx[n+M]
woM
ist die Anzahl der fehlenden Proben-und n-der start in die Lücke. Vielleicht sogar mit den Werten vorn
.InformationsquelleAutor der Antwort freespace
Dies ist ähnlich zu einem offenen problem auf meiner todo-Liste. Ich habe einen Schema gearbeitet, in gewissem Maße, aber nicht über mathematische arbeiten auf, diesen Vorschlag noch.
Update & summary: möchten, halten Sie den Glättungsfaktor (alpha) unabhängig von der kompensationsfaktor (ich beziehe mich als beta-Version hier). Jason ' s ausgezeichnete Antwort bereits akzeptiert hier funktioniert Super für mich.
Erste Schritt.
Zweiten Schritt.
Was diese Glättung Annäherung verpassen?
InformationsquelleAutor der Antwort nik