21 août 2005

(J'ai dû refaire un peu la mise en page du texte suivant, certains exposants dans Word n'apparaissant pas comme tels sous XHTML à cause d'un problème d'interprétation par l'éditeur de code XHTML.) Les personnes à qui j'ai fait parvenir mon entrée m'ont demandé d'élaborer un peu. Voilà...

Qu'est-ce qu'un nuage de points?

Il s'agit d'un problème d'exploration préliminaire des données, qui peut servir à déterminer quel modèle statistique servira à expliquer la variation d'une variable, disons y, à partir de celle d'une autre, disons x. On cherche dans ce cas à faire passer à travers un nuage de points la courbe qui tient compte de toute l'information contenue dans l'échantillon. En fait, il faut construire un intervalle de confiance autour de cette courbe pour que dans un pourcentage prédéterminé des cas, le plus souvent 95%, la vraie valeur s'y trouve. Mais pour appliquer les méthodes courantes de régression, il faut d'abord spécifier le modèle auquel on a affaire, c'est-à-dire présumer de la forme fonctionnelle de la relation qui fait varier y en fonction de x. Le plus souvent, on a plusieurs variables x1, x2, …, xm qui ont une incidence sur la variable y. On choisit le plus souvent un modèle linéaire, du type y = a0 + a1x1 + a2x2 + … + amxm + e où les lettres a0,a1,a2,…, am représentent le vecteur des m paramètres à estimer, les lettres y, x1, x2, …, xm représentent des vecteurs de n observations sur les variables et e représente un vecteur de n erreurs d’estimation distribuées selon une loi normale. On peut aussi choisir un modèle multiplicatif, du type y = a0* x1^a1 * x2^a2 * … * xm^am * exp(e) où exp(e) représente un vecteur de n erreurs d’estimation distribuées selon une loi normale. Ce dernier modèle a l’avantage de se linéariser en lui appliquant la fonction logarithme (naturel) : ln(y) = ln(a0) + a1* ln(x1) + a2 * ln(x2) + … + am * ln(xm) + e, un modèle linéaire en logarithmes. (Je crois que e est lui aussi distribué selon une loi normale si exp(e) l'est.) Il suffit donc d’appliquer à tous les vecteurs d’observations la fonction logarithme pour pouvoir utiliser les méthodes de la régression linéaire pour estimer les paramètres, ce qui nous donne le vecteur des paramètres a0,a1,a2,…, am du modèle multiplicatif initial. Mais bien que les courbes correspondantes soient très différentes, il peut être difficile de déterminer à priori quel modèle utiliser seulement en examinant des graphiques des nuages de points. C'est la raison pour laquelle je me suis intéressé au problème du traçage des courbes, en tant qu'étape préliminaire à l'analyse statistique comme telle. En effet, je me disais que si je réussissais à construire une courbe linéaire par morceaux à partir du nuage de points, je pourrais mieux choisir le modèle d'estimation statistique à utiliser. En effet, il existe une panoplie de formes fonctionnelles possibles. Par exemple, il existe un modèle hybride qui permet de définir une forme fonctionnelle intermédiaire entre le modèle linéaire et le modèle multiplicatif, le modèle de Box-Cox, qui applique à chaque variable transformée la transformation (xλ-1)/λ. En effet, quand λ=1, il s'agit du modèle linéaire et quand λ tend vers 0, (xλ-1)/λ tend vers ln(x), ce qui donne le modèle multiplicatif. J'ai déjà démontré il y a longtemps que la moyenne de variables à laquelle on a appliqué une transformation de Box-Cox tend vers la moyenne géométrique lorsque λ tend vers 0. Cette transformation permet donc de définir un concept de moyenne généralisée. Il s'agit d'une transformation très intéressante, mais qui exige l'utilisation de méthodes de régresssion non linéaire lorsque l'on veut estimer la valeur de λ. Il vaut donc mieux pouvoir identifier une forme fonctionnelle appropriée à partir de la théorie que l'expérience statistique doit permettre de mettre à l'épreuve ou encore à partir de l'observation des données, ce qu'une méthode de traçage de courbes devrait permettre de faciliter. Malheureusement, cela ne semble pas être facile. Le problème est d'utiliser au mieux toute l'information contenue dans les données. C’est ce que j’essaie encore de faire.

Et pourquoi cet intérêt pour les courbes d'apprentissage?

Parce que ces courbes sont utilisées dans l'estimation des coûts de production, notamment, et que leurs propriétés mathématiques sont intéressantes à explorer. Il s'agit d'un modèle assez simple, défini par l'équation y = a * xb où y est la moyenne cumulative du nombre d'heures de main d'oeuvre directe par unité produite, a est le nombre d'heures de main d'oeuvre directe pour la première unité produite, x est le nombre cumulatif d'unités produites et b est un paramètre à estimer ou à calculer à partir d’une hypothèse sur la forme de la courbe, un peu comme on peut fixer λ à priori lorsqu’on applique une transformation de Box-Cox à une variable, dans un autre contexte. Ainsi, le nombre cumulatif d'heures de main d'oeuvre directe est donné par x * y, ou a * x(b+1), ce qui donne comme nombre marginal d'heures de main d'oeuvre directe la dérivée de cette dernière fonction, soit a * (b+1) * xb. Il est facile de remarquer que la division du nombre marginal d'heures de main d'oeuvre directe par la moyenne cumulative du nombre d'heures de main d'oeuvre directe par unité produite donne une constante, (b+1). On verra que b<0, ce qui veut dire que (b+1)< 1 et donc que le résultat de la division précédente veut dire que la dérivée de la fonction correspondant au nombre cumulatif d'heures de main d'oeuvre directe est toujours inférieure à la moyenne de cette fonction. Ainsi, la courbe d’apprentissage serait une asymptote tendant vers zéro à l’infini. En pratique, cela veut plutôt dire que le paramètre b de cette courbe doit être réestimé périodiquement, puisqu’il n’est certainement pas vrai que l’on peut réduire indéfiniment le temps requis pour accomplir une tâche, contrairement à ce que certains patrons semblent croire ou veulent laisser croire.

Heureusement, le paramètre b de cette courbe est assez facile à estimer à partir de l’équation de la moyenne cumulative du nombre d'heures de main d'oeuvre directe par unité, y = a * xb. En effet, si on a deux points (x1,y1) et (x2,y2) sur cette courbe, alors il suffit de transformer l’équation précédente en lui appliquant la fonction logarithme (naturel) et d’y remplacer x et y par leurs valeurs connues, soit ln(y1) = ln(a) + b ln(x1) et ln(y2) = ln(a) + b ln(x2) pour obtenir enfin, en soustrayant la première équation de la seconde, l’équation suivante : b = ln(y2/y1)/ ln(x2/x1), toujours une valeur négative lorsque (x1,y1) précède (x2,y2) sur la courbe d’apprentissage. En pratique, il existe des tables de valeurs unitaires construites selon le principe d’une amélioration (réduction) de y2 par un facteur f par rapport à y1 lorsque x2 double par rapport à x1. Ainsi, si y2/y1= 80% et si x2/x1 = 2, des valeurs correspondant à une réduction de la moyenne cumulative du nombre d'heures de main d'oeuvre directe par unité produite de 80% lorsque le nombre d’unités produites double, on obtient b = ln(0,8)/ ln(2) = -0,3219 et on peut trouver a à partir de b en utilisant ou bien a = y1/ x1b ou bien a = y2/ x2b. On pourrait en principe simplifier les calculs en utilisant les logarithmes à base 2 pour calculer b, puisque ln(f)/ ln(2) = log2(f). Ainsi, on pourrait calculer directement b = log2(f). Puisque f < 1, on a que log2(f) < 0 et donc que b < 0. On peut donc écrire l’équation de la courbe d’apprentissage, qui donne la moyenne cumulative du nombre d'heures de main d'oeuvre directe par unité produite y = a * xb où b = log2(f) < 0 et f ε ]0,1[ est la réduction de la moyenne cumulative du nombre d'heures de main d'oeuvre directe par unité produite lorsque le nombre d’unités produites double.