[Algo] Séparer les mesures erronées et les tricheurs...

Séparer les mesures erronées et les tricheurs... [Algo] - Algo - Programmation

Marsh Posté le 15-10-2003 à 19:25:53    

Hello !
 
J'ai un souci algorithmique pour mon programme, et je trouve pas de solution, étant une bite poilue hydrocéphale en statistique.
 
Je prends une mesure toutes les X secondes pendant 30 minutes. Pas plus de 10 mesures durant tout l'intervalle.  
 
Le taux d'erreur est généralement de 1/2%, avec des pointes a 10% de temps en temps.
 
Mon problème est : Comment départager ces lectures des erreurs de mesure.
 
Je pensais faire une moyenne toute bête. mais je perds énormément en précision.  
 
Je peux toujours essayer de faire une moyenne, calculer l'écart type, virer les plus loins, recalculer la moyenne, recalculer l'écart type... ca me semble assez lourd.
 
De plus, mes utilisateurs peuvent faire en sorte qu'une valeur plus basse soit présente pendant le test, en essayant de se "faire passer" comme ayant une plus grosse valeur...
 
Vous feriez quoi a ma place ?
 
Mon but :  
-Détecter les tricheurs et prendre en compte la valeur modifiée.
-Supprimer les erreurs de 10%
 
J'avoue, je râme un peu :/

Reply

Marsh Posté le 15-10-2003 à 19:25:53   

Reply

Marsh Posté le 15-10-2003 à 19:28:17    

la méthode statistique que tu propose me parait pourtant la bonne, ça s'appelle virer les valeurs aberrantes

Reply

Marsh Posté le 15-10-2003 à 19:29:01    

En plus, mes utilisateurs peuvent faire en sorte que la valeur qu'ils ont soie amoindrie de 3/5% seulement... c'est énorme déjà :/

Reply

Marsh Posté le 15-10-2003 à 19:29:47    

merci taz mais j'avoue hésiter...
 
car une solution statistique venant de moi est ultra douteuse par nature :lol:

Reply

Marsh Posté le 15-10-2003 à 19:41:32    

et c'est quoi tes valeurs ? si ça se trouve tu es capable a priori de détecter les erreurs ... un exemple numérique ?

Reply

Marsh Posté le 15-10-2003 à 19:48:39    

Taz a écrit :

et c'est quoi tes valeurs ? si ça se trouve tu es capable a priori de détecter les erreurs ... un exemple numérique ?


C'est des fréquences.
 
Sur mon PC, j'ai par exemple :
 
2985 2984 2912 2982 2986 sur 5 mesures.
 
Mais des gens peuvent tres bien essayer de gruger le truc. Par exemple sur 8 mesures :
 
2985 2800 2802 2804 2714 2799 2984 2981
 
Tu passes ta fréquence a la volée de 2985 à 2800 par exemple... facile avec clockgen.
 
C'est en partant de ces mesures que je suis venu a l'algo cité au dessus ;)
 
Les mesures, il y en aura 10, prises en temps réel a des moments aléatoires, mais avec une répartition correcte ( une mesure toutes les 5 minutes par exemple mais pas fixes a 5 minutes, entre 4 et 6 minutes en fait ( par exemple, ou 3 et 7 ), mais tjs le meme nombre de mesures ).

Reply

Marsh Posté le 15-10-2003 à 20:37:58    

de toutes façon moins tu as d'échantillons, plus tu dois leur faire confiance à chaque.
D'autre part si la moyenne est une valeur aberrante (style taux de natalité de 2.2 enfants par femme), tu peux prendre la médianne qui est la valeur cohérente la plus proche de la moyenne. Ou le mode qui est la valeur qui apparaît le plus souvent dans la série.

Reply

Marsh Posté le 15-10-2003 à 20:41:55    

nraynaud a écrit :

de toutes façon moins tu as d'échantillons, plus tu dois leur faire confiance à chaque.
D'autre part si la moyenne est une valeur aberrante (style taux de natalité de 2.2 enfants par femme), tu peux prendre la médianne qui est la valeur cohérente la plus proche de la moyenne. Ou le mode qui est la valeur qui apparaît le plus souvent dans la série.


Pour la médianne, si j'ai bien compris, je vois pas comment coder ca...

Reply

Marsh Posté le 15-10-2003 à 20:43:58    

ben tu tries tes n mesures, la médiane étant la n/2 ième mesure

Reply

Marsh Posté le 15-10-2003 à 22:38:02    

Oh OK. Bah pourquoi pas. La j'ai codé l'algo précité, ca a l'air de bien marcher quand même ^^ 2% d'erreur sur une fréquence, ca fait quand meme 20Mhz sur 3Giga, c'est honnête comme précision je trouve.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed