[PYTHON] Différenciation des données de séries chronologiques (discrètes)

En général, les données obtenues à partir du capteur sont des données discrètes. Dans le cas de données discrètes, l'approximation la plus simple est f'(x) =\frac{f(x + h) - f(x -h)}{2h} L'erreur est $ \ omicron (h ^ 2) $.

Ce calcul est facile avec la fonction de tranche.

import numpy as np

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

Dans la formule suivante, l'erreur est un peu plus petite et l'erreur est $ \ omicron (h ^ 4) $. f'(x) = \frac{-f(x +2h) + 8f(x+h)-8f(x-h)+f(x-2h)}{12h}

def diff4(x, h):
    """
1er différentiel{-f(x+2h)+8f(x+h)-8f(x-h)+f(x-2h)}/12h
x est des données de séries chronologiques,h est le temps entre les données(second)
    """
    res = -x[4:] + 8*x[3:-1] - 8*x[1:-3] + x[:-4]
    return res/(12*h)

Vérifiez chaque erreur Cette fois, nous avons créé une onde cos de 1 Hz et l'avons différenciée. f(x) = cos(2\pi x) Mesurez l'erreur de la valeur maximale comme valeur la plus compréhensible cette fois. max(f'(x))=2\pi

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

#Méthode sujette aux erreurs
vel2 = diff(wave, time[1] - time[0])
#Comment réduire les erreurs
vel4 = diff4(wave, time[1] - time[0])

#Comparer avec la valeur théorique 2π
print(vel2.max()-2*np.pi)
print(vel4.max()-2*np.pi)

Résultat de sortie -4.134161924973512e-05 -3.241460433400789e-10

Vous pouvez voir que cette dernière formule a moins d'erreur.

En cas de double différenciation f''(x) = \frac{-f(x +2h) + 16f(x+h)-30f(x)+16f(x-h)-f(x-2h)}{12h^2} Sera.

def diffdiff4(x, h):
    """
Deux fois différentiel,x est des données de séries chronologiques,h est le temps entre les données(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

Différenciation des données de séries chronologiques (discrètes)
Analyse des séries chronologiques 3 Prétraitement des données des séries chronologiques
Lissage des séries temporelles et des données de forme d'onde 3 méthodes (lissage)
Voir les détails des données de séries chronologiques dans Remotte
[Python] Tracer des données de séries chronologiques
Détection d'anomalies des données de séries chronologiques par LSTM (Keras)
Calcul de la fidélité des clients dans les séries chronologiques
Python: analyse des séries chronologiques: prétraitement des données des séries chronologiques
À propos des données de séries chronologiques et du surentraînement
Une histoire de regroupement de données de séries chronologiques d'échange
Comment extraire des fonctionnalités de données de séries chronologiques avec les bases de PySpark
Comparaison de la prédiction des données de séries chronologiques entre le modèle SARIMA et le modèle Prophet
Prédire les données de séries chronologiques avec un réseau neuronal
Analyse des séries chronologiques 4 Construction du modèle SARIMA
Comment gérer les données de séries chronologiques (mise en œuvre)
Lecture des données de séries chronologiques OpenFOAM et des ensembles de données
[Pour les débutants] Script dans les 10 lignes (5. Rééchantillonnage des données de séries chronologiques à l'aide de pandas)
mesure du temps
Puissance des méthodes de prédiction dans l'analyse de données chronologiques Semi-optimisation (SARIMA) [Memo]
Décomposition des séries temporelles
Tracer CSV de données de séries temporelles avec une valeur unixtime en Python (matplotlib)
[Kaggle] J'ai essayé l'ingénierie de quantité de caractéristiques de données de séries chronologiques multidimensionnelles à l'aide de tsfresh
Obtenez des données de séries chronologiques de k-db.com avec Python
Résumé de la méthode Kaggle's Kernel [Table time series data]
Python: analyse des séries chronologiques
Quantité d'entités pouvant être extraite des données de séries chronologiques
[Dernière méthode] Visualisation des données de séries chronologiques et extraction de modèles fréquents à l'aide du profil Pan-Matrix
Question sur la série chronologique Python
Analyse des séries chronologiques RNN_LSTM1
Analyse des séries chronologiques 1 Principes de base
Prédiction de données chronologiques par AutoML (apprentissage automatique automatique)
Implémentation de la méthode de clustering k-shape pour les données de séries chronologiques [Apprentissage non supervisé avec python Chapitre 13]
Pré-traitement des données préfectorales
Mesure du temps d'exécution
Sélection des données de mesure
Afficher les séries chronologiques TOPIX
Diagramme de séries chronologiques / Matplotlib
"Analyse des séries chronologiques de mesure des données économiques et financières" Résolution du problème de fin de chapitre avec Python
Comment calculer la somme ou la moyenne des données csv de séries chronologiques en un instant
Ce que vous ne devriez pas faire dans le processus d'analyse des données de séries chronologiques (y compris la réflexion)
Reformatez l'axe des temps du graphique de la série chronologique des pandas avec matplotlib
Bibliothèque tsfresh qui extrait automatiquement les caractéristiques des données de séries chronologiques
Créez rapidement des données pour l'étiquetage des séries (balisage de participation)
Expérience de réglage des données Tensorflow
Visualisation des données par préfecture
Différenciation du tri et généralisation du tri
Transformée de Fourier des données brutes
Analyse des séries chronologiques partie 4 VAR
Estimation moyenne des données plafonnées
Analyse de séries chronologiques Partie 1 Autocorrélation
À propos de la gestion des données d'Anvil-App-Server
Prédiction de probabilité de données déséquilibrées
[numpy] Créer une matrice de fenêtre mobile à partir de données de séries chronologiques multidimensionnelles
<Pandas> Comment gérer les données de séries chronologiques dans le tableau croisé dynamique
Lors du traçage des données de séries chronologiques et de l'obtention d'une erreur de débordement matplotlib
Réécrivez le nœud de création de champ de SPSS Modeler avec Python. Extraction de caractéristiques à partir de données de capteurs de séries temporelles