Bonjour à tous,
Dans le cadre d'une mission que l'on ma confiée, je dois, entre autres, m'occuper de nettoyer des séries de données annuelles de 4 capteurs de température de toutes leurs valeurs aberrantes (bugs des capteurs, températures trop élevées, etc...).
Pour chaque station météo, j'ai donc 4 capteurs placés au même endroit mais à des hauteurs différentes. Mon jeu de données se présente donc de la manière suivante:
J'ai une mesure de température toutes les 15mn, tous les jours sur une année entière (soit environ 35000 mesures par capteur et par an).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 capt1 capt2 capt3 capt4 date_time -0.25 -2.43 -3.25 -2.37 01/01/2008 00:00 -0.18 -2.37 -3.18 -2.25 01/01/2008 00:15 -0.25 -2.5 -3.37 -2.56 01/01/2008 00:30 -0.25 -2.37 -3.31 -2.37 01/01/2008 00:45 -0.25 -2.56 -3.37 -2.68 01/01/2008 01:00 -0.25 -2.56 -3.43 -2.56 01/01/2008 01:15 -0.25 -2.56 -3.43 -2.37 01/01/2008 01:30 -0.25 -2.62 -3.56 -2.81 01/01/2008 01:45 -0.25 -2.68 -3.5 -2.75 01/01/2008 02:00
Mon soucis actuel est donc de trouver une fonction robuste qui puisse scanner ces 4 colonnes de données, y détecter les valeurs aberrantes et les remplacer par NA.
J'ai déjà essayé avec l'écart type ("sd"), mais cela ne fonctionne pas assez étant donné l'importance du jeu de données.
J'ai également essayé en lui demandant de remplacer par NA les valeurs supérieures et inférieures à un certain seuil (par exemple +40 et -40°C). Cela fonctionne mais ça ne permet pas de détecter et de supprimer les petits pics aberrants comme dans l'exemple ci-dessous:
On voit pour le capt4 une augmentation brutale de 10°C en 15mn (de 6.18 à 15.93°C) de la température, ce qui est très probablement faux, et que cette erreur persiste ensuite plusieurs fois (sauf pour le 7.68°C qui doit être juste).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 capt1 capt2 capt3 capt4 date_time 2.43 4.93 6.18 6.93 09/01/2008 15:30 2.43 4.81 6.18 6.93 09/01/2008 15:45 6.93 4.68 6.18 6.93 09/01/2008 16:00 2.93 4.93 7.93 6.43 09/01/2008 16:15 2.93 4.43 5.81 6.18 09/01/2008 16:30 6.93 4.43 5.68 15.93 09/01/2008 16:45 6.93 4.31 7.93 15.93 09/01/2008 17:00 7.93 4.43 15.93 15.93 09/01/2008 17:15 7.93 4.43 5.43 15.68 09/01/2008 17:30 7.93 7.93 5.06 7.68 09/01/2008 17:45 7.93 7.93 5.93 15.93 09/01/2008 18:00 7.93 7.93 5.93 15.68 09/01/2008 18:15
J'aimerais donc arriver à pouvoir supprimer ces valeurs fausses (en l'occurence dans cet exemple tous les 15.93°C faux et encore d'autres erreurs du même type) dans ma série de données.
Existe-il une méthode statistique sous R qui puisse détecter ces valeurs et les remplacer par NA?
En cherchant un peu, je suis tombé sur la fonction cov.mcd de la librairie "MASS" mais je ne sais pas ce qu'elle vaut et si elle peut m'aider.
Merci beaucoup d'avance pour vos idées et votre aide!
Partager