Transformée de Fourier appliquée à la prédiction de séries temporelles
June
5th,
2016
Dans cet article nous présenterons un algorithme utilisant la transformée de Fourier afin d’extrapoler un signal/fonction. L’objectif est d’approximer notre fonction par une somme de fonctions sinus et cosinus.
La seule librairie que nous utiliserons est ffts.js. Elle fournit une implémentation de la transformation de Fourier rapide (Fast Fourier Transform) en Javascript.
Implémentation de l'algorithme
La première étape de l’algorithme consiste à retirer la tendance de nos données. Nous considérerons une tendance linéaire que nous estimons en effectuant une régression linéaire.
Ensuite nous calculons la transformation de Fourier discrète à l’aide de la librairie fft.js.
Nous calculons la fréquence d’échantillonage et trions les indices des fréquences selon leur valeur absolue.
Une fois ce travail préliminaire effectué, nous pouvons passer à la phase de prédiction à proprement parler. Pour cela nous devons introduire deux nouvelles variables :
horizon, qui correspond à l’horizon de la prédiction;
nb_harmonique, qui correspond grossièrement au nombre de fonctions sinus/cosinus que nous allons utiliser pour extrapoler notre série. Attention à ne pas choisir une valeur trop élevée, ce qui reviendrait à faire de l’overfitting.
Représentation graphique
En appliquant notre algorithme aux données précédentes nous obtenons le résultat suivant :