Ist es möglich, Datenpunkte aus gleitenden Durchschnittsdaten zu extrahieren?
Mit anderen Worten, wenn ein Datensatz nur einfache gleitende Durchschnitte der vorherigen 30 Punkte enthält, ist es dann möglich, die ursprünglichen Datenpunkte zu extrahieren?
Wenn das so ist, wie?
Antworten:
+1 auf die Antwort von fabee, die vollständig ist. Nur eine Notiz, um es in R zu übersetzen, basierend auf den Paketen, die ich gefunden habe, um die Operationen zur Hand zu machen. In meinem Fall hatte ich Daten, bei denen es sich um NOAA-Temperaturvorhersagen für drei Monate handelt: Januar-Februar-März, Februar-März-April, März-April-Mai usw., und ich wollte sie in (ungefähre) Daten aufteilen. Monatswerte unter der Annahme, dass die Temperatur jedes Dreimonatszeitraums im Wesentlichen ein Durchschnitt ist.
Welches funktioniert gut für mich. Danke @fabee.
BEARBEITEN: OK, rückübersetzend mein R zu Python, erhalte ich:
(Das Debuggen hat viel länger gedauert als die R-Version. Erstens, weil ich mit Python nicht so vertraut bin wie mit R, aber auch, weil R viel interaktiver nutzbar ist.)
quelle
Ich versuche, das Gesagte in eine Antwort zu fassen. Angenommen, Sie haben einen großen Vektor mit n = 2000 Einträgen. Wenn Sie einen gleitenden Durchschnitt mit einem Fenster der Länge ℓ = 30 berechnen , können Sie dies als Vektor-Matrix-Multiplikation y = A x des Vektors x mit der Matrix schreibenx n=2000 ℓ=30 y=Ax x
Das hat , die verschoben werden, während Sie durch die Reihen vorrücken, bis die 30 das Ende der Matrix erreichen. Hier hat der gemittelte Vektor y Dimensionen von 1970. Die Matrix hat 1970 Zeilen und 2000 Spalten. Daher ist es nicht umkehrbar.30 30 y 1970 2000
Viele numerische Programme bieten Pseudoinverse an (z. B. Matlab, Numpy in Python usw.).
Hier wäre der Python-Code, um die Signale aus meinem Beispiel zu generieren:
Ich hoffe, das hilft.
quelle