Valid XHTML     Valid CSS2    

 

Module de Biostatistiques,

partie 1

Ecole Doctorale Biologie Santé

gilles.hunault "at" univ-angers.fr

      

 

Solutions pour la séance numéro 6 (énoncés)

  1. Commençons par lire les données et regarder l'importance des données manquantes. La fonction lesColonnes() de statgh.r est prévue pour cela, mais la fonction «standard» de R nommée summary() convient également :

    
          # pour les ordinateurs sous Windows à la faculté des sciences, il faut     
          # sans doute commencer par exécuter l'instruction suivante (sans le dièse) :     
          #     
          # setwd("d:/")     
              
          # lecture des données diabetes     
              
          source("http://forge.info.univ-angers.fr/~gh/wstat/statgh.r", encoding="latin1" )     
          urldiab <- "http://forge.info.univ-angers.fr/~gh/wstat/Eda/diabetes.dar"     
          diaborg <- lit.dar(urldiab)     
          print( lesColonnes(diaborg) )     
              
    
    
         Voici l'analyse des  19 colonnes (stat. sur  403  lignes en tout)     
              
                  Num NbVal     Min      Max Distinct Manquantes     
         age        8   403   19.00    92.00       68          0     
         bp.1d     14   398   48.00   124.00       57          5     
         bp.1s     13   398   90.00   250.00       71          5     
         bp.2d     16   141   60.00   124.00       36        262     
         bp.2s     15   141  110.00   238.00       48        262     
         chol       2   402   78.00   443.00      154          1     
         frame     12   391    1.00     3.00        3         12     
         gender     9   403    1.00     2.00        2          0     
         glyhb      6   390    2.68    16.11      239         13     
         hdl        4   402   12.00   120.00       77          1     
         height    10   398   52.00    76.00       22          5     
         hip       18   401   30.00    64.00       32          2     
         id         1   403 1000.00 41756.00      403          0     
         location   7   403    1.00     2.00        2          0     
         ratio      5   402    1.50    19.30       69          1     
         stab.glu   3   403   48.00   385.00      116          0     
         time.ppn  19   400    5.00  1560.00       60          3     
         waist     17   401   26.00    56.00       30          2     
         weight    11   402   99.00   325.00      140          1     
              
              
    

    Il manque, sur les 403 lignes en tout (403 patients) assez peu de données, (souvent moins d'une dizaine, soit de 1 à 2 %) sauf pour les variables bp.2d et bp.2d. Nous allons donc éliminer ces variables et conserver toutes les lignes pour lesquelles on a aucune valeur manquante via la fonction na.omit() de R :

    
              
          # "ménage" des données diabetes     
              
          # 1. on ne garde pas les variables bp.2d et bp.2s respectivement en colonnes 15 et 16     
              
          diab <- diaborg[, -c(15,16) ]     
              
          # 2. on supprime toutes les lignes qui contiennent NA     
              
          diab <- na.omit(diab)     
              
          cat("au final, on travaille sur des données de taille ",dim(diab),"\n")     
              
    
    
              
         au final, on travaille sur des données de taille  366 17     
              
    

    Malheureusement, au bout du compte, la suppression des lignes avec au moins une valeur NA a réduit de 9 % les données : il ne reste plus que 366 patients. Il est donc plus correct de commencer par garder les variables conseillées, puis de supprimer les données manquantes ensuite :

    
              
          # "ménage" des données diabetes     
              
          # 1. on ne garde que les variables conseillées :     
              
          garde <- c("id","glyhb","age","gender","height","weight","waist","hip")     
          diab <- diaborg[, garde ]     
              
          # 2. on supprime toutes les lignes qui contiennent NA     
              
          diab <- na.omit(diab)     
              
          cat("au final, on travaille sur des données de taille ",dim(diab),"\n")     
              
    
    
         au final, on travaille sur des données de taille  382 8     
              
    

    Il reste avec cette deuxième manipulation plus de données : 382 patients.

    Passons maintenant aux unités et aux modalités. Les variables height et weight ne sont pas très «lisibles» pour des français car exprimées respectivement en pouces et pounds. Nous allons donc les convertir en les variables taille et poids dont les unités seront désormais les centimètres et les kilogrammes. Le tour de taille (waist) et le tour de hanches (hip) exprimées en pouces doivent aussi être converties en ceinture (cm) et hanches (cm). Il faut aussi calculer le rapport waist/hip (à partir des variables françaises) que nous nommerons rach (rapport ceinture/hanches). Il n'y a pas de variable "diabète", il faut donc en batir une, à partir de l'indication de l'abstract (glyhb>7). Enfin, la variable "sexe" utilisera des noms de modalité traduits.

    
              
         # conversion de height (pouces) et weight (pounds) en taille (cm) et poids (kg)     
         # et conversion de waist, hip (pouces) en ceinture et hanches (cm)     
              
         attach(diab)     
              
         taille   <- height * 2.54     
         poids    <- weight * 0.45359237     
         ceinture <- waist  * 2.54     
         hanches  <- hip    * 2.54     
              
         # calcul du rapport ceinture/hanches nommé rach     
              
         rach     <- ceinture/hanches     
              
         # diagnostic de diabète à partir de la variable glyhb     
         # codage : 0=sans diabète, 1=avec diabète     
              
         diabete  <- ifelse(glyhb<=7,0,1)     
              
         # on traduit la variable gender en sexe     
              
         sexe         <- gender     
         levels(sexe) <- c("femme","homme")     
              
         detach(diab)     
              
         # on ajoute ces variables au "dataframe"     
              
         diabfr   <- cbind(diab, taille, poids, ceinture, hanches, rach, sexe, diabete )     
              
         # on enlève les variables locales     
              
         rm( taille)     
         rm( poids)     
         rm( ceinture )     
         rm( hanches )     
         rm( rach )     
         rm( sexe )     
         rm( diabete )     
              
              
    

    Les données sont alors prêtes (numériquement) pour l'étude :

    
              
         print( lesColonnes(diabfr) )     
              
              
    
    
         Voici les  15 colonnes (stat. sur  382  lignes en tout)     
                  Num NbVal          Min          Max     
         age        3   382   19.0000000    92.000000     
         ceinture  11   382   66.0400000   142.240000     
         diabete   15   382    0.0000000     1.000000     
         gender     4   382    1.0000000     2.000000     
         glyhb      2   382    2.6800001    16.110001     
         hanches   12   382   76.2000000   162.560000     
         height     5   382   52.0000000    76.000000     
         hip        8   382   30.0000000    64.000000     
         id         1   382 1000.0000000 41752.000000     
         poids     10   382   44.9056446   147.417520     
         rach      13   382    0.6818182     1.142857     
         sexe      14   382    1.0000000     2.000000     
         taille     9   382  132.0800000   193.040000     
         waist      7   382   26.0000000    56.000000     
         weight     6   382   99.0000000   325.000000     
              
    

    Il existe une autre façon de faire ces transformations, considérée comme «plus classique» et plus propre en R, qui consiste à passer par la fonction transform() :

    
          # ajout de colonnes avec formule dans un dataframe via transform()     
          # si on définit rach comme le rapport ceinture/hanches     
          # il faut effectuer deux transformations     
              
          diabfr <- transform(diab,     
             taille   = height * 2.54,     
             ceinture = waist  * 2.54,     
             poids    = weight * 0.45359237,     
             hanches  = hip    * 2.54,     
             diabete  = ifelse(glyhb<=7,0,1),     
             sexe     = gender     
          ) # fin de transform     
              
          # on peut maintenant calculer rach     
          # (transform ne l'aurorise pas en meme temps que les autres transformations)     
              
          diabfr <- transform(diabfr,     
             rach     = ceinture/hanches     
          ) # fin de transform     
              
          # ne pas oublier de modifier les modalités pour sexe     
          # (et dans le bon ordre)     
              
          levels(diabfr$sexe) <- c("femme","homme")     
              
         ################################################################     
              
          # une solution "tout en un" via la fonction mutate du package dplyr est plus adaptée     
              
          library(dplyr)     
              
          diabfr <- mutate(diab,     
             taille   = height * 2.54,     
             ceinture = waist  * 2.54,     
             hanches  = hip    * 2.54,     
             poids    = weight * 0.45359237,     
             diabete  = ifelse(glyhb<=7,0,1),     
             rach     = ceinture/hanches,     
             sexe     = gender     
          ) # fin de mutate     
              
          levels(diabfr$sexe) <- c("femme","homme")     
              
    

    Vu les données et la problématique (le diabète), le plan d'études statistiques est très standard :

    
          PLAN D'ETUDE STATISTIQUE
          ========================
         
          1. Analyse univariée
         
             1.1 Analyse univariée des variables qualitatives SEXE et DIABETE
         
             1.2 Analyse univariée des variables quantitatives AGE, TAILLE, POIDS, CEINTURE, HANCHES, RACH et GLYHB.
                 (y compris tests de normalité)
         
         
          2. Analyse bivariée
         
             2.1 Analyse bivariée des variables qualitatives SEXE et DIABETE (test de chi-deux sur le tri croisé)
         
             2.2 Analyse bivariée des variables quantitatives AGE, TAILLE, POIDS, CEINTURE, HANCHES, RACH et GLYHB.
                 (calcul des coefficients de corrélation linéaire et recherche de relation linéaire deux à deux)
         
             2.3 Analyse bivariée des variables quantitatives AGE, TAILLE, POIDS, CEINTURE, HANCHES, RACH et GLYHB.
                 en fonction du SEXE et de la variable DIABETE
         
         
          3. Analyse de régression
         
             3.1 Régression linéaire multiple pour expliquer la variable GLYHB
                 (y compris sélection des variables pertinentes)
         
             3.2 Régression logistique multiple pour expliquer la variable DIABETE
                 (y compris sélection des variables pertinentes)
         
         
          NOTE : on retiendra pour les tests une valeur dite "significative" pour le seuil alpha = 0,05
                 soit un risque de première espèce de 5 %.
         
    
  2. Commençons par traiter les variables qualitatives :

    
         # pour les ordinateurs sous Windows à la faculté des sciences, il faut     
         # sans doute commencer par exécuter les instructions suivantes (sans le dièse) :     
         #     
         # setwd("d:/")     
         # source("http://forge.info.univ-angers.fr/~gh/wstat/statgh.r", encoding="latin1" )     
              
         attach(diabfr)     
              
         # analyse séparée des QL     
              
         decritQL("Diagnostic de diabète",diabete,"non oui"    ,TRUE,"diab_diab.png")     
         decritQL("Sexe de la personne"  ,sexe   ,"femme homme",TRUE,"diab_sexe.png")     
              
         # analyse conjointe des QL     
              
         triCroise(     
           "Diagnostic de diabète",diabete,"non oui"    ,     
           "Sexe de la personne"  ,sexe   ,"femme homme",     
         TRUE,"diab_sxdiab.png")     
              
         detach(diabfr)     
              
    
    
              
         TRI A PLAT DE :  Diagnostic de diabète (ordre des modalités)     
              
                            non oui  Total     
           Effectif         324  58    382     
           Frequence (en %)  85  15    100     
           Cumul fréquences  85 100    100     
              
              
         QUESTION :  Diagnostic de diabète (par fréquence décroissante)     
              
                            non oui  Total     
           Effectif         324  58    382     
           Frequence (en %)  85  15    100     
           Cumul fréquences  85 100    100     
              
         TRI A PLAT DE :  Sexe de la personne (ordre des modalités)     
              
                            femme homme  Total     
           Effectif           222   160    382     
           Frequence (en %)    58    42    100     
           Cumul fréquences    58   100    100     
              
              
         QUESTION :  Sexe de la personne (par fréquence décroissante)     
              
                            femme homme  Total     
           Effectif           222   160    382     
           Frequence (en %)    58    42    100     
           Cumul fréquences    58   100    100     
              
         TRI CROISE DES QUESTIONS :     
               Diagnostic de diabète  (en ligne)     
               Sexe de la personne  (en colonne)     
              
         Effectifs     
             femme homme     
         non   189   135     
         oui    33    25     
              
           Valeurs en % du total     
               femme homme TOTAL     
         non      49    35    85     
         oui       9     7    15     
         TOTAL    58    42   100     
              
              
         CALCUL DU CHI-DEUX D'INDEPENDANCE     
         =================================     
              
          TABLEAU DES DONNEES     
              
                 non   oui   Total     
         femme   189    33     222     
         homme   135    25     160     
         Total   324    58     382     
              
          VALEURS ATTENDUES et MARGES     
              
                 non   oui   Total     
         femme   188    34     222     
         homme   136    24     160     
         Total   324    58     382     
              
         CONTRIBUTIONS SIGNEES     
              
                            non          oui     
             femme          +  0.003     -  0.015     
             homme          -  0.004     +  0.021     
              
         Valeur du chi-deux   0.04172006     
              
         Le chi-deux max (table) à 5 % est  3.841459 ; p-value  0.952344 pour  1  degrés de liberte     
              
         Décision : au seuil de  5 % on ne peut pas rejeter l'hypothèse     
         qu'il y a indépendance entre ces deux variables qualitatives.     
              
              
    
    diab_diab.png

              

    diab_sexe.png

              

    diab_sxdiab.png

              

    Puis les variables quantitatives :

    
              
         attach(diabfr)     
              
         # analyse séparée des QT     
              
         decritQT("AGE"                     ,age     ,"ans",TRUE,"diab_age.png")     
         decritQT("TAILLE"                  ,taille  ,"cm" ,TRUE,"diab_taille.png")     
         decritQT("POIDS"                   ,poids   ,"kg" ,TRUE,"diab_poids.png")     
         decritQT("TOUR DE TAILLE"          ,ceinture,"cm" ,TRUE,"diab_ceinture.png")     
         decritQT("TOUR DE HANCHES"         ,hanches ,"cm" ,TRUE,"diab_hanches.png")     
         decritQT("RAPPORT CEINTURE/HANCHES",rach    ,"%"  ,TRUE,"diab_rach.png")     
         decritQT("GLYHB"                   ,glyhb   ,"%"  ,TRUE,"diab_glyhb.png")     
              
         # analyse conjointe des QT     
              
         dfqt  <- diabfr[,c("age","taille","poids","ceinture","hanches","rach","glyhb")]     
         nmqt  <- c("AGE","TAILLE","POIDS","TOUR DE TAILLE","TOUR DE HANCHES","RAPPORT CEINTURE/HANCHES","GLYHB")     
         unqt  <- "ans cm kg cm cm % % "     
         allQT(dfqt,nmqt,unqt)     
              
         # analyse des meilleures corrélations (après lecture des résultats précédents)     
              
         anaLin(     
            "POIDS"                   ,poids   ,"kg" ,     
            "TOUR DE TAILLE"          ,ceinture,"cm" ,     
         TRUE,"diab_poitail.png")     
              
         anaLin(     
            "TOUR DE TAILLE"          ,ceinture,"cm" ,     
            "TOUR DE HANCHES"         ,hanches ,"cm" ,     
         TRUE,"diab_tailhanch.png")     
              
         anaLin(     
            "TOUR DE TAILLE"          ,ceinture,"cm" ,     
            "RAPPORT CEINTURE/HANCHES",rach    ,"%"  ,     
         TRUE,"diab_tailrap.png")     
              
         detach(diabfr)     
              
    
    
              
         DESCRIPTION STATISTIQUE DE LA VARIABLE  AGE     
              
          Taille               382        individus     
          Moyenne               46.8482         ans     
          Ecart-type            16.5274         ans     
          Coef. de variation    35               %     
          1er Quartile          34              ans     
          Mediane               45              ans     
          3eme Quartile         60              ans     
          iqr absolu            26              ans     
          iqr relatif           58               %     
          Minimum               19              ans     
          Maximum               92              ans     
              
          Tracé tige et feuilles     
              
           The decimal point is 1 digit(s) to the right of the |     
              
           1 | 99     
           2 | 00000000001111112222233333334     
           2 | 5555666666777777777888888889999999     
           3 | 000000001111111112222333333444444     
           3 | 55555666666666666677777777777888888888899     
           4 | 000000000000000111111111111222222233333333333344444     
           4 | 555555556666777777788888889999     
           5 | 00000000001111112222222233333344444     
           5 | 555555566667778888899999999     
           6 | 00000000001111111222223333333333344444     
           6 | 5555556666666777788889     
           7 | 00001111222233444     
           7 | 5566666888899     
           8 | 0012234     
           8 | 9     
           9 | 12     
              
              
              
         DESCRIPTION STATISTIQUE DE LA VARIABLE  TAILLE     
              
          Taille               382        individus     
          Moyenne              167.6134          cm     
          Ecart-type             9.9754          cm     
          Coef. de variation     6               %     
          1er Quartile         160               cm     
          Mediane              168               cm     
          3eme Quartile        175               cm     
          iqr absolu            15               cm     
          iqr relatif            9               %     
          Minimum              132               cm     
          Maximum              193               cm     
              
          Tracé tige et feuilles     
              
           The decimal point is 1 digit(s) to the right of the |     
              
           13 | 2     
           13 |     
           14 | 02     
           14 | 777     
           15 | 0000000002222222222     
           15 | 55555555555555555557777777777777777777777777777777     
           16 | 000000000000000000000000000000000000000033333333333333333333333333333333     
           16 | 555555555555555555555555555555558888888888888888888888888888888     
           17 | 00000000000000000000000000000000000033333333333333333333333333     
           17 | 555555555555555555555555555555555558888888888888888888888     
           18 | 00000000000000000000033333333333333     
           18 | 5555555588888     
           19 | 11133     
              
              
              
         DESCRIPTION STATISTIQUE DE LA VARIABLE  POIDS     
              
          Taille               382        individus     
          Moyenne               80.6029          kg     
          Ecart-type            18.3548          kg     
          Coef. de variation    23               %     
          1er Quartile          68               kg     
          Mediane               79               kg     
          3eme Quartile         91               kg     
          iqr absolu            22               kg     
          iqr relatif           28               %     
          Minimum               45               kg     
          Maximum              147               kg     
              
          Tracé tige et feuilles     
              
           The decimal point is 1 digit(s) to the right of the |     
              
            4 | 556889     
            5 | 00122222244444444444455556666777778899999     
            6 | 11122223333344444444455556666666666666677777888888899999     
            7 | 000000001111112222222222333333333333444444445555555555566666666777777777777777777788888899999999     
            8 | 0001111111111112222222222222233333333333333444444444445555555666666667777788999999     
            9 | 00001111111112223333333355555556666677888889999     
           10 | 000111112223333456677788     
           11 | 1112344466677899     
           12 | 01246689     
           13 | 112     
           14 | 057     
              
              
              
         DESCRIPTION STATISTIQUE DE LA VARIABLE  TOUR DE TAILLE     
              
          Taille               382        individus     
          Moyenne               96.3205          cm     
          Ecart-type            14.6568          cm     
          Coef. de variation    15               %     
          1er Quartile          84               cm     
          Mediane               94               cm     
          3eme Quartile        104               cm     
          iqr absolu            20               cm     
          iqr relatif           22               %     
          Minimum               66               cm     
          Maximum              142               cm     
              
          Tracé tige et feuilles     
              
           The decimal point is 1 digit(s) to the right of the |     
              
            6 | 669     
            7 | 111111144444444444     
            7 | 66666666699999999999999999999     
            8 | 11111111111111111111144444444444444444444444444     
            8 | 666666666666666666666669999999999999999999     
            9 | 1111111111111111111111111444444444444444444444444444444     
            9 | 7777777777777777777777777799999999999999999999999     
           10 | 22222222222222222222222222444444444444444444     
           10 | 77777777777777999999999999999     
           11 | 22222222222244444444444     
           11 | 7777777779999999     
           12 | 22222222444444     
           12 | 777     
           13 | 000022     
           13 | 55     
           14 | 02     
              
              
              
         DESCRIPTION STATISTIQUE DE LA VARIABLE  TOUR DE HANCHES     
              
          Taille               382        individus     
          Moyenne              109.3330          cm     
          Ecart-type            14.3002          cm     
          Coef. de variation    13               %     
          1er Quartile          99               cm     
          Mediane              107               cm     
          3eme Quartile        117               cm     
          iqr absolu            18               cm     
          iqr relatif           17               %     
          Minimum               76               cm     
          Maximum              163               cm     
              
          Tracé tige et feuilles     
              
           The decimal point is 1 digit(s) to the right of the |     
              
            7 | 6     
            8 | 144444444     
            8 | 666669999999999     
            9 | 11111144444444444444     
            9 | 77777777777777777777777777799999999999999999999999999999999999     
           10 | 22222222222222222222222222222222244444444444444444444444444444444444     
           10 | 7777777777777777777777777779999999999999999999999999999     
           11 | 2222222222222222222244444444444444444444     
           11 | 77777777777777777777999999999999999999999     
           12 | 22222222222224444444444444     
           12 | 7777777     
           13 | 0000000022222     
           13 | 5555777777     
           14 | 002     
           14 | 5577777     
           15 | 02     
           15 | 77     
           16 | 3     
              
              
              
         DESCRIPTION STATISTIQUE DE LA VARIABLE  RAPPORT CEINTURE/HANCHES     
              
          Taille               382        individus     
          Moyenne                0.8812           %     
          Ecart-type             0.0733           %     
          Coef. de variation     8               %     
          1er Quartile           1                %     
          Mediane                1                %     
          3eme Quartile          1                %     
          iqr absolu             0                %     
          iqr relatif           11               %     
          Minimum                1                %     
          Maximum                1                %     
              
          Tracé tige et feuilles     
              
           The decimal point is 2 digit(s) to the left of the |     
              
            68 | 2     
            70 | 378     
            72 | 5399     
            74 | 4405677     
            76 | 123693556688     
            78 | 003466788111555555567     
            80 | 0000000445560000011666666888     
            82 | 01224555556666799999000033333777788     
            84 | 01222222344556666600012244445577777     
            86 | 000000000014455777888888822222222355555588899     
            88 | 01111224446666666779999112455667777777     
            90 | 000000222222224455567779999113344555557789     
            92 | 011113333555555777700022556666688899999     
            94 | 111114667900111111122222668     
            96 | 0701444566666677888889     
            98 | 0     
           100 | 00000     
           102 | 0467     
           104 | 14581     
           106 | 4337     
           108 | 91     
           110 |     
           112 |     
           114 | 03     
              
              
              
         DESCRIPTION STATISTIQUE DE LA VARIABLE  GLYHB     
              
          Taille               382        individus     
          Moyenne                5.5773           %     
          Ecart-type             2.2022           %     
          Coef. de variation    39               %     
          1er Quartile           4                %     
          Mediane                5                %     
          3eme Quartile          6                %     
          iqr absolu             1                %     
          iqr relatif           25               %     
          Minimum                3                %     
          Maximum               16                %     
              
          Tracé tige et feuilles     
              
           The decimal point is at the |     
              
            2 | 788     
            3 | 0344556666677778888888899999     
            4 | 0000000000000001111111111112222222222223333333333333333344444444444444444444444444444555555555556666666666666666666777+50     
            5 | 00000000000000001111111111112222222222222222333333333344445555555556666666666667777777889     
            6 | 011111223334444555558     
            7 | 0001244555557899     
            8 | 11234468     
            9 | 22334466888     
           10 | 11125899     
           11 | 022446     
           12 | 1277     
           13 | 0167     
           14 | 39     
           15 | 5     
           16 | 1     
              
              
          vous pouvez utiliser  diab_glyhb.png     
              
         Voici les 10 premières lignes de données (il y en a 382 en tout)     
            age taille     poids ceinture hanches      rach glyhb     
         1   46 157.48  54.88468    73.66   96.52 0.7631579  4.31     
         2   29 162.56  98.88314   116.84  121.92 0.9583333  4.44     
         3   58 154.94 116.11965   124.46  144.78 0.8596491  4.64     
         4   67 170.18  53.97749    83.82   96.52 0.8684211  4.63     
         5   64 172.72  83.00740   111.76  104.14 1.0731707  7.72     
         6   34 180.34  86.18255    91.44  106.68 0.8571429  4.81     
         7   30 175.26  86.63614   116.84  124.46 0.9387755  4.84     
         8   37 149.86  77.11070    86.36   99.06 0.8717949  3.94     
         9   45 175.26  75.29633    86.36  101.60 0.8500000  4.84     
         10  55 160.02  91.62566   114.30  127.00 0.9000000  5.78     
              
         Description des variables statistiques par cdv décroissant     
            Num                      Nom   Taille    Moyenne  Unite  Ecart-type  Coef. de var.   Minimum   Maximum     
               7                 GLYHB        382      5.577      %       2.205      39.54   %     2.680    16.110     
               1                 AGE          382     46.848    ans      16.549      35.32   %    19.000    92.000     
               3                 POIDS        382     80.603     kg      18.379      22.80   %    44.906   147.418     
               4           TOUR DE TAILLE     382     96.321     cm      14.676      15.24   %    66.040   142.240     
               5          TOUR DE HANCHES     382    109.333     cm      14.319      13.10   %    76.200   162.560     
               6 RAPPORT CEINTURE/HANCHES     382      0.881      %       0.073       8.33   %     0.682     1.143     
               2                 TAILLE       382    167.613     cm       9.989       5.96   %   132.080   193.040     
              
         Par ordre d'entrée     
            Num                      Nom   Taille    Moyenne  Unite  Ecart-type  Coef. de var.   Minimum   Maximum     
               1                 AGE          382     46.848    ans      16.549      35.32   %    19.000    92.000     
               2                 TAILLE       382    167.613     cm       9.989       5.96   %   132.080   193.040     
               3                 POIDS        382     80.603     kg      18.379      22.80   %    44.906   147.418     
               4           TOUR DE TAILLE     382     96.321     cm      14.676      15.24   %    66.040   142.240     
               5          TOUR DE HANCHES     382    109.333     cm      14.319      13.10   %    76.200   162.560     
               6 RAPPORT CEINTURE/HANCHES     382      0.881      %       0.073       8.33   %     0.682     1.143     
               7                 GLYHB        382      5.577      %       2.205      39.54   %     2.680    16.110     
              
         Par moyenne décroissante     
            Num                      Nom   Taille    Moyenne  Unite  Ecart-type  Coef. de var.   Minimum   Maximum     
               2                 TAILLE       382    167.613     cm       9.989       5.96   %   132.080   193.040     
               5          TOUR DE HANCHES     382    109.333     cm      14.319      13.10   %    76.200   162.560     
               4           TOUR DE TAILLE     382     96.321     cm      14.676      15.24   %    66.040   142.240     
               3                 POIDS        382     80.603     kg      18.379      22.80   %    44.906   147.418     
               1                 AGE          382     46.848    ans      16.549      35.32   %    19.000    92.000     
               7                 GLYHB        382      5.577      %       2.205      39.54   %     2.680    16.110     
               6 RAPPORT CEINTURE/HANCHES     382      0.881      %       0.073       8.33   %     0.682     1.143     
              
         Matrice des corrélations au sens de  Pearson pour  382  lignes et  7  colonnes     
              
                                     AGE TAILLE POIDS TOUR DE TAILLE TOUR DE HANCHES RAPPORT CEINTURE/HANCHES GLYHB     
         AGE                       1.000     
         TAILLE                   -0.091  1.000     
         POIDS                    -0.065  0.247 1.000     
         TOUR DE TAILLE            0.151  0.053 0.853          1.000     
         TOUR DE HANCHES           0.001 -0.108 0.830          0.835           1.000     
         RAPPORT CEINTURE/HANCHES  0.284  0.262 0.268          0.528          -0.023                    1.000     
         GLYHB                     0.336  0.053 0.161          0.240           0.143                    0.216 1.000     
              
         Meilleure corrélation  0.852703  pour  TOUR DE TAILLE  et  POIDS  p-value      0     
              
         Formules  POIDS  =      1.068 * TOUR DE TAILLE      -22.252     
               et  TOUR DE TAILLE  =      0.681 * POIDS   +    41.437     
              
          Coefficients de corrélation par ordre décroissant     
              
             0.853  p-value  0.0000  pour  TOUR DE TAILLE  et  POIDS     
             0.835  p-value  0.0000  pour  TOUR DE HANCHES  et  TOUR DE TAILLE     
             0.830  p-value  0.0000  pour  TOUR DE HANCHES  et  POIDS     
              
             0.528  p-value  0.0000  pour  RAPPORT CEINTURE/HANCHES  et  TOUR DE TAILLE     
             0.336  p-value  0.0000  pour  GLYHB      et  AGE     
             0.284  p-value  0.0000  pour  RAPPORT CEINTURE/HANCHES  et  AGE     
             0.268  p-value  0.0000  pour  RAPPORT CEINTURE/HANCHES  et  POIDS     
             0.262  p-value  0.0000  pour  RAPPORT CEINTURE/HANCHES  et  TAILLE     
             0.247  p-value  0.0000  pour  POIDS      et  TAILLE     
             0.240  p-value  0.0000  pour  GLYHB      et  TOUR DE TAILLE     
             0.216  p-value  0.0000  pour  GLYHB      et  RAPPORT CEINTURE/HANCHES     
             0.161  p-value  0.0016  pour  GLYHB      et  POIDS     
             0.151  p-value  0.0031  pour  TOUR DE TAILLE  et  AGE     
             0.143  p-value  0.0051  pour  GLYHB      et  TOUR DE HANCHES     
            -0.108  p-value  0.0343  pour  TOUR DE HANCHES  et  TAILLE     
            -0.091  p-value  0.0759  pour  TAILLE     et  AGE     
            -0.065  p-value  0.2073  pour  POIDS      et  AGE     
             0.053  p-value  0.3027  pour  TOUR DE TAILLE  et  TAILLE     
             0.053  p-value  0.2988  pour  GLYHB      et  TAILLE     
            -0.023  p-value  0.6473  pour  RAPPORT CEINTURE/HANCHES  et  TOUR DE HANCHES     
             0.001  p-value  0.9906  pour  TOUR DE HANCHES  et  AGE     
              
              
         ANALYSE DE LA LIAISON LINEAIRE ENTRE  POIDS  ET  TOUR DE TAILLE     
              
              
          coefficient de corrélation :  0.852703  donc R2 =  0.7271024     
              
          p-value associée :  0     
              
               équation :  TOUR DE TAILLE  =   0.68 * POIDS  +  41.44     
               équation :  POIDS  =   1.07 * TOUR DE TAILLE  +  -22.25     
              
              
         ANALYSE DE LA LIAISON LINEAIRE ENTRE  TOUR DE TAILLE  ET  TOUR DE HANCHES     
              
              
          coefficient de corrélation :  0.8345839  donc R2 =  0.6965302     
              
          p-value associée :  0     
              
               équation :  TOUR DE HANCHES  =   0.81 * TOUR DE TAILLE  +  30.90     
               équation :  TOUR DE TAILLE  =   0.86 * TOUR DE HANCHES  +   2.80     
              
              
         ANALYSE DE LA LIAISON LINEAIRE ENTRE  TOUR DE TAILLE  ET  RAPPORT CEINTURE/HANCHES     
              
              
          coefficient de corrélation :  0.527713  donc R2 =  0.278481     
              
          p-value associée :  0     
              
               équation :  RAPPORT CEINTURE/HANCHES  =   0.00 * TOUR DE TAILLE  +   0.63     
               équation :  TOUR DE TAILLE  =  105.46 * RAPPORT CEINTURE/HANCHES  +   3.39     
              
              
    
    diab_age.png

              

    diab_taille.png

              

    diab_poids.png

              

    diab_ceinture.png
    diab_hanches.png

              

    diab_rach.png

              

    diab_glyhb.png

              

    Et enfin croisons les qualitatives et les quantitatives :

    
              
         attach(diabfr)     
              
         # analyse des QT par QL     
              
         sexe12 <- as.numeric(sexe)     
              
         decritQTparFacteur(     
            "AGE"                     ,age     ,"ans",     
            "Sexe de la personne"     ,sexe12  ,"femme homme",     
         TRUE,"diab_agesexe.png")     
              
         decritQTparFacteur(     
            "AGE"                     ,age     ,"ans",     
            "Diagnostic de diabète"   ,diabete ,"non oui"    ,     
         TRUE,"diab_agediab.png")     
              
         decritQTparFacteur(     
            "TAILLE"                  ,taille  ,"cm" ,     
            "Sexe de la personne"     ,sexe12  ,"femme homme",     
         TRUE,"diab_tailsexe.png")     
              
         decritQTparFacteur(     
            "TAILLE"                  ,taille  ,"cm" ,     
            "Diagnostic de diabète"   ,diabete ,"non oui"    ,     
         TRUE,"diab_taildiab.png")     
              
         decritQTparFacteur(     
            "POIDS"                   ,poids   ,"kg" ,     
            "Sexe de la personne"     ,sexe12  ,"femme homme",     
         TRUE,"diab_poisexe.png")     
              
         decritQTparFacteur(     
            "POIDS"                   ,poids   ,"kg" ,     
            "Diagnostic de diabète"   ,diabete ,"non oui"    ,     
         TRUE,"diab_poidiab.png")     
              
         decritQTparFacteur(     
            "TOUR DE TAILLE"          ,ceinture,"cm" ,     
            "Sexe de la personne"     ,sexe12  ,"femme homme",     
         TRUE,"diab_ceintsexe.png")     
              
         decritQTparFacteur(     
            "TOUR DE TAILLE"          ,ceinture,"cm" ,     
            "Diagnostic de diabète"   ,diabete ,"non oui"    ,     
         TRUE,"diab_ceintdiab.png")     
              
         decritQTparFacteur(     
            "TOUR DE HANCHES"         ,hanches ,"cm" ,     
            "Sexe de la personne"     ,sexe12  ,"femme homme",     
         TRUE,"diab_hanchsexe.png")     
              
         decritQTparFacteur(     
            "TOUR DE HANCHES"         ,hanches ,"cm" ,     
            "Diagnostic de diabète"   ,diabete ,"non oui"    ,     
         TRUE,"diab_hanchdiab.png")     
              
         decritQTparFacteur(     
            "RAPPORT CEINTURE/HANCHES",rach    ,"%"  ,     
            "Sexe de la personne"     ,sexe12  ,"femme homme",     
         TRUE,"diab_rachsexe.png")     
              
         decritQTparFacteur(     
            "RAPPORT CEINTURE/HANCHES",rach    ,"%"  ,     
            "Diagnostic de diabète"   ,diabete ,"non oui"    ,     
         TRUE,"diab_rachdiab.png")     
              
         decritQTparFacteur(     
            "GLYHB"                   ,glyhb   ,"%"  ,     
            "Sexe de la personne"     ,sexe12  ,"femme homme",     
         TRUE,"diab_glyhbsexe.png")     
              
         decritQTparFacteur(     
            "GLYHB"                   ,glyhb   ,"%"  ,     
            "Diagnostic de diabète"   ,diabete ,"non oui"    ,     
         TRUE,"diab_glyhbdiab.png")     
              
         detach(diabfr)     
              
    
    
              
         VARIABLE QT  AGE ,unit=ans     
         VARIABLE QL  Sexe de la personne  labels :  femme homme     
              
                     N       Moy Unite       Ect Cdv        Q1       Med        Q3       EIQ       Min       Max     
         Global    382    46.848   ans    16.527  35    34.000    45.000    60.000    26.000    19.000    92.000     
         femme     222    45.775   ans    16.840  37    32.000    43.000    59.000    27.000    19.000    92.000     
         homme     160    48.337   ans    15.965  33    36.000    48.000    62.000    26.000    20.000    82.000     
              
         Analysis of Variance Table     
              
         Response: nomVarQT     
                    Df Sum Sq Mean Sq F value Pr(>F)     
         ql          1    611  610.68   2.237 0.1356     
         Residuals 380 103735  272.99     
              
         VARIABLE QT  AGE ,unit=ans     
         VARIABLE QL  Diagnostic de diabète  labels :  non oui     
              
                     N       Moy Unite       Ect Cdv        Q1       Med        Q3       EIQ       Min       Max     
         Global    382    46.848   ans    16.527  35    34.000    45.000    60.000    26.000    19.000    92.000     
         non       324    44.756   ans    16.188  36    32.000    42.000    56.250    24.250    19.000    92.000     
         oui        58    58.534   ans    13.198  23    50.250    60.000    65.750    15.500    26.000    91.000     
              
         Analysis of Variance Table     
              
         Response: nomVarQT     
                    Df Sum Sq Mean Sq F value    Pr(>F)     
         ql          1   9339    9339  37.354 2.444e-09 ***     
         Residuals 380  95006     250     
         ---     
         Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1     
              
         VARIABLE QT  TAILLE ,unit=cm     
         VARIABLE QL  Sexe de la personne  labels :  femme homme     
              
                     N       Moy Unite       Ect Cdv        Q1       Med        Q3       EIQ       Min       Max     
         Global    382   167.613    cm     9.975   6   160.020   167.640   175.260    15.240   132.080   193.040     
         femme     222   161.874    cm     7.300   5   157.480   160.020   165.100     7.620   132.080   190.500     
         homme     160   175.578    cm     7.382   4   170.180   175.260   180.340    10.160   139.700   193.040     
              
         Analysis of Variance Table     
              
         Response: nomVarQT     
                    Df Sum Sq Mean Sq F value    Pr(>F)     
         ql          1  17462 17462.4   322.9 < 2.2e-16 ***     
         Residuals 380  20550    54.1     
         ---     
         Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1     
              
         VARIABLE QT  TAILLE ,unit=cm     
         VARIABLE QL  Diagnostic de diabète  labels :  non oui     
              
                     N       Moy Unite       Ect Cdv        Q1       Med        Q3       EIQ       Min       Max     
         Global    382   167.613    cm     9.975   6   160.020   167.640   175.260    15.240   132.080   193.040     
         non       324   167.554    cm    10.015   6   160.020   167.640   175.260    15.240   132.080   193.040     
         oui        58   167.947    cm     9.747   6   160.020   170.180   175.260    15.240   149.860   190.500     
              
         Analysis of Variance Table     
              
         Response: nomVarQT     
                    Df Sum Sq Mean Sq F value Pr(>F)     
         ql          1      8    7.59  0.0759 0.7831     
         Residuals 380  38005  100.01     
              
         VARIABLE QT  POIDS ,unit=kg     
         VARIABLE QL  Sexe de la personne  labels :  femme homme     
              
                     N       Moy Unite       Ect Cdv        Q1       Med        Q3       EIQ       Min       Max     
         Global    382    80.603    kg    18.355  23    68.492    78.698    90.718    22.226    44.906   147.418     
         femme     222    79.221    kg    18.786  24    65.771    77.111    90.605    24.834    44.906   147.418     
         homme     160    82.520    kg    17.560  21    72.121    80.966    91.172    19.051    45.359   145.150     
              
         Analysis of Variance Table     
              
         Response: nomVarQT     
                    Df Sum Sq Mean Sq F value  Pr(>F)     
         ql          1   1012 1011.65  3.0108 0.08352 .     
         Residuals 380 127683  336.01     
         ---     
         Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1     
              
         VARIABLE QT  POIDS ,unit=kg     
         VARIABLE QL  Diagnostic de diabète  labels :  non oui     
              
                     N       Moy Unite       Ect Cdv        Q1       Med        Q3       EIQ       Min       Max     
         Global    382    80.603    kg    18.355  23    68.492    78.698    90.718    22.226    44.906   147.418     
         non       324    79.415    kg    18.091  23    66.565    77.111    89.471    22.906    44.906   147.418     
         oui        58    87.238    kg    18.403  21    75.070    85.049    94.574    19.504    55.792   145.150     
              
         Analysis of Variance Table     
              
         Response: nomVarQT     
                    Df Sum Sq Mean Sq F value   Pr(>F)     
         ql          1   3011 3010.82  9.1031 0.002724 **     
         Residuals 380 125684  330.75     
         ---     
         Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1     
              
         VARIABLE QT  TOUR DE TAILLE ,unit=cm     
         VARIABLE QL  Sexe de la personne  labels :  femme homme     
              
                     N       Moy Unite       Ect Cdv        Q1       Med        Q3       EIQ       Min       Max     
         Global    382    96.321    cm    14.657  15    83.820    93.980   104.140    20.320    66.040   142.240     
         femme     222    96.852    cm    15.338  16    83.820    96.520   106.680    22.860    66.040   139.700     
         homme     160    95.583    cm    13.621  14    86.360    93.980   102.235    15.875    68.580   142.240     
              
         Analysis of Variance Table     
              
         Response: nomVarQT     
                    Df Sum Sq Mean Sq F value Pr(>F)     
         ql          1    150  149.60   0.694 0.4053     
         Residuals 380  81912  215.56     
              
         VARIABLE QT  TOUR DE TAILLE ,unit=cm     
         VARIABLE QL  Diagnostic de diabète  labels :  non oui     
              
                     N       Moy Unite       Ect Cdv        Q1       Med        Q3       EIQ       Min       Max     
         Global    382    96.321    cm    14.657  15    83.820    93.980   104.140    20.320    66.040   142.240     
         non       324    94.897    cm    14.267  15    83.820    93.980   104.140    20.320    66.040   134.620     
         oui        58   104.271    cm    14.255  14    92.075   102.870   111.760    19.685    83.820   142.240     
              
         Analysis of Variance Table     
              
         Response: nomVarQT     
                    Df Sum Sq Mean Sq F value    Pr(>F)     
         ql          1   4323  4322.9  21.131 5.848e-06 ***     
         Residuals 380  77739   204.6     
         ---     
         Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1     
              
         VARIABLE QT  TOUR DE HANCHES ,unit=cm     
         VARIABLE QL  Sexe de la personne  labels :  femme homme     
              
                     N       Moy Unite       Ect Cdv        Q1       Med        Q3       EIQ       Min       Max     
         Global    382   109.333    cm    14.300  13    99.060   106.680   116.840    17.780    76.200   162.560     
         femme     222   112.664    cm    15.084  13   101.600   111.760   119.380    17.780    76.200   157.480     
         homme     160   104.712    cm    11.653  11    99.060   104.140   109.220    10.160    83.820   162.560     
              
         Analysis of Variance Table     
              
         Response: nomVarQT     
                    Df Sum Sq Mean Sq F value    Pr(>F)     
         ql          1   5880  5880.3  30.933 5.044e-08 ***     
         Residuals 380  72237   190.1     
         ---     
         Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1     
              
         VARIABLE QT  TOUR DE HANCHES ,unit=cm     
         VARIABLE QL  Diagnostic de diabète  labels :  non oui     
              
                     N       Moy Unite       Ect Cdv        Q1       Med        Q3       EIQ       Min       Max     
         Global    382   109.333    cm    14.300  13    99.060   106.680   116.840    17.780    76.200   162.560     
         non       324   108.491    cm    14.274  13    99.060   106.680   116.840    17.780    76.200   162.560     
         oui        58   114.037    cm    13.512  12   104.140   113.030   121.920    17.780    96.520   157.480     
              
         Analysis of Variance Table     
              
         Response: nomVarQT     
                    Df Sum Sq Mean Sq F value   Pr(>F)     
         ql          1   1513 1513.28  7.5067 0.006437 **     
         Residuals 380  76604  201.59     
         ---     
         Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1     
              
         VARIABLE QT  RAPPORT CEINTURE/HANCHES ,unit=%     
         VARIABLE QL  Sexe de la personne  labels :  femme homme     
              
                     N       Moy Unite       Ect Cdv        Q1       Med        Q3       EIQ       Min       Max     
         Global    382     0.881     %     0.073   8     0.829     0.879     0.926     0.097     0.682     1.143     
         femme     222     0.859     %     0.070   8     0.810     0.856     0.907     0.097     0.682     1.140     
         homme     160     0.912     %     0.067   7     0.868     0.902     0.951     0.083     0.750     1.143     
              
         Analysis of Variance Table     
              
         Response: nomVarQT     
                    Df  Sum Sq  Mean Sq F value    Pr(>F)     
         ql          1 0.25512 0.255125  53.873 1.309e-12 ***     
         Residuals 380 1.79955 0.004736     
         ---     
         Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1     
              
         VARIABLE QT  RAPPORT CEINTURE/HANCHES ,unit=%     
         VARIABLE QL  Diagnostic de diabète  labels :  non oui     
              
                     N       Moy Unite       Ect Cdv        Q1       Med        Q3       EIQ       Min       Max     
         Global    382     0.881     %     0.073   8     0.829     0.879     0.926     0.097     0.682     1.143     
         non       324     0.875     %     0.072   8     0.826     0.872     0.921     0.095     0.682     1.140     
         oui        58     0.915     %     0.073   8     0.875     0.913     0.952     0.077     0.750     1.143     
              
         Analysis of Variance Table     
              
         Response: nomVarQT     
                    Df  Sum Sq  Mean Sq F value    Pr(>F)     
         ql          1 0.07853 0.078532  15.101 0.0001202 ***     
         Residuals 380 1.97614 0.005200     
         ---     
         Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1     
              
         VARIABLE QT  GLYHB ,unit=%     
         VARIABLE QL  Sexe de la personne  labels :  femme homme     
              
                     N       Moy Unite       Ect Cdv        Q1       Med        Q3       EIQ       Min       Max     
         Global    382     5.577     %     2.202  39     4.390     4.840     5.600     1.210     2.680    16.110     
         femme     222     5.501     %     2.118  38     4.390     4.790     5.558     1.168     2.850    14.940     
         homme     160     5.683     %     2.310  41     4.387     4.900     5.685     1.297     2.680    16.110     
              
         Analysis of Variance Table     
              
         Response: nomVarQT     
                    Df  Sum Sq Mean Sq F value Pr(>F)     
         ql          1    3.09  3.0934  0.6356 0.4258     
         Residuals 380 1849.51  4.8671     
              
         VARIABLE QT  GLYHB ,unit=%     
         VARIABLE QL  Diagnostic de diabète  labels :  non oui     
              
                     N       Moy Unite       Ect Cdv        Q1       Med        Q3       EIQ       Min       Max     
         Global    382     5.577     %     2.202  39     4.390     4.840     5.600     1.210     2.680    16.110     
         non       324     4.772     %     0.730  15     4.310     4.695     5.170     0.860     2.680     6.970     
         oui        58    10.074     %     2.262  22     8.140     9.690    11.367     3.228     7.140    16.110     
              
         Analysis of Variance Table     
              
         Response: nomVarQT     
                    Df  Sum Sq Mean Sq F value    Pr(>F)     
         ql          1 1382.83 1382.83  1118.6 < 2.2e-16 ***     
         Residuals 380  469.77    1.24     
         ---     
         Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1     
              
    
    diab_agesexe.png

              

    diab_agediab.png

              

    diab_tailsexe.png

              

    diab_taildiab.png
    diab_poisexe.png

              

    diab_poidiab.png

              

    diab_ceintsexe.png

              

    diab_ceintdiab.png
    diab_hanchsexe.png

              

    diab_hanchdiab.png

              

    diab_rachsexe.png

              

    diab_rachdiab.png
    diab_glyhbsexe.png

              

    diab_glyhbdiab.png

    Passons maintenant à une rédaction cohérente de ces descriptions. Nous avons un peu plus de femmes que d'hommes (60 % vs 40%) pour ces 380 et quelques personnes («on se souvient mieux des chiffres "ronds"» donc 380 plutôt que 382). Il y a beaucoup plus de personnes non diabétiques que de personnes diabétiques (85 % vs 15 %). On pourra comparer ces valeurs à la prévalence du diabète en France en 2009 et à celle des Etats Unis. Le tri croisé de ces deux seules variables qualitatives et le khi-deux associé montrent qu'on peut considérer qu'il n'y a pas d'influence du sexe sur le diabète (p=0,95). C'est la seule rédaction possible ici mettant une causalité (il ne peut pas y avoir d'influence du diabète sur le sexe).

    Toutes les variables quantitatives sont unimodales, mais ne semblent pas toutes suivre une loi normale, dont principalement les variables glyhb et age (mais aucun test de normalité n'a été effectué à ce niveau pour l'instant, voir plus bas). Toutes ces variables sont assez peu dispersées, avec un coefficient de variation d'au plus 40 %. Les principales corrélations mettent en jeu le tour de taille et le poids (r=0,853), le tour de taille et le tour de hanches (r=0,835) et enfin le tour de hanches et le poids (r=0,830). La plus forte corrélation suivante vaut 0,528. Compte-tenu du grand nombre d'observations, c'est le coefficient de corrélation traditionnel (Bravais-Pearson) qui a été utilisé.

    Les différentes ANOVA montrent qu'il n'y a pas de différence significative (au seuil de 5 %) entre les hommes et les femmes pour l'age, le poids, le tour de taille, la glycèmie mais qu'il y en a pour la taille, le tour de hanches, le rapport ceinture/hanches. Remarque : ceci peut sembler un peu contradictoire avec le fait que le tour de taille et le tour de hanches sont fortement corrélés. Pourquoi une seule des deux variables seulement serait-elle influencée par le sexe ? Pour l'indication de diabète, pas de différence significative (au seuil de 5 %) au niveau de la taille ; par contre, il y en a au niveau de l'age, du poids, du tour de taille, du tour de hanches, du rapport ceinture/hanches et de la glycémie (forcément).

    Les graphiques en boites à moustaches (boxplots) semblent montrer que les femmes ont un tour de taille et de hanches supérieur aux hommes dans l'échantillon. On voit aussi sur les graphiques en violons (beanplots) que la distribution du tour de hanches des diabétiques semble bimodale (les hommes et les femmes ?). Enfin, bien sûr, les distributions de la variable glycémie sont complétement séparés au niveau de la variable diabète.

    Voici quelques résultats et graphiques complémentaires :

    
              
         attach(diabfr)     
         dfqt  <- diabfr[,c("age","taille","poids","ceinture","hanches","rach","glyhb")]     
              
         cat("# Tests de normalité\n\n")     
              
         nbv <- ncol(dfqt)     
              
         mtn <- matrix(nrow=nbv,ncol=2)     
         row.names(mtn) <- colnames(dfqt)     
         colnames(mtn)  <- c("Kolmogorov-Smirnov","Shapiro")     
              
         for (idv in (1:nbv)) {     
          v          <- dfqt[,idv]     
          mtn[idv,1] <- sprintf("%16.10f",ks.test(v,pnorm,mean=mean(v),sd=sd(v))$p.value)     
          mtn[idv,2] <- sprintf("%16.10f",shapiro.test(v)$p.value)     
         } # fin pour idv     
              
         print(mtn,quote=FALSE)     
              
         # analyse du tour de hanches des diabétiques par sexe     
              
         diabetiques <- diabfr[ diabfr[,"diabete"]==1, ]     
              
         decritQTparFacteur(     
             "TOUR DE HANCHES"         ,diabetiques[,"hanches"] ,"cm" ,     
             "Sexe de la personne"     ,as.numeric(diabetiques[,"sexe"])    ,"femme homme",     
         TRUE,"diab_diabhanchsexe.png")     
              
         detach(diabfr)     
              
    
    
              
         # Tests de normalité     
              
                  Kolmogorov-Smirnov     Shapiro     
         age          0.0236002416       0.0000020094     
         taille       0.0183499647       0.0034230585     
         poids        0.0084245401       0.0000000859     
         ceinture     0.0415540958       0.0000218980     
         hanches      0.0004226058       0.0000000078     
         rach         0.5556039650       0.0046000039     
         glyhb        0.0000000000       0.0000000000     
              
         VARIABLE QT  TOUR DE HANCHES ,unit=cm     
         VARIABLE QL  Sexe de la personne  labels :  femme homme     
              
                     N       Moy Unite       Ect Cdv        Q1       Med        Q3       EIQ       Min       Max     
         Global     58   114.037    cm    13.512  12   104.140   113.030   121.920    17.780    96.520   157.480     
         femme      33   117.918    cm    14.956  13   106.680   116.840   124.460    17.780    96.520   157.480     
         homme      25   108.915    cm     9.068   8   101.600   106.680   114.300    12.700    96.520   124.460     
              
          vous pouvez utiliser  diab_diabhanchsexe.png     
         Analysis of Variance Table     
              
         Response: nomVarQT     
                   Df Sum Sq Mean Sq F value  Pr(>F)     
         ql         1 1152.8 1152.76  6.8408 0.01143 *     
         Residuals 56 9436.8  168.51     
         ---     
         Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1     
              
    

    diabhanchsexe

    Les tests de normalité de Shapiro-Wilk et Kolmogorov-Smirnov semblent indiquer qu'aucune variable ne peut être considérée comme normale (sauf RACH avec le test de Kolmogorov Smirnov, mais bizarement pas pour le test de Shapiro-Wilk).

    Il serait donc prudent de reprendre les analyses avec des tests non paramétriques (ce qui a été ajouté depuis en automatique dans statgh.r) :

    
              
         attach(diabfr)     
              
         # analyse des QT par QL     
              
         sexe12 <- as.numeric(sexe)     
              
         decritQTparFacteur(     
            "AGE"                     ,age     ,"ans",     
            "Sexe de la personne"     ,sexe12  ,"femme homme",     
         TRUE,"diab_agesexe.png")     
              
         decritQTparFacteur(     
            "AGE"                     ,age     ,"ans",     
            "Diagnostic de diabète"   ,diabete ,"non oui"    ,     
         TRUE,"diab_agediab.png")     
              
         decritQTparFacteur(     
            "TAILLE"                  ,taille  ,"cm" ,     
            "Sexe de la personne"     ,sexe12  ,"femme homme",     
         TRUE,"diab_tailsexe.png")     
              
         decritQTparFacteur(     
            "TAILLE"                  ,taille  ,"cm" ,     
            "Diagnostic de diabète"   ,diabete ,"non oui"    ,     
         TRUE,"diab_taildiab.png")     
              
         decritQTparFacteur(     
            "POIDS"                   ,poids   ,"kg" ,     
            "Sexe de la personne"     ,sexe12  ,"femme homme",     
         TRUE,"diab_poisexe.png")     
              
         decritQTparFacteur(     
            "POIDS"                   ,poids   ,"kg" ,     
            "Diagnostic de diabète"   ,diabete ,"non oui"    ,     
         TRUE,"diab_poidiab.png")     
              
         decritQTparFacteur(     
            "TOUR DE TAILLE"          ,ceinture,"cm" ,     
            "Sexe de la personne"     ,sexe12  ,"femme homme",     
         TRUE,"diab_ceintsexe.png")     
              
         decritQTparFacteur(     
            "TOUR DE TAILLE"          ,ceinture,"cm" ,     
            "Diagnostic de diabète"   ,diabete ,"non oui"    ,     
         TRUE,"diab_ceintdiab.png")     
              
         decritQTparFacteur(     
            "TOUR DE HANCHES"         ,hanches ,"cm" ,     
            "Sexe de la personne"     ,sexe12  ,"femme homme",     
         TRUE,"diab_hanchsexe.png")     
              
         decritQTparFacteur(     
            "TOUR DE HANCHES"         ,hanches ,"cm" ,     
            "Diagnostic de diabète"   ,diabete ,"non oui"    ,     
         TRUE,"diab_hanchdiab.png")     
              
         decritQTparFacteur(     
            "RAPPORT CEINTURE/HANCHES",rach    ,"%"  ,     
            "Sexe de la personne"     ,sexe12  ,"femme homme",     
         TRUE,"diab_rachsexe.png")     
              
         decritQTparFacteur(     
            "RAPPORT CEINTURE/HANCHES",rach    ,"%"  ,     
            "Diagnostic de diabète"   ,diabete ,"non oui"    ,     
         TRUE,"diab_rachdiab.png")     
              
         decritQTparFacteur(     
            "GLYHB"                   ,glyhb   ,"%"  ,     
            "Sexe de la personne"     ,sexe12  ,"femme homme",     
         TRUE,"diab_glyhbsexe.png")     
              
         decritQTparFacteur(     
            "GLYHB"                   ,glyhb   ,"%"  ,     
            "Diagnostic de diabète"   ,diabete ,"non oui"    ,     
         TRUE,"diab_glyhbdiab.png")     
              
         detach(diabfr)     
              
    
    
              
         VARIABLE QT  AGE ,unit=ans     
         VARIABLE QL  Sexe de la personne  labels :  femme homme     
         Kruskal-Wallis rank sum test     
         Kruskal-Wallis chi-squared = 2.522, df = 1, p-value = 0.1123     
              
         VARIABLE QT  AGE ,unit=ans     
         VARIABLE QL  Diagnostic de diabète  labels :  non oui     
         Kruskal-Wallis rank sum test     
         Kruskal-Wallis chi-squared = 35.5033, df = 1, p-value = 2.546e-09     
              
         VARIABLE QT  TAILLE ,unit=cm     
         VARIABLE QL  Sexe de la personne  labels :  femme homme     
         Kruskal-Wallis rank sum test     
         Kruskal-Wallis chi-squared = 193.5672, df = 1, p-value < 2.2e-16     
              
         VARIABLE QT  TAILLE ,unit=cm     
         VARIABLE QL  Diagnostic de diabète  labels :  non oui     
         Kruskal-Wallis rank sum test     
         Kruskal-Wallis chi-squared = 0.0793, df = 1, p-value = 0.7782     
              
         VARIABLE QT  POIDS ,unit=kg     
         VARIABLE QL  Sexe de la personne  labels :  femme homme     
         Kruskal-Wallis rank sum test     
         Kruskal-Wallis chi-squared = 3.7622, df = 1, p-value = 0.05242     
              
         VARIABLE QT  POIDS ,unit=kg     
         VARIABLE QL  Diagnostic de diabète  labels :  non oui     
         Kruskal-Wallis rank sum test     
         Kruskal-Wallis chi-squared = 9.0922, df = 1, p-value = 0.002567     
              
         VARIABLE QT  TOUR DE TAILLE ,unit=cm     
         VARIABLE QL  Sexe de la personne  labels :  femme homme     
         Kruskal-Wallis rank sum test     
         Kruskal-Wallis chi-squared = 0.675, df = 1, p-value = 0.4113     
              
         VARIABLE QT  TOUR DE TAILLE ,unit=cm     
         VARIABLE QL  Diagnostic de diabète  labels :  non oui     
         Kruskal-Wallis rank sum test     
         Kruskal-Wallis chi-squared = 18.5091, df = 1, p-value = 1.691e-05     
              
         VARIABLE QT  TOUR DE HANCHES ,unit=cm     
         VARIABLE QL  Sexe de la personne  labels :  femme homme     
         Kruskal-Wallis rank sum test     
         Kruskal-Wallis chi-squared = 30.4087, df = 1, p-value = 3.5e-08     
              
         VARIABLE QT  TOUR DE HANCHES ,unit=cm     
         VARIABLE QL  Diagnostic de diabète  labels :  non oui     
         Kruskal-Wallis rank sum test     
         Kruskal-Wallis chi-squared = 8.3886, df = 1, p-value = 0.003776     
              
         VARIABLE QT  RAPPORT CEINTURE/HANCHES ,unit=%     
         VARIABLE QL  Sexe de la personne  labels :  femme homme     
         Kruskal-Wallis rank sum test     
         Kruskal-Wallis chi-squared = 49.1667, df = 1, p-value = 2.351e-12     
              
         VARIABLE QT  RAPPORT CEINTURE/HANCHES ,unit=%     
         VARIABLE QL  Diagnostic de diabète  labels :  non oui     
         Kruskal-Wallis rank sum test     
         Kruskal-Wallis chi-squared = 14.193, df = 1, p-value = 0.000165     
              
         VARIABLE QT  GLYHB ,unit=%     
         VARIABLE QL  Sexe de la personne  labels :  femme homme     
         Kruskal-Wallis rank sum test     
         Kruskal-Wallis chi-squared = 1.1757, df = 1, p-value = 0.2782     
              
         VARIABLE QT  GLYHB ,unit=%     
         VARIABLE QL  Diagnostic de diabète  labels :  non oui     
         Kruskal-Wallis rank sum test     
         Kruskal-Wallis chi-squared = 147.2014, df = 1, p-value < 2.2e-16     
              
              
    

    Heureusement, ceci ne change pas nos conclusions précédentes :

    
              
         attach(diabfr)     
              
         # analyse des QT par QL vérification des p-values en paramétrique et non paramétrique     
              
         sexe12 <- as.numeric(sexe)     
              
         lesQt <- c("age", "taille", "poids", "ceinture", "hanches", "rach", "glyhb")     
         lesQl <- c("sexe", "diabete")     
              
         nbQt <- length(lesQt)     
         nbQl <- length(lesQl)     
              
         mdr <- matrix(nrow=nbQt*nbQl,ncol=2) # matrice des résultats     
         colnames(mdr) <- c("p-value (paramétrique)","p-value (non paramétrique")     
         row.names(mdr) <- 1:nrow(mdr)     
              
         idl <- 0     
         for (idqt in 1:nbQt) {     
           nomqt <- lesQt[idqt]     
           for (jdql in 1:nbQl) {     
             nomql <- lesQl[jdql]     
             idl <- idl + 1     
             nomqtql <- paste(nomqt,nomql)     
             row.names(mdr)[idl] <- paste(nomqt,nomql)     
             mdr[idl,1] <- anova(lm(diabfr[,nomqt] ~ as.factor(diabfr[,nomql])))$"Pr(>F)"[[1]]     
             mdr[idl,2] <- kruskal.test(diabfr[,nomqt] ~ as.factor(diabfr[,nomql]))$"p.value"     
           } # fin pour jdql     
         } # fin pour idqt     
              
         print(round(mdr,4))     
              
         detach(diabfr)     
              
    
    
                          p-value (paramétrique) p-value (non paramétrique     
         age sexe                         0.1356                    0.1123     
         age diabete                      0.0000                    0.0000     
         taille sexe                      0.0000                    0.0000     
         taille diabete                   0.7831                    0.7782     
         poids sexe                       0.0835                    0.0524     
         poids diabete                    0.0027                    0.0026     
         ceinture sexe                    0.4053                    0.4113     
         ceinture diabete                 0.0000                    0.0000     
         hanches sexe                     0.0000                    0.0000     
         hanches diabete                  0.0064                    0.0038     
         rach sexe                        0.0000                    0.0000     
         rach diabete                     0.0001                    0.0002     
         glyhb sexe                       0.4258                    0.2782     
         glyhb diabete                    0.0000                    0.0000     
              
    
  3. La lecture de la matrice des coefficients de corrélation linéaire et la liste de ces mêmes coefficients triés par ordre décroissant de valeur absolue n'est pas toujours très aisée. La fonction pairs de R permet de tester les divers nuages de points (X,Y) sur un seul graphique. Nous avons complété cette fonction en la fonction pairsi() afin d'exploiter au mieux ce graphique.

    
          # chargement des données     
              
          load("diabfr.Rda")     
          dfqt <- diabfr[,c("age","taille","poids","ceinture","hanches","rach","glyhb")]     
          listeCouleurs <- c("green","red","blue","black","orange")     
              
          # graphique standard de R     
              
          pairs(dfqt,pch=19,cex=0.05)     
              
          # notre fonction, option 1     
              
          pairsi(dfqt,opt=1,col=listeCouleurs[1+diabfr[,"diabete"]],pch=19,cex=0.05)     
              
          # notre fonction, option 2     
              
          pairsi(dfqt,opt=2)     
              
              
    

    diab_qtpairs.png

    diab_qtpairs1.png

              

    diab_qtpairs2.png

    Comme indiqué par l'énoncé, une autre solution peut être de réaliser une ACP et en particulier de visualiser le cercle des corrélations dans le plan factoriel (1-2), ce que permettent nos fonctions corCircle(), acpFacteur() et acp.

    Remarque : ces fonctions utilisent respectivement les packages FactoMineR et ade4. Il convient donc de les installer par

    
          install.packages("FactoMineR)     
          install.packages("ade4")     
              
    

    avant de les charger par

    
          library(FactoMineR)     
          library(ade4)     
              
    

    On notera qu'il y un site pour FactoMineR à l'adresse http://factominer.free.fr.

    Ade4 est documenté à l'adresse http://pbil.univ-lyon1.fr/ade4/.

    
              
          # chargement des données quantitatives     
              
          dfqt   <- diabfr[,c("age","taille","poids","ceinture","hanches","rach","glyhb")]     
          listec <- c("green","red","blue","black","orange")     
          diabQL <- factor(diabfr$diabete)     
              
          # tracé du cercle des corrélations standard     
              
          corCircle(titre="Diabète",data=dfqt)     
              
          # tracé du cercle des corrélations avec filtrage des corrélations peu importantes     
              
          corCircle(titre="Diabète",data=dfqt,grFile="corcircle2.png",seuil=0.01)     
              
          # détail de l'ACP     
              
          acpFacteur(titre="Diabète",dataMatrix=dfqt,facteur=diabQL,plan=c(1,2),listeCouleurs=listec)     
              
          # nos sorties formatées     
              
          acp(titre="Diabète",matdata=dfqt)     
          acp(titre="Diabète",matdata=dfqt,stat=0,nbf=3,out="var")     
              
              
    
    
         ACP du dossier  Diabète  dimensions  382 x 7     
              
              
         Description des  7  variables statistiques par cdv décroissant     
            Num         Nom   Taille    Moyenne  Unite  Ecart-type  Coef. de var.   Minimum   Maximum     
               7 *glyhb    *     382      5.577   <NA>       2.205      39.54   %     2.680    16.110     
               1 *age      *     382     46.848   <NA>      16.549      35.32   %    19.000    92.000     
               3 *poids    *     382     80.603   <NA>      18.379      22.80   %    44.906   147.418     
               4 *ceinture *     382     96.321   <NA>      14.676      15.24   %    66.040   142.240     
               5 *hanches  *     382    109.333   <NA>      14.319      13.10   %    76.200   162.560     
               6 *rach     *     382      0.881   <NA>       0.073       8.33   %     0.682     1.143     
               2 *taille   *     382    167.613   <NA>       9.989       5.96   %   132.080   193.040     
              
              
         Matrice des corrélations au sens de  Pearson pour  382  lignes et  7  colonnes     
              
                     age taille poids ceinture hanches  rach glyhb     
         age       1.000     
         taille   -0.091  1.000     
         poids    -0.065  0.247 1.000     
         ceinture  0.151  0.053 0.853    1.000     
         hanches   0.001 -0.108 0.830    0.835   1.000     
         rach      0.284  0.262 0.268    0.528  -0.023 1.000     
         glyhb     0.336  0.053 0.161    0.240   0.143 0.216 1.000     
              
         Histogramme des valeurs propres     
              
          +------+--------------+-----------+---------+----------+--------------------------------------------------------------+     
          | Num  | Val. Propre. | Pourcent. | Cumul % | Variat % | Histogramme des valeurs propres                              |     
          +------+--------------+-----------+---------+----------+--------------------------------------------------------------+     
          |   1  |     2.90157  |   41.451  |  41.451 |    0.000 | ************************************************************ |     
          |   2  |     1.48867  |   21.267  |  62.718 |   20.184 | *******************************                              |     
          |   3  |     1.20349  |   17.193  |  79.910 |    4.074 | *************************                                    |     
          |   4  |     0.77100  |   11.014  |  90.925 |    6.179 | ****************                                             |     
          |   5  |     0.54230  |    7.747  |  98.672 |    3.267 | ***********                                                  |     
          |   6  |     0.09113  |    1.302  |  99.974 |    6.445 | **                                                           |     
          |   7  |     0.00184  |    0.026  | 100.000 |    1.276 |                                                              |     
          +------+--------------+-----------+---------+----------+--------------------------------------------------------------+     
              
          Inertie moyenne :    1.00000     
            Selon le critère de Kaiser, il faudrait retenir  3  axes car d'inertie supérieure à cette moyenne.     
            Selon le critère d'inflexion (Cattell's scree test), il faudrait retenir  3  axes.     
              
         ACP du dossier  Diabète  dimensions  382 x 7     
              
              
         Résultats pour les variables principales     
              
          +-------+------------+-----------------+------------------+------------------+------------------+     
          |   J1  |  IDENTIF   |   QLT POIDS INR |   F01   COR  CTR |   F02   COR  CTR |   F03   COR  CTR |     
          +-------+------------+-----------------+------------------+------------------+------------------+     
          |     1 |  age       |   733    1  143 |    172   30   10 |    717  514  345 |   -435  190  158 |     
          |     2 |  taille    |   810    1  143 |    166   28    9 |    208   43   29 |    860  739  614 |     
          |     3 |  poids     |   932    1  143 |    916  839  289 |   -269   72   49 |    144   21   17 |     
          |     4 |  ceinture  |   952    1  143 |    974  949  327 |    -36    1    1 |    -42    2    1 |     
          |     5 |  hanches   |   960    1  143 |    839  703  242 |   -431  186  125 |   -267   71   59 |     
          |     6 |  rach      |   707    1  143 |    478  228   79 |    607  368  247 |    332  110   92 |     
          |     7 |  glyhb     |   498    1  143 |    353  124   43 |    551  304  204 |   -265   70   58 |     
          +-------+------------+-----------------+------------------+------------------+------------------+     
         **Results for the Principal Component Analysis (PCA)**     
         The analysis was performed on 382 individuals, described by 7 variables     
         *The results are available in the following objects:     
              
            name               description     
              
         1  "$eig"             "eigenvalues"     
         2  "$var"             "results for the variables"     
         3  "$var$coord"       "coord. for the variables"     
         4  "$var$cor"         "correlations variables - dimensions"     
         5  "$var$cos2"        "cos2 for the variables"     
         6  "$var$contrib"     "contributions of the variables"     
         7  "$ind"             "results for the individuals"     
         8  "$ind$coord"       "coord. for the individuals"     
         9  "$ind$cos2"        "cos2 for the individuals"     
         10 "$ind$contrib"     "contributions of the individuals"     
         11 "$call"            "summary statistics"     
         12 "$call$centre"     "mean of the variables"     
         13 "$call$ecart.type" "standard error of the variables"     
         14 "$call$row.w"      "weights for the individuals"     
         15 "$call$col.w"      "weights for the variables"     
              
              
    
    corcircle1.png

              

    corcircle2.png

    corcircle3.png

    Avec la fonction qgraph() du package qgraph, il suffit d'utiliser la matrice des corrélations pour visualiser les relations entre les variables :

    
         library(qgraph)     
         qgraph( cor(dfqt) )     
              
    

    corq.png

  4. Dans la mesure où on s'intéresse au diabète, il est certainement«raisonnable» de réaliser une régression logistique binaire sur la variable diagnostic de diabète nommée diabete. Toutefois, comme celle-ci a été construite sur la variable glyhb, une régression linéaire multiple pour expliquer et prédire glyhb a sa place ici.

    Voici la régression logistique binaire multiple maximale (c'est-à-dire avec toutes les variables explicatives) sur la variable diagnostic de diabète :

    
              
              
          # données     
              
          diabete  <- as.factor(ifelse(diabfr$glyhb<=7,0,1))     
          diabqt  <- diabfr[,c("age","taille","poids","ceinture","hanches","rach","glyhb")]     
              
          cat("# régression logistique maximale \n")     
              
          rlb <- glm( diabete ~ . ,data=diabqt,family="binomial")     
              
          print(summary(rlb))     
          yPredites <- predict(rlb,newdata=diabqt,type="response")     
          vauroc <- auroc(data.frame(diabete,yPredites))     
          cat("\nAuroc (ROCR) = ",vauroc,"\n")     
              
              
    
    
         # régression logistique maximale     
              
         Call:     
         glm(formula = diabete ~ ., family = "binomial", data = diabqt)     
              
         Deviance Residuals:     
                Min          1Q      Median          3Q         Max     
         -2.152e-04  -2.100e-08  -2.100e-08  -2.100e-08   1.835e-04     
              
         Coefficients:     
                       Estimate Std. Error z value Pr(>|z|)     
         (Intercept) -6.642e+02  2.076e+06   0.000    1.000     
         age          3.705e-01  1.014e+03   0.000    1.000     
         taille      -1.841e+00  1.341e+03  -0.001    0.999     
         poids        1.282e+00  9.961e+02   0.001    0.999     
         ceinture    -3.475e+00  1.975e+04   0.000    1.000     
         hanches      3.192e+00  1.691e+04   0.000    1.000     
         rach         2.107e+02  2.249e+06   0.000    1.000     
         glyhb        9.126e+01  1.315e+04   0.007    0.994     
              
         (Dispersion parameter for binomial family taken to be 1)     
              
             Null deviance: 3.2537e+02  on 381  degrees of freedom     
         Residual deviance: 1.1493e-07  on 374  degrees of freedom     
         AIC: 16     
              
         Number of Fisher Scoring iterations: 25     
              
              
         Auroc (ROCR) =  1     
              
         warnings():     
              
         1: glm.fit: algorithm did not converge     
         2: glm.fit: fitted probabilities numerically 0 or 1 occurred     
              
              
              
    

    Les résultats semblent surprenants et surtout, non convergents (si on est habitué à lire ce genre de résultats).

    Voici maintenant la régression linéaire multiple maximale pour expliquer et prédire glyhb à laquelle nous avons ajouté un tracé "par paires" des variables :

    
          library(leaps) # pour regsubsets     
              
          # données quantitatives     
              
          dfqt <- diabfr[,c("age","taille","poids","ceinture","hanches","rach","glyhb")]     
          listeCouleurs <- c("green","red","blue","black","orange")     
              
          # analyse multidimensionnelle des données     
              
          gr("diab_qtpairs1.png")     
          pairsi(dfqt,opt=1,col=listeCouleurs[1+diabfr[,"diabete"]],pch=19,cex=0.05)     
          dev.off()     
              
              
          gr("diab_qtpairs2.png")     
          pairsi(dfqt,opt=2)     
          dev.off()     
              
          # régression linéaire multiple     
              
          rl <- lm( glyhb ~ ., data=dfqt)     
              
          print( summary(rl) )     
          print( anova(rl) )     
              
          # tracé des 6 graphiques de résidus dans des graphiques séparés     
              
          for (idg in (1:6)) {     
            gr(paste("diab_rlm",idg,".png",sep=""))     
            plot(rl,which=idg)     
            dev.off()     
          } # fin pour idg     
              
          # library(leaps)     
              
          rlmse <-  regsubsets( glyhb ~ ., data=dfqt,nbest=1,nvmax=6)     
          print( rlmse )     
          plot( rlmse )     
              
    
    
              
         Call:     
         lm(formula = glyhb ~ ., data = dfqt)     
              
         Residuals:     
             Min      1Q  Median      3Q     Max     
         -3.4106 -1.1351 -0.4448  0.2980 10.3440     
              
         Coefficients:     
                      Estimate Std. Error t value Pr(>|t|)     
         (Intercept)  4.042472  11.492008   0.352    0.725     
         age          0.042288   0.006980   6.058 3.35e-09 ***     
         taille       0.012661   0.013321   0.950    0.342     
         poids        0.004932   0.015136   0.326    0.745     
         ceinture     0.080425   0.117031   0.687    0.492     
         hanches     -0.051792   0.102294  -0.506    0.613     
         rach        -5.730786  12.916864  -0.444    0.658     
         ---     
         Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1     
              
         Residual standard error: 2.043 on 375 degrees of freedom     
         Multiple R-squared: 0.1554,	Adjusted R-squared: 0.1419     
         F-statistic:  11.5 on 6 and 375 DF,  p-value: 8.106e-12     
              
         Analysis of Variance Table     
              
         Response: glyhb     
                    Df  Sum Sq Mean Sq F value    Pr(>F)     
         age         1  208.99 208.989 50.0855 7.284e-12 ***     
         taille      1   13.13  13.129  3.1465 0.0769002 .     
         poids       1   51.94  51.938 12.4473 0.0004706 ***     
         ceinture    1   12.27  12.267  2.9399 0.0872398 .     
         hanches     1    0.71   0.709  0.1700 0.6803454     
         rach        1    0.82   0.821  0.1968 0.6575393     
         Residuals 375 1564.75   4.173     
         ---     
         Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1     
         Subset selection object     
         Call: regsubsets.formula(glyhb ~ ., data = dfqt, nbest = 1, nvmax = 6)     
         6 Variables  (and intercept)     
                  Forced in Forced out     
         age          FALSE      FALSE     
         taille       FALSE      FALSE     
         poids        FALSE      FALSE     
         ceinture     FALSE      FALSE     
         hanches      FALSE      FALSE     
         rach         FALSE      FALSE     
         1 subsets of each size up to 6     
         Selection Algorithm: exhaustive     
              
              
    
    diab_rlm1.png

              

    diab_rlm2.png

              

    diab_rlm3.png

              

    diab_rlm4.png

              

    diab_rlm5.png

              

    diab_rlm6.png

    Il faut être très prudent avec la régression logistique binaire maximale car son algorithme de calcul des coefficients ne converge pas lorque qu'une variable permet de séparer complétement les groupes. Or, c'est le cas ici, car la variable glyhb assure une séparation complète de diabete puisque les classes de diabète ont été construites à l'aide de la variable glyhb avec un seuil de 7). Voici donc la "bonne" régression logistique binaire maximale sur la variable diagnostic de diabète (sans glyhb) :

    
              
          # données sans glyhb     
              
          diabqt  <- diabfr[,c("age","taille","poids","ceinture","hanches","rach")]     
              
          cat("# régression logistique maximale \n")     
              
          rlb <- glm( diabete ~ . ,data=diabqt,family="binomial")     
              
          print(summary(rlb))     
          yPredites <- predict(rlb,newdata=diabqt,type="response")     
          vauroc <- auroc(data.frame(diabete,yPredites))     
          cat("\nAuroc (ROCR) = ",vauroc,"\n")     
              
          # tracé des 6 graphiques de résidus dans des graphiques séparés     
              
          for (idg in (1:6)) {     
            gr(paste("diab_rlb",idg,".png",sep=""))     
            plot(rlb,which=idg)     
            dev.off()     
          } # fin pour idg     
              
    
    
              
         # régression logistique maximale     
              
         Call:     
         glm(formula = diabete ~ ., family = "binomial", data = diabqt)     
              
         Deviance Residuals:     
             Min       1Q   Median       3Q      Max     
         -1.9585  -0.5737  -0.3750  -0.2340   2.7056     
              
         Coefficients:     
                       Estimate Std. Error z value Pr(>|z|)     
         (Intercept)   5.351323  17.284591   0.310    0.757     
         age           0.056429   0.011454   4.926 8.37e-07 ***     
         taille        0.008105   0.020891   0.388    0.698     
         poids         0.017565   0.021405   0.821    0.412     
         ceinture      0.178441   0.173411   1.029    0.303     
         hanches      -0.141123   0.152249  -0.927    0.354     
         rach        -16.623357  19.467920  -0.854    0.393     
         ---     
         Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1     
              
         (Dispersion parameter for binomial family taken to be 1)     
              
             Null deviance: 325.37  on 381  degrees of freedom     
         Residual deviance: 273.29  on 375  degrees of freedom     
         AIC: 287.29     
              
         Number of Fisher Scoring iterations: 5     
              
              
         Auroc (ROCR) =  0.7916135     
              
    
    diab_rlb1.png

              

    diab_rlb2.png

              

    diab_rlb3.png

              

    diab_rlb4.png

              

    diab_rlb5.png

              

    diab_rlb6.png

    Seule l'age semble être une variable significative, dans ce modèle multivarié, avec une qualité de prédiction assez bonne (l'AUROC est de 0.79).

    Une "bonne" régression multiple se doit de tester les variables à retenir. Nous avons écrit la fonction rchModeleLogistique() pour cela :

    
              
          # données avec glyhb     
              
          diabqlqt  <- diabfr[,c("diabete","age","taille","poids","ceinture","hanches","rach","glyhb")]     
              
          cat("# recherche de la \"meilleure\" régression logistique binaire \n")     
              
          rchModeleLogistique(diabqlqt,TRUE)     
              
          # sans glyhb     
              
          rchModeleLogistique(diabqlqt[,-8],TRUE)     
              
              
    
    
              
         # recherche de la "meilleure" régression logistique binaire     
              
         Matrice des aic et des coefficients de la RLB     
              
                     AIC (Intercept)    age taille poids ceinture hanches     rach   glyhb AUROC     
         M07V00   16.000    -664.177  0.371 -1.841 1.282   -3.475   3.192  210.702  91.256 1.000     
         M07V01  295.239      -4.401  0.052     NA    NA       NA      NA       NA      NA 0.746     
         M07V02  329.292      -2.382     NA  0.004    NA       NA      NA       NA      NA 0.512     
         M07V03  320.905      -3.516     NA     NA 0.022       NA      NA       NA      NA 0.624     
         M07V04  309.914      -5.919     NA     NA    NA    0.042      NA       NA      NA 0.677     
         M07V05  322.373      -4.512     NA     NA    NA       NA   0.025       NA      NA 0.619     
         M07V06  315.128      -8.204     NA     NA    NA       NA      NA    7.250      NA 0.655     
         M07V07    4.000   -1355.601     NA     NA    NA       NA      NA       NA 192.122 1.000     
         M07V-01  14.000    -204.552     NA -2.120 1.434    0.646  -0.730 -246.069  95.736 1.000     
         M07V-02  14.000    -745.368  0.754     NA 1.424   -0.554   0.825 -157.755  96.531 1.000     
         M07V-03  14.000     159.082 -0.128 -1.486    NA    7.996  -5.191 -993.357 108.632 1.000     
         M07V-04  14.000    -312.147  0.191 -1.890 1.334       NA   0.012 -175.771  93.562 1.000     
         M07V-05  14.000    -309.091  0.195 -1.912 1.374   -0.057      NA -171.094  93.549 1.000     
         M07V-06  14.000    -476.305  0.291 -1.844 1.264   -1.598   1.534       NA  91.961 1.000     
         M07V-07 287.295       5.351  0.056  0.008 0.018    0.178  -0.141  -16.623      NA 0.792     
         M07VBS    4.000   -1355.601     NA     NA    NA       NA      NA       NA 192.122 1.000     
         M07VFS   16.000    -664.177  0.371 -1.841 1.282   -3.475   3.192  210.702  91.256 1.000     
         M07VMS    4.000   -1355.601     NA     NA    NA       NA      NA       NA 192.122 1.000     
              
         Meilleur modèle au sens d'AIC     
              
                AIC (Intercept) age taille poids ceinture hanches rach   glyhb AUROC     
         M07V07   4   -1355.601  NA     NA    NA       NA      NA   NA 192.122     1     
         M07VBS   4   -1355.601  NA     NA    NA       NA      NA   NA 192.122     1     
         M07VMS   4   -1355.601  NA     NA    NA       NA      NA   NA 192.122     1     
              
         Meilleur modèle au sens d'AUROC     
              
                 AIC (Intercept)     age  taille  poids ceinture hanches      rach    glyhb AUROC     
         M07V00   16   -664.1773  0.3705 -1.8413 1.2818  -3.4747  3.1925  210.7016  91.2559     1     
         M07V07    4  -1355.6011      NA      NA     NA       NA      NA        NA 192.1220     1     
         M07V-01  14   -204.5520      NA -2.1204 1.4342   0.6461 -0.7296 -246.0694  95.7361     1     
         M07V-02  14   -745.3679  0.7544      NA 1.4241  -0.5540  0.8253 -157.7554  96.5314     1     
         M07V-03  14    159.0815 -0.1279 -1.4864     NA   7.9955 -5.1915 -993.3570 108.6324     1     
         M07V-04  14   -312.1475  0.1907 -1.8897 1.3342       NA  0.0118 -175.7711  93.5622     1     
         M07V-05  14   -309.0910  0.1954 -1.9118 1.3741  -0.0573      NA -171.0938  93.5485     1     
         M07V-06  14   -476.3054  0.2906 -1.8441 1.2637  -1.5975  1.5339        NA  91.9611     1     
         M07VBS    4  -1355.6011      NA      NA     NA       NA      NA        NA 192.1220     1     
         M07VFS   16   -664.1773  0.3705 -1.8413 1.2818  -3.4747  3.1925  210.7016  91.2559     1     
         M07VMS    4  -1355.6011      NA      NA     NA       NA      NA        NA 192.1220     1     
              
         > warnings()     
         Messages d'avis :     
         1: glm.fit: algorithm did not converge     
         2: glm.fit: fitted probabilities numerically 0 or 1 occurred     
         3: glm.fit: algorithm did not converge     
         4: glm.fit: fitted probabilities numerically 0 or 1 occurred     
         5: glm.fit: algorithm did not converge     
         6: glm.fit: fitted probabilities numerically 0 or 1 occurred     
         7: glm.fit: algorithm did not converge     
         ...     
              
         Matrice des aic et des coefficients de la RLB     
              
                     AIC (Intercept)   age taille  poids ceinture hanches    rach AUROC     
         M06V00  287.295       5.351 0.056  0.008  0.018    0.178  -0.141 -16.623 0.792     
         M06V01  295.239      -4.401 0.052     NA     NA       NA      NA      NA 0.746     
         M06V02  329.292      -2.382    NA  0.004     NA       NA      NA      NA 0.512     
         M06V03  320.905      -3.516    NA     NA  0.022       NA      NA      NA 0.624     
         M06V04  309.914      -5.919    NA     NA     NA    0.042      NA      NA 0.677     
         M06V05  322.373      -4.512    NA     NA     NA       NA   0.025      NA 0.619     
         M06V06  315.128      -8.204    NA     NA     NA       NA      NA   7.250 0.655     
         M06V-01 313.620      -2.105    NA  0.003 -0.016    0.118  -0.058  -4.486 0.695     
         M06V-02 285.445       6.366 0.056     NA  0.022    0.172  -0.141 -15.925 0.792     
         M06V-03 285.973       3.884 0.054  0.017     NA    0.195  -0.136 -17.328 0.791     
         M06V-04 286.393     -11.613 0.056  0.006  0.020       NA   0.013   3.258 0.787     
         M06V-05 286.186     -10.406 0.055  0.008  0.017    0.020      NA   1.252 0.788     
         M06V-06 286.044      -8.903 0.055  0.006  0.018    0.032  -0.013      NA 0.789     
         M06VBS  281.789      -8.429 0.051     NA     NA    0.041      NA      NA 0.788     
         M06VFS  287.295       5.351 0.056  0.008  0.018    0.178  -0.141 -16.623 0.792     
         M06VMS  281.789      -8.429 0.051     NA     NA    0.041      NA      NA 0.788     
              
         Meilleur modèle au sens d'AIC     
              
                     AIC (Intercept)    age taille poids ceinture hanches rach AUROC     
         M06VBS 281.7887     -8.4295 0.0506     NA    NA   0.0411      NA   NA 0.788     
         M06VMS 281.7887     -8.4295 0.0506     NA    NA   0.0411      NA   NA 0.788     
              
         Meilleur modèle au sens d'AUROC     
              
                      AIC (Intercept)    age taille poids ceinture hanches     rach  AUROC     
         M06V-02 285.4455      6.3656 0.0561     NA 0.022   0.1718 -0.1408 -15.9252 0.7923     
              
              
    

    Comme on peut le voir, l'age seul permet d'obtenir une AUROC 0.75, ce qui montre bien qu'elle est très importante pour "expliquer" la variable binaire du diagnostic de diabète. La régression linéaire multiple semble indiquer la même chose, et "explique" au mieux la variable quantitative glyhb.

    
          # données     
              
          diabqlqt  <- diabfr[,c("age","taille","poids","ceinture","hanches","rach","glyhb")]     
              
          # régression linéaire multiple     
              
          rlm <- lm(glyhb ~ .,data=diabqlqt)     
          print(summary(rlm))     
          print(rlm)     
              
    
    
              
         Call:     
         lm(formula = glyhb ~ ., data = diabqlqt)     
              
         Residuals:     
             Min      1Q  Median      3Q     Max     
         -3.4957 -1.1636 -0.4675  0.2990 10.3255     
              
         Coefficients:     
                      Estimate Std. Error t value Pr(>|t|)     
         (Intercept)  4.448949  11.827761   0.376    0.707     
         age          0.042322   0.007343   5.763 1.78e-08 ***     
         taille       0.015031   0.014089   1.067    0.287     
         poids        0.002336   0.015730   0.148    0.882     
         ceinture     0.091837   0.120486   0.762    0.446     
         hanches     -0.058051   0.105307  -0.551    0.582     
         rach        -6.840462  13.290786  -0.515    0.607     
         ---     
         Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1     
              
         Residual standard error: 2.069 on 359 degrees of freedom     
         Multiple R-squared:  0.1542,	Adjusted R-squared:   0.14     
         F-statistic: 10.91 on 6 and 359 DF,  p-value: 3.654e-11     
              
              
         Call:     
         lm(formula = glyhb ~ ., data = diabqlqt)     
              
         Coefficients:     
         (Intercept)          age       taille        poids     ceinture      hanches         rach     
            4.448949     0.042322     0.015031     0.002336     0.091837    -0.058051    -6.840462     
              
              
    

 

 

retour gH    Retour à la page principale de   (gH)