Question

Nous avons une application où les utilisateurs entrent des prix toute la journée. Ces prix sont enregistrés dans un tableau avec un horodatage et ensuite utilisés pour produire des graphiques de l'évolution du prix ... De temps en temps, l'utilisateur entre un prix erroné ruine la carte (vous obtenez de grandes pointes). Nous avons même mis en place un dialogue de confirmation supplémentaire si le prix fluctue de plus de 20%, mais cela ne les empêche pas de saisir de mauvaises valeurs ...

Quelle méthode statistique puis-je utiliser pour analyser les valeurs avant de les cartographier pour exclure les valeurs très différentes des autres?

MODIFIER: pour ajouter de la viande à l'os. Disons que les prix sont des cours boursiers (ils ne le sont pas mais ils se comportent de la même manière). Vous pourriez voir les prix augmenter ou baisser considérablement pendant la journée. En moyenne, nous enregistrons environ 150 prix par jour et parfois un ou deux ont tort. D'autres fois, ils sont tous bons ...

Était-ce utile?

La solution

Calculez et suivez le écart type pendant un certain temps. Une fois que vous avez un arriéré décent, vous pouvez ignorer les valeurs aberrantes en déterminant le nombre d'écarts-types les séparant de la moyenne. Mieux encore, si vous en avez le temps, vous pouvez utiliser l'info pour effectuer une classification bayésienne naïve .

Autres conseils

C’est une excellente question, mais elle peut donner lieu à de nombreuses discussions car les réponses peuvent être très variées. Cela dépend de

  • Quels efforts êtes-vous prêt à faire?

  • Certaines réponses pourraient-elles réellement différer de +/- 20% ou du test que vous inventez? alors, y aura-t-il toujours besoin d'une intervention humaine?

  • et pour inventer un test pertinent, il me faudrait en savoir plus sur le sujet.

Cela étant dit, les solutions suivantes sont possibles:

  • Un test simple par rapport à la valeur précédente (ou à la moyenne / mode des 10 ou 20 valeurs précédentes) serait facile à implémenter

  • Le niveau de complexité suivant impliquerait une mesure statistique de toutes les valeurs (ou des valeurs x précédentes ou des valeurs des 3 derniers mois), une distribution normale ou gaussienne vous permettant de donner à chaque valeur un degré de certitude. quant à ce que ce soit une erreur vs précis. Ce degré de certitude serait généralement exprimé en pourcentage.

Voir http://en.wikipedia.org/wiki/Normal_distribution et http://en.wikipedia.org/wiki/Gaussian_function Des liens adéquats vous aident dans ces pages. lors de la programmation, en fonction du langage que vous utilisez, des fonctions et / ou des plugins sont probablement disponibles pour vous aider dans ce domaine

  • Une méthode plus avancée pourrait consister à utiliser une sorte d'algorithme d'apprentissage pouvant prendre en compte d'autres paramètres (au-dessus des x dernières valeurs). Un algorithme d'apprentissage pourrait par exemple prendre en compte le type de produit ou le fabricant. Ou même surveiller l'heure du jour ou l'utilisateur qui a entré le chiffre. Cette option semble exagérée pour ce dont vous avez besoin, mais il faudrait beaucoup de travail pour la coder et pour former l’algorithme d’apprentissage.

Je pense que la deuxième option est la bonne pour vous. Utiliser l’écart-type (beaucoup de langages contiennent une fonction pour cela) peut être une alternative plus simple, c’est simplement une mesure de la distance par laquelle la valeur a dévié de la moyenne de x valeurs précédentes, je mettrais l’option de déviation standard quelque part entre option 1 et 2

Vous pouvez mesurer l’écart-type de votre population existante et exclure celles qui sont supérieures à 1 ou 2 écarts-types de la moyenne?

Cela dépendra de l'apparence de vos données pour donner une réponse plus précise ...

Ou tracez une moyenne mobile des prix au lieu des prix réels.

Citant ici :

Les statisticiens ont mis au point plusieurs méthodes pour détecter les valeurs aberrantes. Toutes les méthodes quantifient d’abord la distance entre la valeur aberrante et les autres valeurs. Cela peut être la différence entre la valeur aberrante et la moyenne de tous les points, la différence entre la valeur aberrante et la moyenne des valeurs restantes, ou la différence entre la valeur aberrante et la valeur la plus proche. Normalisez ensuite cette valeur en divisant par une mesure de dispersion, telle que le SD de toutes les valeurs, le SD des valeurs restantes ou la plage des données. Pour finir, calculez une valeur P répondant à cette question: Si toutes les valeurs ont été réellement échantillonnées dans une population gaussienne, quelle est la probabilité d’obtenir au hasard une valeur aberrante aussi éloignée des autres valeurs? Si la valeur P est petite, vous concluez que l'écart entre la valeur aberrante et les autres valeurs est statistiquement significatif.

Google est votre ami, vous savez. ;)

Pour votre question spécifique de traçage et votre scénario spécifique de 1 à 2 erreurs en moyenne par jour sur 150, la chose la plus simple pourrait être de tracer des moyennes ajustées , ou la plage des 95% de valeurs moyennes, ou quelque chose comme ça. Cela dépend vraiment de quelle valeur vous voulez sortir de l'intrigue.

Si vous êtes vraiment préoccupé par le vrai et le vrai des prix à la journée, vous devez alors traiter les points aberrants comme des points aberrants et les exclure correctement, en utilisant probablement l'un des tests aberrants proposés précédemment (le point de données est x% plus que le point suivant, ou les n derniers points, ou plus de 5 écarts types par rapport à la moyenne journalière). Une autre approche consiste à visualiser ce qui se passe après la valeur aberrante. S'il s'agit d'une valeur aberrante, alors il y aura une forte reprise suivie d'une forte baisse.

Si toutefois vous vous souciez de la tendance générale, le tracé des moyennes moyennes journalées, des médianes, des 5% et 95% représentera bien l’histoire.

Choisissez vos méthodes d'affichage et le niveau de détection des valeurs aberrantes que vous devez effectuer en fonction de la question d'analyse . Si vous vous souciez des médianes ou des centiles, ils ne sont probablement pas pertinents.

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