Bonsoir,
Quand on trace un jeu de données (Xn,Yn), on cherche souvent les valeurs Y'n pour d'autres abscisses en faisant une hypothèse éclairée sur la tête de la courbe support.
Sur internet, on va ainsi trouver très facilement 2 choses :
- les interpolations classiques pour un espacement quelconque des Xn (en escalier, linéaire par morceaux, polynomiale, spline). A l'ouest pour les fonctions périodiques, discutable pour les pseudo-signaux, gros souci de convergence en général pour l'interpolation polynomiale de plus de 20 points et pour les splines d'ordre>2.
- le resampling où l'on passe d'une équirépartition à une autre. Technique issue du traitement du signal et de l'information, qui adresse correctement les problématiques d'aliasing/crénelage. Points faibles : la contrainte d'équirépartition, et le risque de décalage en x entre signal resamplé et signal d'origine
Pour le codage en python, dans le 1er cas, ça semble facile : numpy pour l'interpolation linéaire, scipy pour le reste.
https://fr.wikibooks.org/wiki/Python...ion_et_lissage
Dans le 2e cas, je n'ai trouvé que panda.resample(). Déjà, panda juste pour faire un peu de calcul, c'est lourdingue. De plus, la méthode resample() est à l'ouest : en upsampling par ça insère des NaN qu'il faut ensuite interpoler. La méthode d'interpolation 'time', on ne sait pas ce qu'elle fait. Les autres méthodes d'interpolation sont en fait des méthodes...d'interpolation classique, donc pas licite en théorie du signal! Soit on introduit des erreurs de crénelage, fantome... Soit on invente carrément de l'information, là.
En théorie du signal (cas à moyenne nulle pour simplifier), un upsampling par N insère N zéros entre chaque sample d'origine, puis il faut filtrer à la fréquence normalisée 1/N pour virer les spectres image. Pour panda en downsampling par P, si j'ai bien compris, panda se borne à regrouper les données et démerden sie sich pour traiter chaque paquet de P données. Généralement les gens font une simple moyenne. Ca revient à calculer une moyenne mobile puis garder 1 sample sur P, celui du milieu.
En théorie du signal, il faut filtrer passe-bas à fréquence 1/P puis décimer. Au passage, la moyenne sur P samples est très très loin d'un filtre passe-bas parfait à 1/P, et prendre la moyenne d'un paquet de 3 introduit irrémédiablement un décalage du signal en x.
Du coup, je n'imagine même pas le gloubiboulga à base de panda pour le cas général "facile" du resampling par N/P, encore moins celui du resampling par un facteur quelconque!
Quelqu'un a forcément déjà codé le resampling tout nickel dans les librairies python. On trouve ça où?
Par ailleurs, j'ai compris à la lecture de quelques articles qu'il existe un théorème général de reconstruction de série temporelle Xn,Yn qui fait les choses proprement (conforme théorie du signal, comble les trous éventuels, pas de contrainte d'équirépartition, pas de déphasage introduit, resampling propre au passage). Apparemment, c'est hyper bateau, tellement bateau que je n'ai jamais trouvé de quoi il s'agit précisemment. Et donc, ça doit forcément exister prêt à l'emploi dans une librairie python. Mais où???
Chuss,
Y.
-----