/

Représentation graphique d'une distribution

Cet article est librement adaptaté du chapitre correspondant de l'ouvrage de Maurice Pillet [msp]. Il propose une méthode de représentation graphique sous forme d'un histogramme de la distribution de données récoltées dans un état Storga.

Pour étudier les dispersions dans une production, il est important de visualiser ces dispersions au travers d'un diagramme. L'histogramme est un diagramme couramment utilisé pour représenter une distribution. C'est un diagramme à barres (rectangles) contiguës dont les aires sont proportionnelles aux fréquences.

Norme de représentation

La représentation d'un histogramme pour être correcte doit suivre la méthode suivante qui permet d'éviter les deux erreurs classiques dans la représentation qui sont :

   •   

le nombre de classes mal adapté,

   •   

la présence de valeurs aux limites de classes.

La norme CNOMO E41.32.110.N [cnomo] définit les modalités de calcul des histogrammes d'une façon rigoureuse. Lorsque les histogrammes sont construits selon cette norme, les deux écueils cités ci-dessus sont évités.

On peut noter à ce propos l'importance de la construction d'un histogramme correct si l'on veut réaliser le test de normalité du χ² ; lorsque l'histogramme de départ n'est pas bien construit, ce test donne des résultats fantaisistes.

Analyse des valeurs

On suppose pour la suite que la série de valeurs (champ "valeur") qu'on souhaite représenter est collectée par l'état "valeurs_histogramme" dans Storga. L'histogramme sera construit par le formulaire suivant :

1. Extraire de l'état le nombre de valeurs N, et les bornes de l'ensemble (mini, maxi)

La fonction report permet de parcourir chaque ligne de l'état. Le programme suivant incrémente à chaque ligne le champ N, initialisé à 0, et teste la valeur pour déterminer les bornes :

N := 0
mini := undefined
maxi := undefined
report "valeurs_histogramme"
  field Float valeur
  if mini>valeur or mini=undefined
    mini := valeur
  if maxi<valeur or maxi=undefined
    maxi := valeur
  N += 1

2. Choix du nombre de classes

Le nombre de classes est calculé par la formule 1 + 10logN / 3

Dans Storga, 'log' désigne le logarithme népérien, souvent noté 'ln' dans la littérature scientifique ; pour obtenir le logarithme en base 10 prévu par la formule, on divise par 'log 10', ce qui donne :

x := 1 + 10*(log N)/(log 10)/3

on trouve également le calcul plus simple suivant :

x := N^0.5

Les deux formules donnent le même résultat pour 25<N<50

Le nombre de classes est généralement limité à 20 et le résultat est arrondi à l'entier supérieur.

Kt := min (shunt x=(cast x Int) (cast x Int) (cast x+0.5 Int)) 20

Commentaires sur cette formule

3. Calcul de l'intervalle de classe

L'intervalle de classe h se calcule ainsi :

h := (maxi-mini)/Kt

L'intervalle de classe théorique ht doit être arrondi à un multiple de la résolution r de mesure de l'instrument. Voici une proposition d'algorithme pour obtenir le résultat :

var Int p := shunt ((string r "noe") parse any "." any:(var Str pd)) pd:len 0
var Int k := (cast h*10^p Int)\(cast r*10^p Int)
ht := k*r

Commentaires sur cet algorithme

4. Calcul de la valeur limite inférieure

La valeur limite inférieure vli est égale à la plus petite valeur ppv moins la moitié de la résolution :

vli := ppv-r/2

5. Population des classes

Maintenant que les différentes classes sont définies, il faut les peupler en rescannant l'état :

var (Index Int Int) tab
report "valeurs_histogramme"
  field Float valeur
  for (var Int i) 0 Kt-1
    if valeur>=i*ht+vli and valeur<(i+1)*ht+vli
      tab i := shunt tab:i=undefined 1 tab:i+1

On stocke les valeurs dans un index, qui sera utilisé à l'étape suivante.

Index

Dessin de l'histogramme

Nous disposons maintenant de toutes les valeurs nécessaires à la construction de l'histogramme. Plusieurs méthodes sont disponibles pour cette dernière étape, j'ai choisi ici d'utiliser la librairie graphique de pliant (langage dans lequel est développé Storga). Pour cette méthode, l'accès à une machine logique pliant est nécessaire.

if button_name="dessiner"
  r_prog "<nom de la machine logique pliant>"
    r_in (Index Int Int) tab
    r_out FileContent graph
    module "/pliant/graphic/ui/server/display_list.pli"
    module "/pliant/language/unsafe.pli"
    var Int f_maxi := undefined
    each v tab
      if f_maxi<v or f_maxi=undefined
        f_maxi := v
    ui_display_list_record graph
      draw 0 0 100 100
        rectangle 0 0 100 100 color (color rgb 240 240 240)
        for (var Int i) 0 tab:size-1
          rectangle i*100/tab:size+0.25 100 (i+1)*100/tab:size-0.25 100*(1-tab:i/f_maxi) color (color rgb 255 0 0)
    graph name := "graph.puidl"

Références citées

[cnomo]

CNOMO E41.32.110.N, Agrément capabilité des moyens réalisant des caractéristiques suivant une loi normale, 1990

[msp]

Maurice Pillet, Appliquer la maîtrise statistique des procédés MSP/SPC, 1995

Article publié ou mis à jour le 2017-01-09

Catégories : organisation

Une réaction ?

0 commentaires

Votre nom :

Votre e-mail : (non publié)

Commentaire :

Commentaires