Image de l’éditeur | Idéogramme
Apprenons à calculer les moyennes mobiles avec NumPy
Préparation
Assurez-vous que la bibliothèque NumPy est installée dans votre environnement. Si ce n’est pas le cas, vous pouvez l’installer via pip avec le code suivant :
Une fois NumPy installé, nous allons apprendre à calculer les moyennes mobiles.
Calculer les moyennes mobiles avec NumPy
Les moyennes mobiles (MA) sont une technique statistique qui crée une série de points de données moyennés à partir de différentes fenêtres de l’ensemble de données. Elles sont souvent utilisées dans l’analyse de séries chronologiques pour lisser les données et mieux comprendre les tendances à long terme, en éliminant les bruits à court terme.
Les moyennes mobiles sont couramment utilisées en économie et dans le secteur financier pour analyser les tendances actuelles, faire des prévisions et identifier des signaux. La technique MA est considérée comme un indicateur retardé car elle se base sur des données historiques pour fournir des informations sur la situation actuelle.
Utilisons NumPy pour calculer les moyennes mobiles. Commençons par la moyenne mobile simple (SMA). Cette méthode calcule la moyenne des données dans des fenêtres glissantes.
Par exemple, si nous avons dix points de données et que nous souhaitons calculer le SMA avec une fenêtre de cinq, nous pouvons utiliser le code suivant :
import numpy as np
data = np.array([10, 15, 10, 30, 20, 45, 70, 50, 40, 60])
window_size = 5
weights = np.ones(window_size) / window_size
sma = np.convolve(data, weights, mode="valid")
Output>>
[17. 24. 35. 43. 45. 53.]
Comme nous pouvons le voir, nous obtenons la moyenne mobile avec une fenêtre de 5 à partir des données.
Une autre technique est la moyenne mobile cumulative (CMA), qui calcule la moyenne des éléments de données précédents, y compris le point de données actuel, pour chaque position.
data = np.array([10, 15, 10, 30, 20, 45, 70, 50, 40, 60])
cma = np.cumsum(data) / np.arange(1, len(data) + 1)
cma
Output>>
array([10, 12.5, 11.66666667, 16.25, 17.,
21.66666667, 28.57142857, 31.2, 32.22222222, 35.])
Ensuite, nous avons les moyennes mobiles exponentielles (EMA), qui incluent un poids dans leur calcul. L’EMA accorde plus de poids aux points de données récents, ce qui la rend plus sensible aux changements récents par rapport à la SMA. Cette sensibilité est représentée par un facteur alpha.
Essayons d’implémenter l’EMA avec NumPy en Python.
data = np.array([10, 15, 10, 30, 20, 45, 70, 50, 40, 60])
def exponential_moving_average(data, alpha):
ema = np.zeros_like(data)
ema[0] = data[0]
for i in range(1, len(data)):
ema[i] = alpha * data[i] + (1 - alpha) * ema[i-1]
return ema
ema = exponential_moving_average(data, 0.5)
Output>>
array([10, 12, 11, 20, 20, 32, 51, 50, 45, 52])
Voilà pour l’implémentation de base des moyennes mobiles avec NumPy. Maîtrisez ces techniques pour améliorer votre analyse de séries chronologiques.
Ressources supplémentaires
Cornellius Yudha Wijaya est directeur adjoint de la science des données et rédacteur de données. Tout en travaillant à temps plein chez Allianz Indonesia, il aime partager des conseils sur Python et les données via les réseaux sociaux et la rédaction. Cornellius écrit sur une variété de sujets liés à l’IA et à l’apprentissage automatique.
Nos 3 meilleures recommandations de partenaires
1. Meilleur VPN pour les ingénieurs – 3 mois gratuits – Restez en sécurité en ligne avec un essai gratuit
2. Meilleur outil de gestion de projet pour les équipes techniques – Augmentez l’efficacité de votre équipe dès aujourd’hui
3. Meilleur outil de gestion de réseau – Idéal pour les moyennes et grandes entreprises