IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Statistiques, Data Mining et Data Science Discussion :

Technique de moyennage de données : laquelle utiliser ?


Sujet :

Statistiques, Data Mining et Data Science

  1. #1
    Membre du Club
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Juin 2014
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable de compte

    Informations forums :
    Inscription : Juin 2014
    Messages : 215
    Points : 60
    Points
    60
    Par défaut Technique de moyennage de données : laquelle utiliser ?
    Bonjour (question de néophyte)

    Lors d'acquisition de valeur physique par un ADC pour un capteur, il est souvent procédé à plusieurs mesures successives qui sont ensuite moyennées.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    long Average(byte times)
    {
        long sum = 0;
        for (int i = 0; i < times; i++)
        {
            sum += read_ADC_value();
        }
        return sum / times;
    }
    J'ai rencontré aussi une autre solution, malheureusement je ne retrouve pas la source, qui est de lire un certain nombre de fois l'ADC, classer par ordre croissant les valeurs lues, puis ensuite prendre la valeur du milieu ou centrale.

    J'ai l'impression que cette seconde technique est plus efficace pour exclure les valeurs extrême comme celles très perturbées par des parasites.
    Peut-être aussi que cette technique est plus rapide que de sommer puis diviser.

    Je dois préciser que la valeur récupérée n'est pas sensée bouger dans le laps de temps de la mesure. (par exemple 10 mesures successives assez rapidement sans que la valeur physique ne soit changée)

    Qu'en pensez vous ? Auriez vous d'autres observation positive ou négative par rapport à ces approches ?

  2. #2
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 618
    Points : 188 591
    Points
    188 591
    Par défaut


    Citation Envoyé par hary66 Voir le message
    J'ai rencontré aussi une autre solution, malheureusement je ne retrouve pas la source, qui est de lire un certain nombre de fois l'ADC, classer par ordre croissant les valeurs lues, puis ensuite prendre la valeur du milieu ou centrale.
    Dans ce cas, tu calcules la médiane plutôt que la moyenne arithmétique. A priori, elle est plus complexe que le calcul de moyenne, vu que l'insertion dans un tableau déjà trié se fait en O(log n) pour trouver l'endroit et O(n) pour l'insertion proprement dite. Par contre, effectivement, c'est une manière d'évaluer la moyenne beaucoup plus résistante aux valeurs extrêmes.

    Si tu as un capteur qui peut être extrêmement bruité, la médiane se justifie pleinement. Sinon, la moyenne pourrait suffire.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  3. #3
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 053
    Points : 9 392
    Points
    9 392
    Par défaut
    Tu parles de 10 mesures successives. C'est relativement peu.
    Du coup, tu peux avoir les bénéfices de la médiane (peu sensible aux erreurs de mesure) et de la moyenne (peu coûteux en temps de calcul).

    Tu calcules la somme des 10 valeurs, la valeur la plus petite et la valeur la plus grande.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    long Average(byte times)
    {
        long sum = 0;
        long mini = 9999999999 ;
        long maxi=0;
        long val ;
        for (int i = 0; i < times; i++)
        {
            val = read_ADC_value();
            sum += val ;
            if ( val < mini) 
               {
                mini=val;
                }
            if ( val >maxi) 
               {
                maxi=val;
                }
        }
        return (sum-mini-maxi) / (times-2) ;
    }
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  4. #4
    Membre du Club
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Juin 2014
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable de compte

    Informations forums :
    Inscription : Juin 2014
    Messages : 215
    Points : 60
    Points
    60
    Par défaut
    @dourouc05
    Je suis justement en train d'explorer et voir si c'est très bruité.
    Je pourrai ajuster ma méthode de "moyennage" en fonction de tes remarques et de ce que je trouve.
    Tu dis aussi :
    elle est plus complexe que le calcul de moyenne, vu que l'insertion dans un tableau déjà trié se fait en O(log n) pour trouver l'endroit et O(n)
    que je ne comprends pas...

    @tbc92
    Je ne vois pas bien l'intérêt. On peut en effet supposer que si le signal est bruité, les valeurs mini et maxi seront éloignées de la valeur vrai, mais on peut aussi avoir récupéré d'autres valeurs qui auront été perturbées qui ne seront dans ce cas pas exclues.

    Tu dis aussi que 10 mesures sont relativement peu. Quel serait un nombre raisonnable/correct de mesures ?

    Y a t-il quelque chose que j'ai incorrectement compris ?

  5. #5
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 053
    Points : 9 392
    Points
    9 392
    Par défaut
    Je partais du principe que 10 données, c'est une contrainte imposée. On a 10 données, et on veut trouver un indicateur qui synthétise ces 10 valeurs, et qui réduit l'effet de mesures éventuellement fausses.

    Toujours avec cette contrainte de 'synthétiser une dizaine de valeurs' :
    En gros, quel est le pourcentage de mesures qui sont fausses.
    Si c'est 10% ou plus, il n'y a pas photo, la médiane est la plus adaptée.
    Si c'est 2% ou moins, la médiane efface tous les bruits, mais peut éventuellement amener d'autres biais.
    Entre les 2, faut voir.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

Discussions similaires

  1. Validation de données sans utiliser ENTER
    Par Dread1717 dans le forum Langage
    Réponses: 3
    Dernier message: 14/06/2008, 11h46
  2. enorme donnée, meilleure utilisation..
    Par {F-I} dans le forum Général Conception Web
    Réponses: 14
    Dernier message: 16/05/2008, 08h11
  3. Lire un fichier de donnée en utilisant des variables
    Par mehdichess74 dans le forum VB.NET
    Réponses: 1
    Dernier message: 14/04/2008, 11h48
  4. Réponses: 7
    Dernier message: 16/06/2006, 14h55
  5. Réponses: 7
    Dernier message: 16/06/2006, 14h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo