Quels sont les algorithmes efficaces et précis pour exclure les valeurs aberrantes d'un ensemble de données?

StackOverflow https://stackoverflow.com/questions/2069793

  •  20-09-2019
  •  | 
  •  

Question

J'ai mis de 200 lignes de données (ce qui implique un petit ensemble de données). Je veux mener une analyse statistique, mais avant que je veux exclure des valeurs aberrantes.

Quels sont les algos potentiels dans le but? La précision est un sujet de préoccupation.

Je suis très nouveau Stats, donc besoin d'aide pour algos très basiques.

Était-ce utile?

La solution

Commencez par tracer les levier des valeurs aberrantes et ensuite pour un bon ol «traumatisme interoculaire (aka regarder au nuage de points).

Beaucoup de progiciels statistiques ont des diagnostics de valeurs aberrantes / résiduelles, mais je préfère D. Cook Vous pouvez le calculer manuellement si vous souhaitez en utilisant

Autres conseils

Dans l'ensemble, la chose qui fait une question comme ce disque est qu'il n'y a pas de définition rigoureuse d'une valeur aberrante. Je recommande en fait contre l'utilisation d'un certain nombre d'écarts-types comme seuil pour les raisons suivantes:

  1. Quelques valeurs aberrantes peut avoir un impact énorme sur votre estimation de l'écart-type, l'écart type est une statistique robuste.
  2. L'interprétation de l'écart type dépend énormément de la distribution de vos données. Si vos données sont normalement distribuées puis 3 écarts-types est beaucoup, mais si elle est, par exemple, distribution log-normale, puis 3 écarts-types n'est pas beaucoup.

Il y a quelques bonnes façons de procéder:

  1. Gardez toutes les données, et il suffit d'utiliser des statistiques robustes (médiane au lieu de la moyenne, test de Wilcoxon au lieu de T-test, etc.). Probablement bon si votre ensemble de données est grande.

  2. Coupez ou Winsorize vos données. des moyens de rognage de retirer le haut et le bas x%. Winsorizing des moyens de réglage de la partie supérieure et inférieure x% de la xième et la valeur percentile de 1-xième respectivement.

  3. Si vous avez un petit jeu de données, vous pouvez simplement tracer vos données et examiner manuellement des valeurs non plausibles.

  4. Si vos données semble raisonnablement proche de normalement distribué (pas de queue lourde et à peu près symétrique), puis utilisez la balise

En fonction de vos données et sa signification, vous voudrez peut-être regarder dans RANSAC (aléatoire consensus de l'échantillon). Ceci est largement utilisé dans la vision par ordinateur, et donne généralement d'excellents résultats lorsque vous essayez d'ajuster les données avec beaucoup de valeurs aberrantes à un modèle.

Et il est très simple à conceptualiser et expliquer. D'autre part, il est non déterministe, ce qui peut causer des problèmes en fonction de l'application.

Calculer l'écart type sur le plateau, et exclure tout l'extérieur de la première, deuxième ou troisième écart-type.

Voici comment j'aller à ce sujet dans SQL Server

La requête ci-dessous obtenir le poids moyen d'une table d'échelle fictive tenant une seule pesée pour chaque personne tout en ne permettant pas ceux qui sont trop gras ou maigre pour se débarrasser de la moyenne plus réaliste:

  select w.Gender, Avg(w.Weight) as AvgWeight
    from ScaleData w
    join ( select d.Gender, Avg(d.Weight) as AvgWeight, 
                  2*STDDEVP(d.Weight) StdDeviation
             from ScaleData d
            group by d.Gender
         ) d
      on w.Gender = d.Gender
     and w.Weight between d.AvgWeight-d.StdDeviation 
                      and d.AvgWeight+d.StdDeviation
   group by w.Gender  

Il peut y avoir une meilleure façon de s'y prendre, mais il fonctionne et fonctionne bien. Si vous avez rencontré une autre solution plus efficace, j'aimerais entendre parler.

NOTE: l'enlève au-dessus du 5% des valeurs aberrantes haut et en bas de l'image à des fins de la moyenne. Vous pouvez régler le nombre de valeurs aberrantes supprimées en ajustant la 2 * 2 * dans le STDDEVP selon: http: / /en.wikipedia.org/wiki/Standard_deviation

Si vous voulez analyser juste, disons que vous voulez calculer la corrélation avec une autre variable, son ok pour exclure les valeurs aberrantes. Mais si vous voulez modéliser / prédire, il est toujours préférable de les exclure d'emblée.

Essayez de le traiter avec des méthodes telles que le plafonnement ou si vous pensez que les valeurs aberrantes contiennent des informations / modèle, puis le remplacer par manque, et le modèle / prédire. Je l'ai écrit quelques exemples de la façon dont vous pouvez aller sur ce en utilisant R .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top