Bonjour,
Je cherche à détecter des outliers dans un diagramme Température-Salinité qui contient plusieurs profils verticaux, ce pour différentes couches de profondeur.
J'ai une matrice qui contient autant de ligne que de données, avec en colonnes profondeur, température, salinité, densité,... et qui s'appelle tout.
La méthode la plus appropriées pour détecter des outliers bivariés semble être mahal, mais je n'arrive pas à trouver les outliers à partir de la mahalabonis distance.
Pour le moment mon code ressemble à ça:
Le problème étant que selon mes couches de profondeur je n'ai pas les mêmes valeurs de d1, et que je ne comprends pas pourquoi je peux avoir entre 16 et 20 ou alors des valeurs en 10^4... et donc je ne sais pas comment ne colorer en rouge que les 5% de données les pus éloignées...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 d = [0 25 50 75 100]; % profondeurs for k = 1:length(d)-1 ind = []; ind = find(floor(tout(:,1)) >= d(k) & ceil(tout(:,1)) < d(k+1)); % trouver la couche d1 = mahal(tout(ind,3),tout(ind,2)); % calcul de la fameuse distance ind2 = find(d1 > ??) % c'est là le problème figure plot(tout(ind,3),tout(ind,2),'k.') % tracé de mon diagramme TS hold on plot(tout(ind(ind2),3),tout(ind(ind2),2),'r.') % tracé des outliers end
Si quelqu'un maitrise mahal, je suis preneuse (je pense que je n'ai pas tout compris de l'aide dessus) !!
Merci d'avance
Kokiett
Partager