-
lissage de courbe
Bonjour, je ne sais pas si le titre de mon sujet est bien choisi mais je n'arrive pas à donner le nom exact de ce que je veux faire...
J'ai une suite de points positifs qui correspond à une série de mesures (que l'on peut voir comme formant une courbe), certains sont des outliers (leur valeur ne suit pas la courbe) et certains sont nuls.
Je voudrais réapproximer la valeur des points outliers et nuls afin que tous mes points suivent à peu près une belle courbe.
Quels algos, si possible simples, existent pour ce genre de chose ?
(je ne veux pas calculer la courbe, juste recalculer la valeur des points erronés)
-
Bonjour,
Si tu veux quelque chose de vraiment très simple, tu peux poser que chaque mesure devient la valeur moyenne (ou encore mieux la valeur médiane) des mesures autour d'elles. Par exemple, sur la suite :
1 , 2, 12 , 4 , 5 , 0, 7 , 8
Si tu prends la valeur médiane entre la mesure courante, la précédente et la suivante, tu obtiens (les extrémités ne sont pas traitées)
1 , 2 , 4 , 5 , 4 , 5 , 7 , 8
ou avec la moyenne :
1 , 5 , 6 , 7 , 3 , 4 , 5 , 8
Typiquement, la moyenne lisse ta courbe et la médiane enlève les valeurs extrêmes isolées.
-
C'est bien pour le milieu de la série de nombres, mais mon problème est que les valeurs erronées sont souvent celles des extremités (1 ou 2 premières valeurs par ex). Je ne sais pas trop comment les traiter.
-
Tu peux toujours utiliser une valeur médiane/moyenne sur les premiers termes (et les derniers) si tu as vraiment des problèmes aux extrémités.
Autre solution :
avec par exemple les 3 premieres points (i0,j0), (i1,j1) et (i2,j2), tu corriges j0 en posant j0 = j1 - (i1 - i0)(j2-j1)/(i2-i1).
Avec cette valeur de j0, le point (i0,j0) est dans le prolongement de la droite ((i1,j1),(i2,j2)).
Cette solution se base sur la dérivée première de la courbe au point (i1,j1). Tu peux étendre ce principe aux dérivées supérieures en utilisant des formules d'interpolation (par des polynomes), mais après ce n'est plus une solution "simple".