Statistiques de détection de valeurs aberrantes dans MATLAB
Supposons que nous ayons cette matrice :
main = [10000 5 3 1;
5 5677 0 134;
1 1 456 3];
Cette méthode la méthode la plus utilisée en économétrie et statistique des problèmes.X
nos données que nous sommes à la recherche pour les valeurs aberrantes en elle.
X-mean(X)>= n*std(X)
Donc, Si cette Inégalité est vrai, Que l'échantillon est aberrant sinon On va garder l'échantillon.
Maintenant ma question. Je veux trouver les valeurs aberrantes avec ces codes:
meann = mean(main);
stdd = std(main);
out = find(main-repmat(meann,size(main,1),1)>=repmat(2*stdd,size(main,1),1));
Nous sommes à la recherche de valeurs aberrantes dans chaque colonne. Out
doit indiquer l'indice des valeurs aberrantes. Dans l'étape finale, Nous devrions supprimer les valeurs aberrantes dans chaque colonne. Est pas plus simple de la fonction ou de la méthode pour ce faire dans MAtLAB?
Grâce.
out
est vide??Les valeurs aberrantes à l'échelle mondiale pour que la matrice ou par colonne?
J'ai édité ma question.
Je pense que vous devriez expliquer à votre logique, car je crois que votre code n'est pas correctement mettre en œuvre ce que vous êtes après. Vous dites que vous voulez trouver un nombre qui est de 2 écarts-types à l'écart de la moyenne (par colonne)?
Je vous remercie. J'ai ajouté plus d'informations dans ma question.
OriginalL'auteur user2991243 | 2014-08-13
Vous devez vous connecter pour publier un commentaire.
Si vous souhaitez trouver de 2 écarts-types à l'écart de la moyenne par colonne, et je voudrais utiliser
bsxfun
plutôt querepmat
comme ceci:Je voudrais arrêter au
I
comme cela vous permettra de supprimer les valeurs aberrantes. Cependant, vous pouvez appelerfind
il vous aime:Bien que pour moi, c'est plus intuitive pour le faire:
Je pense que votre
repmat
solution est manquant unabs
btwOriginalL'auteur Dan
Un 2*sigma critère est certainement simple, mais la moyenne et l'écart type sont très sensibles aux valeurs aberrantes. Il en résulte que la
out
variable sera donc influencé, et en fait, votre code ne trouverez pas de valeurs aberrantes dans la matrice donnée.Pour détecter les valeurs aberrantes, vous pouvez simplement comparer les valeurs figurant dans votre matrice à l'encontre de la médiane, ou d'adopter des plus raffinés critères. Il y a une belle conférence en expliquant ce à https://www.mne.psu.edu/me345/Lectures/outliers.pdf
X-mean(X)> 2(or 3,...)*std
est la méthode la plus utilisée en économétrie et statistique des problèmes.La conférence propose d'utiliser le
|X-mean| > 1.9x * std
qui est à environ 2.Vous êtes absent et absolue, là, c'est à dire la
|·|
dans Yvon commentaire. C'est très important!Oui. C'est vrai. Je vous remercie pour votre aide.
OriginalL'auteur Jommy
Utiliser une cellule de tableau, si vous souhaitez supprimer certains éléments de différentes colonnes.
ps. votre exemple est trop petit en taille, donc il y a peut-être pas assez d'échantillons pour établir un seuil.
OriginalL'auteur Yvon