[PYTHON] Differenzierung von Zeitreihendaten (diskret)

Im Allgemeinen sind die vom Sensor erhaltenen Daten diskrete Daten. Bei diskreten Daten ist die einfachste Annäherung f'(x) =\frac{f(x + h) - f(x -h)}{2h} Der Fehler ist $ \ omicron (h ^ 2) $.

Diese Berechnung ist mit der Slice-Funktion einfach.

import numpy as np

def diff(x, h):
    res = x[2:] - x[:-2]
    return res/(2*h)

In der folgenden Formel ist der Fehler etwas kleiner und der Fehler ist $ \ omicron (h ^ 4) $. f'(x) = \frac{-f(x +2h) + 8f(x+h)-8f(x-h)+f(x-2h)}{12h}

def diff4(x, h):
    """
1. Differential{-f(x+2h)+8f(x+h)-8f(x-h)+f(x-2h)}/12h
x sind Zeitreihendaten,h ist die Zeit zwischen Daten(second)
    """
    res = -x[4:] + 8*x[3:-1] - 8*x[1:-3] + x[:-4]
    return res/(12*h)

Überprüfen Sie jeden Fehler Dieses Mal haben wir eine 1-Hz-Cos-Welle erzeugt und differenziert. f(x) = cos(2\pi x) Messen Sie diesmal den Fehler des Maximalwerts als den verständlichsten Wert. max(f'(x))=2\pi

#10 Sekunden 1 Hz cos Welle
time = np.linspace(0, 10, num=10000, endpoint=False)
wave = np.cos(2*np.pi*time)

#Fehleranfällige Methode
vel2 = diff(wave, time[1] - time[0])
#So reduzieren Sie Fehler
vel4 = diff4(wave, time[1] - time[0])

#Vergleiche mit dem theoretischen Wert 2π
print(vel2.max()-2*np.pi)
print(vel4.max()-2*np.pi)

Ausgabeergebnis -4.134161924973512e-05 -3.241460433400789e-10

Sie können sehen, dass die letztere Formel weniger Fehler aufweist.

Bei doppelter Differenzierung f''(x) = \frac{-f(x +2h) + 16f(x+h)-30f(x)+16f(x-h)-f(x-2h)}{12h^2} Wird sein.

def diffdiff4(x, h):
    """
Zweimal Differential,x sind Zeitreihendaten,h ist die Zeit zwischen Daten(second)
    {-f(x+2h)+16f(x+h)-30f(x)+16f(x-h)-f(x-2h)}/12h^2
    """
    res = -x[4:] +16*x[3:-1] -30*x[2:-2] +16*x[1:-3] -x[:-4]
    return res/(12*h*h)

Recommended Posts

Differenzierung von Zeitreihendaten (diskret)
Zeitreihenanalyse 3 Vorverarbeitung von Zeitreihendaten
Glättung von Zeitreihen und Wellenformdaten 3 Methoden (Glättung)
Zeigen Sie Details zu Zeitreihendaten mit Remotte an
[Python] Zeichnen Sie Zeitreihendaten
Abnormalitätserkennung von Zeitreihendaten durch LSTM (Keras)
Berechnung der Zeitreihen-Kundenbindung
Python: Zeitreihenanalyse: Vorverarbeitung von Zeitreihendaten
Über Zeitreihendaten und Übertraining
Eine Geschichte über das Clustering von Zeitreihendaten des Austauschs
So extrahieren Sie Funktionen von Zeitreihendaten mit PySpark Basics
Vergleich der Vorhersage von Zeitreihendaten zwischen dem SARIMA-Modell und dem Prophet-Modell
Vorhersage von Zeitreihendaten mit einem neuronalen Netzwerk
Zeitreihenanalyse 4 Konstruktion des SARIMA-Modells
Umgang mit Zeitreihendaten (Implementierung)
OpenFOAM-Zeitreihendaten lesen und Daten einstellen
[Für Anfänger] Skript innerhalb von 10 Zeilen (5. Resample von Zeitreihendaten mit Pandas)
Zeitmessung
Leistungsfähigkeit von Vorhersagemethoden in der Zeitreihendatenanalyse Halboptimierung (SARIMA) [Memo]
Zeitreihenzerlegung
Zeichnen Sie die CSV von Zeitreihendaten mit einem Unixtime-Wert in Python (matplotlib).
[Kaggle] Ich habe versucht, mithilfe von tsfresh das Feature-Quantity-Engineering mehrdimensionaler Zeitreihendaten durchzuführen
Holen Sie sich mit Python Zeitreihendaten von k-db.com
Zusammenfassung der Kaggle-Kernel-Methode [Tabelle Zeitreihendaten]
Python: Zeitreihenanalyse
Merkmalsmenge, die aus Zeitreihendaten extrahiert werden kann
[Neueste Methode] Visualisierung von Zeitreihendaten und Extraktion häufiger Muster mithilfe des Pan-Matrix-Profils
Python-Zeitreihenfrage
RNN_LSTM1 Zeitreihenanalyse
Zeitreihenanalyse 1 Grundlagen
Vorhersage von Zeitreihendaten durch AutoML (automatisches maschinelles Lernen)
Implementierung der Clustering-K-Form-Methode für Zeitreihendaten [Unüberwachtes Lernen mit Python Kapitel 13]
Vorverarbeitung von Präfekturdaten
Messung der Ausführungszeit
Auswahl der Messdaten
TOPIX-Zeitreihen anzeigen
Zeitreihendiagramm / Matplotlib
"Zeitreihenanalyse von Wirtschafts- und Finanzdaten messen" Das Problem am Ende des Kapitels mit Python lösen
So berechnen Sie die Summe oder den Durchschnitt von Zeitreihen-CSV-Daten in einem Augenblick
Was Sie bei der Zeitreihendatenanalyse (einschließlich Reflexion) nicht tun sollten
Formatieren Sie die Zeitachse des Pandas-Zeitreihendiagramms mit matplotlib neu
Bibliothek tsfresh, die Features automatisch aus Zeitreihendaten extrahiert
Erstellen Sie schnell Daten für die Serienkennzeichnung (Partizipationskennzeichnung)
Experiment zur Optimierung der Tensorflow-Daten
Visualisierung von Daten nach Präfektur
Differenzierung der Sortierung und Verallgemeinerung der Sortierung
Fourier-Transformation von Rohdaten
Zeitreihenanalyse Teil 4 VAR
Durchschnittliche Schätzung der begrenzten Daten
Zeitreihenanalyse Teil 1 Autokorrelation
Über die Datenverwaltung von Amboss-App-Server
Wahrscheinlichkeitsvorhersage von unausgeglichenen Daten
[numpy] Erstellen Sie eine sich bewegende Fenstermatrix aus mehrdimensionalen Zeitreihendaten
<Pandas> Umgang mit Zeitreihendaten in der Pivot-Tabelle
Beim Zeichnen von Zeitreihendaten und Abrufen von matplotlib OverflowError
Schreiben Sie den Felderstellungsknoten von SPSS Modeler mit Python neu. Merkmalsextraktion aus Zeitreihensensordaten