Détection statistique de bug

Bonsoir à tous,
J'ai une question théorique assez banale (bien qu'elle me vient d'une situation pratique un peu plus complexe).

Un processus utilisant une machine permet de réaliser des mesures (valeurs continues, pas discrètes). En répétant le processus, on obtient des mesures supposées indépendantes et identiquement distribuées (selon une loi de probabilité inconnue).
Dans ce processus, on utilise un paramètre P. De manière générale, un changement de la valeur de ce paramètre ne modifie pas le comportement de la machine et les valeurs qu'elle produit. Mais de manière exceptionnelle, il se peut que l'on tombe sur un "bug", à savoir une valeur P=p0 qui perturbe le processus et les valeurs que la machine se met à produire...
Concrètement, imaginons que l'on possède n mesures obtenues avec la machine, dont j obtenues avec une valeur particulière p0 du paramètres P. Je précise que j est très inférieur à n.
La question : quel test statistique mettre en place sur les n mesures pour détecter un éventuel "bug" sur ces j valeurs ?

Merci à vous.
Bien sûr, je peux compléter la description de la situation par des informations utiles que j'aurais omises...

Réponses

  • Bonjour.

    Si tu sais modéliser ou au moins caractériser ce qui se passe en cas de bug, il te suffit de comparer ce qui se passe pour les j valeurs avec ce qui se passe pour les n-j autres.
    Par exemple, si le bug diminue les valeurs, on comparera les moyennes; s'il augmente la dispersion, on comparera les variances; etc.

    Cordialement.
  • Merci gg0 pour ton intervention.
    Tu dis "comparer les moyennes", mais il faut décider si l'écart entre les moyennes est significatif.
    Si je te comprends bien, pour la moyenne par exemple, on pourrait calculer la moyenne m et la variance s² des n-j valeurs de référence, puis appliquer le TCL : la variable aléatoire "Moyenne de j valeurs" suit approximativement la loi normale N(m, s² / j ) . Et ensuite, on voit où se situe la moyenne empirique des j valeurs particulières obtenues avec P=p0 , dans un intervalle raisonnable par rapport à N(m, s² / j).
    C'est bien ce que tu proposes ?
  • Oui,

    je n'avais pas détaillé le test, ne connaissant que l'imprécis message #1. Il est évident que si on sait plus de choses, on peut aller plus loin.
    Dans tous les cas, si les bogues sont fréquentes, ma méthode ne marche plus. C'est seulement si elles sont rares, donc ne changent pas trop la répartition des n-j autres valeurs par rapport à une population sans bogues qu'on pourra l'utiliser. Et il faudra peut-être en tenir compte dans la construction d'un test.

    Cordialement.
  • Même si ce test ne repose que sur la moyenne, il a la qualité d'être très simple. Je vais le mettre en pratique et voir...
    Par ailleurs, j'avais pensé à réaliser un test d'adéquation à la Kolmogorov, mais c'est plus lourd.
  • Et comment fait-on pour "comparer les variances" ?
  • Heu ... il y a des tests classiques pour cela. Des tests de comparaison de variance.
  • Dans ces tests que tu évoques (et que je ne connais pas), fait-on une supposition sur le type de distribution a priori ( une loi normale, etc. ) ou pas ? car là, pour moi, on ne connait pas le type de distribution.
  • En général oui, ou on a un effectif suffisamment grand (la variance est une moyenne). Si ta variable est continue pas trop concentrée et ton effectif de 15 à 20, la Normalité de la distribution de la variance d'une échantillon est une hypothèse raisonnable.

    Cordialement.
  • Ok Gérard.

    Mais est-ce qu'un test d'adéquation basé sur les rangs de la population des j mesures dans l'ensemble des n mesures ne pourrait pas être plus efficace ?
  • Si tu en connais un ....

    Et réutiliser les j mesures parmi le n pose un problème d'indépendance.

    Cordialement.
  • Justement, je n'en connais pas, même si j'ai vu sur le web des choses qui pourrait ressembler à cela (sans comprendre les détails). Et je me pose la question de l'efficacité, par rapport à ton idée simple de moyenne & variance.
  • Il y a des mesures, comme la corrélation des rangs. Et on peut décider que si le coefficient de corrélation des rangs n'est pas proche de 1, il y a un problème. Mais si j est très faible par rapport à n-j, je ne suis même pas sûr que ce soit probant.

    Cordialement.
  • ok.
    Merci.
  • Qu'entends tu par "si j est très faible par rapport à n-j" ? Un ratio de 1 / 20 par exemple ?
  • Par exemple ...
    Les tests de comparaison par les rangs ont été construits pour des échantillons "habituels". Donc de tailles assez comparables.
  • Ah... Il est vrai que je pensais initialement à prendre n (toutes les mesures) largement supérieur à j (les mesures spécifiques pour P=p0).
  • Je dirais même que, avec n grand, on approche d'autant mieux la loi de probabilité sous-jacente, donc plus à même de détecter un bug .
  • En fait,

    si n est très grand et l'échantillon représentatif, on peut bâtir un modèle à partir des n-j valeurs (supposées sûres), puis faire un test d'adéquation de l'échantillon des j valeurs à ce modèle. mes collègues chercheurs en gestion de production hospitalières travaillaient souvent ainsi.
    L'idéal est un modèle basé sur la physique du processus; à défaut on essaie de trouver un modèle classique (loi Normale, loi exponentielle, ...); et si rien ne convient, on peut utiliser l'histogramme des valeurs (attention à bien choisir les limites de classe en dehors des valeurs d'arrondi) comme modèle.

    Cordialement.
  • Après réflexion, plutôt que l'histogramme, la courbe des effectifs cumulés (test à la Kolmogoroff-Smirnoff). L'histogramme est pratique pour faire des simulations, mais pas pour tester.
  • Oui, un test à la Kolmogorov me plairait bien.
    Cela m'intéresserait de savoir quel genre de test pratiquent tes collègues, histoire de me documenter dessus. S'il te plait.

    Juste une remarque : je suis assez étonné et dubitatif que, lorsqu'on a des données réelles d'une loi inconnue (ce qui est mon cas), on essaie de faire plaquer approximativement une loi classique dessus, puis on teste l'adéquation d'un nouvel échantillon par rapport à cette loi qu'on a retenue. Mais finalement, on ne teste l'adéquation que par rapport à une approximation... :)o
    Je me dis qu'on doit pouvoir faire plus efficace en testant l'adéquation du nouvel échantillon directement par rapport aux données de départ, sans autre intermédiaire. C'est cela que je recherche en ce moment.
  • En fait, mes collègues ne faisaient pas de tests, sauf intuitivement avec des simulations. Mais avaient besoin de construire des modèles. Par contre, un statisticien avec lequel ils travaillaient faisait des tests sur les simulations.
    D'accord avec ta remarque. Fitter une loi sur un échantillon statistique n'a de sens que si on a de bonnes raison que l'échantillon correspond à une variable ayant cette loi. Et pourtant, il existe des logiciels qui te donnent la meilleure (moins mauvaise, en général) loi parmi un choix de lois classiques, celle qui donne le plus faible écart.

    Ton dernier paragraphe me fait penser que tu voudrais tester au fur et à mesure : on change la valeur de P, on produit, puis on teste si c'est "raisonnablement comme avant". Il est alors possible d'automatiser la procédé, soit avec les valeur connues, soit même en rajoutant à chaque étape les nouvelles valeurs si elles ont été reconnues comme bonnes.

    Cordialement.
  • Oui, cela pourrait ressembler éventuellement à ce genre de procédé de test. Et particulièrement un test basé sur les rangs du nouvel échantillon dans l'ensemble des valeurs produites. Et même davantage : en classant les rangs (un peu à la Kolmogorov).

    Par exemple, si on a une famille $F$ de n valeurs quelconques différentes les unes des autres, et
    qu'on pense en tirer simultanément j valeurs $x_1,..., x_j$ , et
    qu'on note $R_1, R_2, ...R_j$ les rangs des j valeurs $x_1,..., x_j$ dans la famille $F$ (la plus petite valeur $F$ étant de rang 1; la plus grande de rang n),
    et qu'on classe ces rangs de manière croissante $R_{(1)} < R_{(2)} < ...< R_{(j)}$,
    alors, pour tout i compris entre 1 et j, l'espérance de $R_{(i)} / (n+1)$ est $i / (j+1)$.

    On n'a pas besoin de connaitre comment les valeurs de la famille $F$ ont été obtenues (pas besoin de construire des classes non plus) mais on peut tester si $j$ valeurs $x_1,..., x_j$ nouvellement apparues suivent "raisonnablement la même répartition".

    Est-ce que cela te fait penser à certains tests déjà existants ?
  • Je te l'ai déjà dit, les tests d'adéquation de Kolmogoroff-Smirnoff. On trouve ça dans les bons bouquins de stats (Le Saporta en parle) et certains logiciels savent faire.
  • Oui, je vois bien le lien avec ce test, quand n est infini, puisque $R_i / (n+1)$ converge vers $F(x_i)$ où $F$ est la fonction de répartition.
    Mais ceci est un test d'adéquation à une loi de probabilité donnée par $F$, pas à une famille de valeurs en utilisant les rangs.

    J'ai peut-être trouvé une source : https://www.statisticien.fr/tests-de-rangs/

    Par exemple, le test de Wilcoxon additionne les rangs du petit échantillon dans la réunion des échantillons. Cela me parait faible (alors que je n'y connais pas grand chose, je suis un peu gonflé 8-) ) de calculer uniquement une somme de rangs pour test l'adéquation : je peux fournir plein d'échantillons biscornus qui auront pourtant pour somme des rangs admise comme habituelle ... :-S
    P.S. En fait ce sont des tests de médiane... ce n'est pas ce je recherche.
  • J'étais resté sur l'idée que les n-j valeurs donnent un modèle de la répartition des valeurs. Et donc faire un test d'adéquation des j valeurs à ce modèle. Si tu veux autre chose, je te laisse faire ...

    Cordialement.
Connectez-vous ou Inscrivez-vous pour répondre.