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)
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 1Il 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 17Malheureusement, 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 8Il 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.000000Il 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 %.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.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.39Et 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 ' ' 1Passons 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 ' ' 1Les 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-16Heureusement, 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.0000La 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)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"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) )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 occurredLes 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: exhaustiveIl 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.7916135Seule 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.7923Comme 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 à la page principale de (gH)