Détection statistique de bug
dans Statistiques
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...
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...
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
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.
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 ?
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.
Par ailleurs, j'avais pensé à réaliser un test d'adéquation à la Kolmogorov, mais c'est plus lourd.
Cordialement.
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 ?
Et réutiliser les j mesures parmi le n pose un problème d'indépendance.
Cordialement.
Cordialement.
Merci.
Les tests de comparaison par les rangs ont été construits pour des échantillons "habituels". Donc de tailles assez comparables.
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.
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.
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.
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 ?
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.
Cordialement.