/* ILLUSTRATION DE LA PROCÉDURE GLM POUR LE PLAN A CLASSIFICATION SIMPLE */

options nodate nonumber linesize=80 pagesize=70;
ods html file='servo.html';

/* Cette commande va créer un fichier avec les résultats
   sous un format html; voir la dernière commande                   */

title 'Exemple tableau 18.5: Servo';

data servo;
	infile 'CH18TA05.DAT';
	input Duree Endroit Panne;
        attrib Duree label="Durée de vie entre deux pannes";
        attrib Design label="Emplacement des ordinateurs";
        Racineduree=sqrt(Duree);
        Logduree=log(Duree);
        attrib Racineduree label="Racine carrée de la durée de vie entre deux pannes";
        attrib Logduree label="Logarithme de la durée de vie entre deux pannes";

/* Cette fois, je n'utilise pas l'option plot de la procédure univariate.
   J'utilise plutôt la procédure boxplot pour obtenir les diagrammes en 
   boîtes côte-à-côte.  Comme vous pouvez le constater l'énoncé est de la
   forme plot Y*X où Y est la variable continue et X est la variable 
   qualitative.  Cette commande crée des graphiques sous forme de fichiers
   gif.                                                                     */

proc univariate;
        var Duree; 
        by Endroit;
run;

proc boxplot;
        plot Duree*Endroit;
run;

/* Voici la procédure pour obtenir l'analyse de variance de base avec
   comparaisons multiples à l'aide de la procédure glm.  Celle-ci est plus
   appropriée que anova pour les plans non équilibrés avec plus d'un facteur.
   Par contre, lorsque le plan est équilibré, les calculs sont plus efficaces
   avec la procédure anova.

   La procédure glm offre beaucoup plus d'options.  En particulier, on peut
   sauvegarder les résidus pour les analyser, ce que nous ferons.

   Puisqu'il y a le même nombre d'observations dans chaque groupe, il faut 
   utiliser l'option cldiff pour avoir les intervalles explicites; dans les
   plans équilibrés, par défaut c'est comme si on avait l'option lines.
   La même chose est vraie de la procédure anova lorsque le plan est
   équilibré.                */

proc glm;
        class Endroit;
	model Duree=Endroit;
        means Endroit / scheffe tukey cldiff;
/* La commande suivante demande de conserver les résidus (r) dans une variable
   appelée residus                                                           */
        output r=residus;
run;

/* Pour obtenir le graphique quantiles normaux des rédidus.  À nouveau, ceci
   va créer des fichiers gif.                                                */

proc univariate;
        var residus;
        qqplot;
run;

/*  Analyse pour la racine carrée de la durée                 */

proc univariate;
        var Racineduree; 
        by Endroit;
run;

proc boxplot;
        plot Racineduree*Endroit;
run;

proc glm;
        class Endroit;
	model Racineduree=Endroit;
        means Endroit / scheffe tukey cldiff;
        output r=residus2;
run;

proc univariate;
        var residus2;
        qqplot;
run;

/*  Analyse pour le logarithme de la durée                 */

proc univariate;
        var Logduree; 
        by Endroit;
run;

proc boxplot;
        plot Logduree*Endroit;
run;

proc glm;
        class Endroit;
	model Logduree=Endroit;
        means Endroit / scheffe tukey cldiff;
        output r=residus3;
run;

proc univariate;
        var residus3;
        qqplot;
run;

/*  Analyse non paramétrique.  ATTENTION: Wilcoxon veut dire 
    Kruskal-Wallis s'il y a plus de deux groupes!            */

proc npar1way wilcoxon;
        class Endroit;
        var Duree;
        var Logduree;
run;

ods html close;