Analyser ses données

Author

Marie Lesclingand

Published

February 18, 2026

1 Préalable : le chargement des extensions et de la base R

Utilisation de 4 packages : # questionr (déjà installé), tidyverse (déjà installé), gtsummary et gt (à installer)

1.0.1 Chargement des extensions avec la fonction library

library(questionr)
library(tidyverse)
library(gtsummary)
library(gt)

1.0.2 Activation du thème “fr” de gt_summary pour franciser l’affichage (virgule décimale, etc)

set_gtsummary_theme(theme_gtsummary_language("fr"))
options(
  OutDec = ",",   # pour les virgules
  big.mark = " "  # pour l’espace des milliers
)

1.0.3 Chargement de la base avec la fonction load

load("../DATA/bns.RData")

!! Astuce : il est également possible de le faire en cliquant sur le fichier dans la fenêtre Fichiers (bas à droite)

2 Sorties brutes

2.1 Tris à plat

2.1.1 Sortie systématisée des tris à plat

Utilisation de l’instruction lapply (du package de {base}) avec l’instruction freq (du package {questionr})

l’application lapply (pour liste apply) applique une même fonction (ici freq) à chaque élément d’un objet et renvoie ensuite les résultats sous forme de liste

2 étapes :

  • Création d’un objet qui garde les variables dont on souhaite avoir les tris à plat (en distinguant variable d’intérêt et variables socio-démographiques, donc 2 objets)
  • Application sur cet objet en ayant bien précisé la base dans laquelle les variables sont présentes de l’instruction lapply et freq et sauvegarde dans une table de données

Exemple avec les variables d’intérêt

vi <- c("UTILINT", "NET", "ORDIPERSO", "ORDIPRO", "TAB", "SMARTPHO_f", "ENCEINTE_f", "CONN_SANTE", "CONN_SECURITE", "CONN_DOMOTIQUE", "CONN_MENAGER", "IA_PRO", "IA_PERSO")
tap_vi<-lapply(bns[vi],freq)
tap_vi
$UTILINT
                               n    % val%
Tous les jours              3120 80,9 80,9
Une à deux fois par semaine  243  6,3  6,3
Plus rarement                120  3,1  3,1
Jamais                       374  9,7  9,7
NA                             1  0,0   NA

$NET
       n    % val%
Oui 2957 76,6 76,6
Non  901 23,4 23,4

$ORDIPERSO
             n    % val%
Plusieurs 1048 27,2 27,2
Un        2192 56,8 56,9
Aucun      610 15,8 15,8
NA           8  0,2   NA

$ORDIPRO
             n    % val%
Plusieurs  220  5,7  5,8
Un         793 20,6 20,9
Aucun     2782 72,1 73,3
NA          63  1,6   NA

$TAB
       n    % val%
Oui 1923 49,8 50,2
Non 1907 49,4 49,8
NA    28  0,7   NA

$SMARTPHO_f
       n    % val%
Oui 3373 87,4 87,4
Non  485 12,6 12,6

$ENCEINTE_f
       n    % val%
Oui  968 25,1 29,8
Non 2285 59,2 70,2
NA   605 15,7   NA

$CONN_SANTE
                                                    n    % val%
Vous en possédez déjà                             895 23,2 28,0
Vous en utiliserez probablement un à l'avenir     588 15,2 18,4
Vous n'en utiliserez probablement pas à l'avenir 1708 44,3 53,5
NA                                                667 17,3   NA

$CONN_SECURITE
                                                    n    % val%
Vous en possédez déjà                             736 19,1 23,3
Vous en utiliserez probablement un à l'avenir     842 21,8 26,7
Vous n'en utiliserez probablement pas à l'avenir 1576 40,9 50,0
NA                                                704 18,2   NA

$CONN_DOMOTIQUE
                                                    n    % val%
Vous en possédez déjà                             630 16,3 19,9
Vous en utiliserez probablement un à l'avenir     831 21,5 26,3
Vous n'en utiliserez probablement pas à l'avenir 1703 44,1 53,8
NA                                                694 18,0   NA

$CONN_MENAGER
                                                    n    % val%
Vous en possédez déjà                             554 14,4 17,3
Vous en utiliserez probablement un à l'avenir     721 18,7 22,5
Vous n'en utiliserez probablement pas à l'avenir 1930 50,0 60,2
NA                                                653 16,9   NA

$IA_PRO
       n    % val%
Oui  713 18,5 18,6
Non 3130 81,1 81,4
NA    15  0,4   NA

$IA_PERSO
       n    % val%
Oui  903 23,4 23,5
Non 2939 76,2 76,5
NA    16  0,4   NA

Exemple avec les variables socio-démographiques

vsd <- c("CLAGE", "GENRE", "PCS", "DIPL", "AGGLO")
tap_vsd <- lapply(bns[vsd],freq)
tap_vsd
$CLAGE
                  n    % val%
18-24 ans       256  6,6  6,6
25-39 ans       686 17,8 17,8
40-59 ans      1399 36,3 36,3
60-69 ans       623 16,1 16,1
70 ans et plus  894 23,2 23,2

$GENRE
         n  % val%
Femme 2045 53   53
Homme 1813 47   47

$PCS
                                                                     n    %
Agri. exploitant, artisan·e, commerçant·e et chef·fe d'entreprise  191  5,0
Cadre et profession intellectuelle supérieure                      383  9,9
Profession Intermédiaire                                           459 11,9
Employé·e                                                          572 14,8
Ouvrier·ère                                                        355  9,2
Personne au foyer                                                  258  6,7
Autre inactif·ve                                                   244  6,3
Retraité·e                                                        1396 36,2
                                                                  val%
Agri. exploitant, artisan·e, commerçant·e et chef·fe d'entreprise  5,0
Cadre et profession intellectuelle supérieure                      9,9
Profession Intermédiaire                                          11,9
Employé·e                                                         14,8
Ouvrier·ère                                                        9,2
Personne au foyer                                                  6,7
Autre inactif·ve                                                   6,3
Retraité·e                                                        36,2

$DIPL
                        n    % val%
Non diplômé           363  9,4  9,4
BEPC                 1254 32,5 32,5
BAC                   729 18,9 18,9
Diplômé du supérieur 1512 39,2 39,2

$AGGLO
                             n    % val%
Communes rurales           957 24,8 24,8
2 000 à 19 999 habitants   626 16,2 16,2
20 000 à 99 999 habitants  562 14,6 14,6
100 000 habitants et plus 1193 30,9 30,9
Agglomération parisienne   520 13,5 13,5

Astuce : on peut afficher les tables de données qui sauvegardent les tris à plat dans la fenêtre Données

2.1.2 Sauvegarde des tris à plat

Sauvegarde des tris à plat au format RData

save(bns,tap_vi,file="../TAB-FIG/tap_vi.RData")
save(bns,tap_vsd,file="../TAB-FIG/tp_vsd.RData")

2.2 Tris croisés : 5 étapes

2.2.1 Etape 1 : exécution et sauvegarde du tri croisé

Fonction table(var_expl,var_int)

Exemple : utilisation quotidienne d’internet et classes d’âges

tab1<-table(bns$CLAGE,bns$utiltlj)
tab1
                
                 Utilise internet tous les jours
  18-24 ans                                  178
  25-39 ans                                  569
  40-59 ans                                 1266
  60-69 ans                                  542
  70 ans et plus                             565
                
                 N'utilise pas internet tous les jours
  18-24 ans                                         78
  25-39 ans                                        117
  40-59 ans                                        133
  60-69 ans                                         81
  70 ans et plus                                   328

2.2.2 Etape 2 : calcul des % lignes

Fonction lprop(objet qui contient le tri croisé)

lprop(tab1) 
                
                 Utilise internet tous les jours
  18-24 ans       69,5                          
  25-39 ans       82,9                          
  40-59 ans       90,5                          
  60-69 ans       87,0                          
  70 ans et plus  63,3                          
  Ensemble        80,9                          
                
                 N'utilise pas internet tous les jours Total
  18-24 ans       30,5                                 100,0
  25-39 ans       17,1                                 100,0
  40-59 ans        9,5                                 100,0
  60-69 ans       13,0                                 100,0
  70 ans et plus  36,7                                 100,0
  Ensemble        19,1                                 100,0

2.2.3 Etape 3 : Affichage des effectifs théoriques

Vérifier qu’aucun effectif n’est inférieur à 1 et qu’il n’y a pas plus de 20% des cases <5)

Fonction chisq.test avec option $expected

chisq.test(tab1)$expected
                
                 Utilise internet tous les jours
  18-24 ans                             207,0832
  25-39 ans                             554,9183
  40-59 ans                            1131,6775
  60-69 ans                             503,9564
  70 ans et plus                        722,3645
                
                 N'utilise pas internet tous les jours
  18-24 ans                                   48,91677
  25-39 ans                                  131,08167
  40-59 ans                                  267,32253
  60-69 ans                                  119,04356
  70 ans et plus                             170,63547

2.2.4 Etape 4 : la sortie des résultats du test du Khi²

Fonction chisq.test

chisq.test(tab1)

    Pearson's Chi-squared test

data:  tab1
X-squared = 301,12, df = 4, p-value < 2,2e-16

Les résultats du test du Khi² :

  • X-sqared : valeur du Khi² du tableau ;
  • df : degrés de liberté du tableau : produit du (nombre de modalités en lignes -1) par le (nombre de modalités en colonnes – 1)
  • p-value : valeur du risque d’erreur associé au test statistique (autrement dit à l’hypothèse nulle d’indépendance, autrement dit que le résultat soit dû au hasard)

2.2.5 Etape : conservation de l’info en commentaire

Effet significatif (*) de l’âge** sur l’utilisation quotidienne d’internet

2.3 Croisement de la même variable avec d’autres facteurs explicatifs

2.3.1 Avec le genre

tab2<-table(bns$GENRE,bns$utiltlj)
lprop(tab2)
          
           Utilise internet tous les jours
  Femme     80,3                          
  Homme     81,5                          
  Ensemble  80,9                          
          
           N'utilise pas internet tous les jours Total
  Femme     19,7                                 100,0
  Homme     18,5                                 100,0
  Ensemble  19,1                                 100,0
chisq.test(tab2)$expected
       
        Utilise internet tous les jours N'utilise pas internet tous les jours
  Femme                         1653,43                              390,5699
  Homme                         1466,57                              346,4301
chisq.test(tab2)

    Pearson's Chi-squared test with Yates' continuity correction

data:  tab2
X-squared = 0,80445, df = 1, p-value = 0,3698

Effet non significatif (ns) du genre sur l’utilisation quotidienne d’internet

2.3.2 Avec la PCS

tab3<-table(bns$PCS,bns$utiltlj)
lprop(tab3)
                                                                   
                                                                    Utilise internet tous les jours
  Agri. exploitant, artisan·e, commerçant·e et chef·fe d'entreprise  85,3                          
  Cadre et profession intellectuelle supérieure                      86,7                          
  Profession Intermédiaire                                           91,1                          
  Employé·e                                                          87,8                          
  Ouvrier·ère                                                        83,1                          
  Personne au foyer                                                  87,6                          
  Autre inactif·ve                                                   70,9                          
  Retraité·e                                                         72,5                          
  Ensemble                                                           80,9                          
                                                                   
                                                                    N'utilise pas internet tous les jours
  Agri. exploitant, artisan·e, commerçant·e et chef·fe d'entreprise  14,7                                
  Cadre et profession intellectuelle supérieure                      13,3                                
  Profession Intermédiaire                                            8,9                                
  Employé·e                                                          12,2                                
  Ouvrier·ère                                                        16,9                                
  Personne au foyer                                                  12,4                                
  Autre inactif·ve                                                   29,1                                
  Retraité·e                                                         27,5                                
  Ensemble                                                           19,1                                
                                                                   
                                                                    Total
  Agri. exploitant, artisan·e, commerçant·e et chef·fe d'entreprise 100,0
  Cadre et profession intellectuelle supérieure                     100,0
  Profession Intermédiaire                                          100,0
  Employé·e                                                         100,0
  Ouvrier·ère                                                       100,0
  Personne au foyer                                                 100,0
  Autre inactif·ve                                                  100,0
  Retraité·e                                                        100,0
  Ensemble                                                          100,0
chisq.test(tab3)$expected
                                                                   
                                                                    Utilise internet tous les jours
  Agri. exploitant, artisan·e, commerçant·e et chef·fe d'entreprise                        154,5035
  Cadre et profession intellectuelle supérieure                                            309,8159
  Profession Intermédiaire                                                                 371,2938
  Employé·e                                                                                462,7016
  Ouvrier·ère                                                                              287,1662
  Personne au foyer                                                                        208,7011
  Autre inactif·ve                                                                         197,3762
  Retraité·e                                                                              1128,4418
                                                                   
                                                                    N'utilise pas internet tous les jours
  Agri. exploitant, artisan·e, commerçant·e et chef·fe d'entreprise                              36,49650
  Cadre et profession intellectuelle supérieure                                                  73,18408
  Profession Intermédiaire                                                                       87,70625
  Employé·e                                                                                     109,29842
  Ouvrier·ère                                                                                    67,83381
  Personne au foyer                                                                              49,29894
  Autre inactif·ve                                                                               46,62380
  Retraité·e                                                                                    266,55821
chisq.test(tab3)

    Pearson's Chi-squared test

data:  tab3
X-squared = 147,32, df = 7, p-value < 2,2e-16

Effet significatif (*) de la PCS** sur l’utilisation quotidienne d’internet (en partie lié à l’âge)

2.3.3 Avec le diplôme

bns$DIPL <- bns$DIPL |>
  fct_recode(
    NULL = "Elèves"
  )
tab4<-table(bns$DIPL,bns$utiltlj)
lprop(tab4)
                      
                       Utilise internet tous les jours
  Non diplômé           49,3                          
  BEPC                  79,6                          
  BAC                   84,8                          
  Diplômé du supérieur  87,6                          
  Ensemble              80,9                          
                      
                       N'utilise pas internet tous les jours Total
  Non diplômé           50,7                                 100,0
  BEPC                  20,4                                 100,0
  BAC                   15,2                                 100,0
  Diplômé du supérieur  12,4                                 100,0
  Ensemble              19,1                                 100,0
chisq.test(tab4)$expected
                      
                       Utilise internet tous les jours
  Non diplômé                                 293,6375
  BEPC                                       1013,5753
  BAC                                         589,7018
  Diplômé du supérieur                       1223,0853
                      
                       N'utilise pas internet tous les jours
  Non diplômé                                       69,36246
  BEPC                                             239,42468
  BAC                                              139,29816
  Diplômé du supérieur                             288,91470
chisq.test(tab4)

    Pearson's Chi-squared test

data:  tab4
X-squared = 287,02, df = 3, p-value < 2,2e-16

Effet significatif (*) du diplôme** sur l’utilisation quotidienne d’internet (effet linéaire)

2.3.4 Avec la taille de l’agglomération

tab5<-table(bns$AGGLO,bns$utiltlj)
lprop(tab5)
                           
                            Utilise internet tous les jours
  Communes rurales           73,5                          
  2 000 à 19 999 habitants   80,8                          
  20 000 à 99 999 habitants  82,6                          
  100 000 habitants et plus  84,9                          
  Agglomération parisienne   83,6                          
  Ensemble                   80,9                          
                           
                            N'utilise pas internet tous les jours Total
  Communes rurales           26,5                                 100,0
  2 000 à 19 999 habitants   19,2                                 100,0
  20 000 à 99 999 habitants  17,4                                 100,0
  100 000 habitants et plus  15,1                                 100,0
  Agglomération parisienne   16,4                                 100,0
  Ensemble                   19,1                                 100,0
chisq.test(tab5)$expected
                           
                            Utilise internet tous les jours
  Communes rurales                                 774,1353
  2 000 à 19 999 habitants                         506,3832
  20 000 à 99 999 habitants                        454,6124
  100 000 habitants et plus                        965,0402
  Agglomération parisienne                         419,8289
                           
                            N'utilise pas internet tous les jours
  Communes rurales                                      182,86466
  2 000 à 19 999 habitants                              119,61680
  20 000 à 99 999 habitants                             107,38761
  100 000 habitants et plus                             227,95981
  Agglomération parisienne                               99,17112
chisq.test(tab5)

    Pearson's Chi-squared test

data:  tab5
X-squared = 50,202, df = 4, p-value = 3,277e-10

Effet significatif (*) de la taille de l’agglomération** sur l’utilisation quotidienne d’internet (dichotomie zone rurale / zone urbaine)

3 Sorties tabulaires synthétiques

Utilisation de la fonction tbl_summary {gtsummary} et de ses options

3.1 Exemple 1 : les objets connectés

conn <- select (bns, CONN_SANTE, CONN_SECURITE, CONN_DOMOTIQUE, CONN_MENAGER) # Sélection des variables du tableau dans un objet sur lequel on appliquera ensuite la fonction tbl_summary
conn %>%
  tbl_summary(
    statistic = everything() ~ "{p}", # Choix de la statistique (pourcentage)
    missing = "no", # N'affiche pas les valeurs manquantes
    label = list( # Intitulés plus explicites des variables
      CONN_SANTE ~ "la santé",
      CONN_SECURITE ~  "la sécurité",
      CONN_DOMOTIQUE ~ "la domotique",
      CONN_MENAGER ~ "l'électroménager"
    )
  ) %>%
  bold_labels() %>% # Met en gras les labels
  modify_header(
    label ~ "**Objet connecté relatif à**", # Modifie l'intitulé de la colonne Characteristic  
    stat_0 ~ "**Pourcentage**" # Modifie l'intitulé de la colonne N=
  ) %>%
  modify_caption("**Tableau 1. Situation par rapport aux objets connectés**") %>%
  modify_footnote(everything() ~ NA) %>% # Pour supprimer les notes automatiques
  modify_footnote(
      stat_0 ~ paste0("N = ", nrow(conn)), # Ajout d'une note avec l'effectif total
      label ~ "Quelle est votre situation par rapport aux objets connectés relatifs à ?" # Ajout d'une 2ème note qui explicite la question posée
  ) %>%
  as_gt() # Pour un affichage conforme dans le Viewer et en tant qu'image
Tableau 1. Situation par rapport aux objets connectés
Objet connecté relatif à1 Pourcentage2
la santé
    Vous en possédez déjà 28
    Vous en utiliserez probablement un à l'avenir 18
    Vous n'en utiliserez probablement pas à l'avenir 54
la sécurité
    Vous en possédez déjà 23
    Vous en utiliserez probablement un à l'avenir 27
    Vous n'en utiliserez probablement pas à l'avenir 50
la domotique
    Vous en possédez déjà 20
    Vous en utiliserez probablement un à l'avenir 26
    Vous n'en utiliserez probablement pas à l'avenir 54
l'électroménager
    Vous en possédez déjà 17
    Vous en utiliserez probablement un à l'avenir 22
    Vous n'en utiliserez probablement pas à l'avenir 60
1 Quelle est votre situation par rapport aux objets connectés relatifs à ?
2 N = 3858

3.2 Exemple 2 : les équipements numériques

Toutes les variables sont dichotomiques ==> affichage d’une seule modalité (car les deux modalités sont complémentaires l’une de l’autre)

equip <- select (bns, SMARTPHO_f, ORDIPERSO_r, TAB, ENCEINTE_f, ORDIPRO_r) # Selection des variables du tableau dans un nouvel objet sur lequel on appliquera ensuite la fonction tb_summary

equip %>%
  tbl_summary(
    type      = everything() ~ "dichotomous",
    value     = everything() ~ "Oui",         # modalité retenue : uniquement les oui
    statistic = everything() ~ "{p}",         # on affiche la proportion en %
    missing   = "no",                         # pas d'affichage des NA
    label     = list(
      SMARTPHO_f ~ "Smartphone",
      ORDIPERSO_r ~ "Ordinateur personnel",
      TAB ~ "Tablette",
      ENCEINTE_f ~ "Enceinte connectée",
      ORDIPRO_r ~ "Ordinateur professionnel"
    )
  ) %>%
  modify_header(
    label ~ "**Type d'équipement**",  # Pour afficher Equipement plutôt que Caractéristique
    stat_0 ~ "**Pourcentage**" # Pour afficher Pourcentage plutôt que N=4 066
  ) %>%
  modify_caption("**Tableau 2. Les équipements numériques**") %>%
  modify_footnote(everything() ~ NA) %>% # Pour supprimer les notes automatiques
  modify_footnote(
    update = list(
      stat_0 ~ paste0("N = ", nrow(equip)))  # Ajout d'une note avec l'effectif total
  )
Tableau 2. Les équipements numériques
Type d’équipement Pourcentage1
Smartphone 87
Ordinateur personnel 84
Tablette 50
Enceinte connectée 30
Ordinateur professionnel 27
1 N = 3858

3.3 Exemple 3 : les facteurs explicatifs de l’utilisation quotidienne d’internet

tlj <- select(bns, utiltlj, CLAGE, GENRE, PCS, DIPL, AGGLO) 
tlj %>%
  tbl_summary(
    by = utiltlj, # Variable d'intérêt ou variable de tri
    percent = "row", # Calcul des % lignes 
    missing = "no", # Pas d'affichage des NA (non pris en compte dans le calcul des %)
    statistic = everything() ~ "{p}", # Affichage des % uniquement
    digits = everything() ~ 0, # pas de décimale
    label = list(   # Renomme les noms des modalités
      CLAGE ~ "Classes d'âges",
      GENRE ~ "Genre",
      PCS ~ "Catégorie socio-professionnelle",
      DIPL ~ "Diplôme",
      AGGLO ~ "Taille de l'agglomération")
  ) %>%
  add_overall(last=TRUE) %>% # Ajoute la colonne Total (=100%)
  modify_header(
    label ~ "**Facteur explicatif**", # Affiche Facteur explicatif au lieu de caractéristique (par défaut)
    stat_1 ~ "Utilisation quotidienne d'internet (81%)", # Intitulé de la stat1 (modalité 1 de la variable d'intérêt)
    stat_2 ~ "Utilisation non quotidienne d'internet (19%)", # Intitulé de la stat2 (modalité 1 de la variable d'intérêt)
    stat_0 ~ "Total (100%)" # Intitulé de la stat_0 (colonne Total)
    ) %>%
    add_p () %>% # Affichage des p-value (par défaut, test du Khi²)
    bold_labels () %>% # Mise en gras des labels des variables
    modify_caption("**Tableau 3. Déterminants de l'utilisation quotidienne d'internet(%)**") %>% # Titre du tableau
    modify_footnote(everything() ~ NA) %>% # Pour supprimer les notes automatiques
    modify_footnote(
    p.value ~ "Test du Khi² d'indépendance") # Pour expliciter le test utilisé pour les p-values 
Tableau 3. Déterminants de l’utilisation quotidienne d’internet(%)
Facteur explicatif Utilisation quotidienne d’internet (81%) Utilisation non quotidienne d’internet (19%) Total (100%) p-valeur1
Classes d'âges


<0,001
    18-24 ans 70 30 100
    25-39 ans 83 17 100
    40-59 ans 90 10 100
    60-69 ans 87 13 100
    70 ans et plus 63 37 100
Genre


0,3
    Femme 80 20 100
    Homme 82 18 100
Catégorie socio-professionnelle


<0,001
    Agri. exploitant, artisan·e, commerçant·e et chef·fe d'entreprise 85 15 100
    Cadre et profession intellectuelle supérieure 87 13 100
    Profession Intermédiaire 91 9 100
    Employé·e 88 12 100
    Ouvrier·ère 83 17 100
    Personne au foyer 88 12 100
    Autre inactif·ve 71 29 100
    Retraité·e 72 28 100
Diplôme


<0,001
    Non diplômé 49 51 100
    BEPC 80 20 100
    BAC 85 15 100
    Diplômé du supérieur 88 12 100
Taille de l'agglomération


<0,001
    Communes rurales 73 27 100
    2 000 à 19 999 habitants 81 19 100
    20 000 à 99 999 habitants 83 17 100
    100 000 habitants et plus 85 15 100
    Agglomération parisienne 84 16 100
1 Test du Khi² d’indépendance

4 Quelques représentations graphiques

4.1 Installations et chargements des packages ggplot2 et scales

library(ggplot2)
library(scales)
colors() # Affichage des noms des couleurs
  [1] "white"                "aliceblue"            "antiquewhite"        
  [4] "antiquewhite1"        "antiquewhite2"        "antiquewhite3"       
  [7] "antiquewhite4"        "aquamarine"           "aquamarine1"         
 [10] "aquamarine2"          "aquamarine3"          "aquamarine4"         
 [13] "azure"                "azure1"               "azure2"              
 [16] "azure3"               "azure4"               "beige"               
 [19] "bisque"               "bisque1"              "bisque2"             
 [22] "bisque3"              "bisque4"              "black"               
 [25] "blanchedalmond"       "blue"                 "blue1"               
 [28] "blue2"                "blue3"                "blue4"               
 [31] "blueviolet"           "brown"                "brown1"              
 [34] "brown2"               "brown3"               "brown4"              
 [37] "burlywood"            "burlywood1"           "burlywood2"          
 [40] "burlywood3"           "burlywood4"           "cadetblue"           
 [43] "cadetblue1"           "cadetblue2"           "cadetblue3"          
 [46] "cadetblue4"           "chartreuse"           "chartreuse1"         
 [49] "chartreuse2"          "chartreuse3"          "chartreuse4"         
 [52] "chocolate"            "chocolate1"           "chocolate2"          
 [55] "chocolate3"           "chocolate4"           "coral"               
 [58] "coral1"               "coral2"               "coral3"              
 [61] "coral4"               "cornflowerblue"       "cornsilk"            
 [64] "cornsilk1"            "cornsilk2"            "cornsilk3"           
 [67] "cornsilk4"            "cyan"                 "cyan1"               
 [70] "cyan2"                "cyan3"                "cyan4"               
 [73] "darkblue"             "darkcyan"             "darkgoldenrod"       
 [76] "darkgoldenrod1"       "darkgoldenrod2"       "darkgoldenrod3"      
 [79] "darkgoldenrod4"       "darkgray"             "darkgreen"           
 [82] "darkgrey"             "darkkhaki"            "darkmagenta"         
 [85] "darkolivegreen"       "darkolivegreen1"      "darkolivegreen2"     
 [88] "darkolivegreen3"      "darkolivegreen4"      "darkorange"          
 [91] "darkorange1"          "darkorange2"          "darkorange3"         
 [94] "darkorange4"          "darkorchid"           "darkorchid1"         
 [97] "darkorchid2"          "darkorchid3"          "darkorchid4"         
[100] "darkred"              "darksalmon"           "darkseagreen"        
[103] "darkseagreen1"        "darkseagreen2"        "darkseagreen3"       
[106] "darkseagreen4"        "darkslateblue"        "darkslategray"       
[109] "darkslategray1"       "darkslategray2"       "darkslategray3"      
[112] "darkslategray4"       "darkslategrey"        "darkturquoise"       
[115] "darkviolet"           "deeppink"             "deeppink1"           
[118] "deeppink2"            "deeppink3"            "deeppink4"           
[121] "deepskyblue"          "deepskyblue1"         "deepskyblue2"        
[124] "deepskyblue3"         "deepskyblue4"         "dimgray"             
[127] "dimgrey"              "dodgerblue"           "dodgerblue1"         
[130] "dodgerblue2"          "dodgerblue3"          "dodgerblue4"         
[133] "firebrick"            "firebrick1"           "firebrick2"          
[136] "firebrick3"           "firebrick4"           "floralwhite"         
[139] "forestgreen"          "gainsboro"            "ghostwhite"          
[142] "gold"                 "gold1"                "gold2"               
[145] "gold3"                "gold4"                "goldenrod"           
[148] "goldenrod1"           "goldenrod2"           "goldenrod3"          
[151] "goldenrod4"           "gray"                 "gray0"               
[154] "gray1"                "gray2"                "gray3"               
[157] "gray4"                "gray5"                "gray6"               
[160] "gray7"                "gray8"                "gray9"               
[163] "gray10"               "gray11"               "gray12"              
[166] "gray13"               "gray14"               "gray15"              
[169] "gray16"               "gray17"               "gray18"              
[172] "gray19"               "gray20"               "gray21"              
[175] "gray22"               "gray23"               "gray24"              
[178] "gray25"               "gray26"               "gray27"              
[181] "gray28"               "gray29"               "gray30"              
[184] "gray31"               "gray32"               "gray33"              
[187] "gray34"               "gray35"               "gray36"              
[190] "gray37"               "gray38"               "gray39"              
[193] "gray40"               "gray41"               "gray42"              
[196] "gray43"               "gray44"               "gray45"              
[199] "gray46"               "gray47"               "gray48"              
[202] "gray49"               "gray50"               "gray51"              
[205] "gray52"               "gray53"               "gray54"              
[208] "gray55"               "gray56"               "gray57"              
[211] "gray58"               "gray59"               "gray60"              
[214] "gray61"               "gray62"               "gray63"              
[217] "gray64"               "gray65"               "gray66"              
[220] "gray67"               "gray68"               "gray69"              
[223] "gray70"               "gray71"               "gray72"              
[226] "gray73"               "gray74"               "gray75"              
[229] "gray76"               "gray77"               "gray78"              
[232] "gray79"               "gray80"               "gray81"              
[235] "gray82"               "gray83"               "gray84"              
[238] "gray85"               "gray86"               "gray87"              
[241] "gray88"               "gray89"               "gray90"              
[244] "gray91"               "gray92"               "gray93"              
[247] "gray94"               "gray95"               "gray96"              
[250] "gray97"               "gray98"               "gray99"              
[253] "gray100"              "green"                "green1"              
[256] "green2"               "green3"               "green4"              
[259] "greenyellow"          "grey"                 "grey0"               
[262] "grey1"                "grey2"                "grey3"               
[265] "grey4"                "grey5"                "grey6"               
[268] "grey7"                "grey8"                "grey9"               
[271] "grey10"               "grey11"               "grey12"              
[274] "grey13"               "grey14"               "grey15"              
[277] "grey16"               "grey17"               "grey18"              
[280] "grey19"               "grey20"               "grey21"              
[283] "grey22"               "grey23"               "grey24"              
[286] "grey25"               "grey26"               "grey27"              
[289] "grey28"               "grey29"               "grey30"              
[292] "grey31"               "grey32"               "grey33"              
[295] "grey34"               "grey35"               "grey36"              
[298] "grey37"               "grey38"               "grey39"              
[301] "grey40"               "grey41"               "grey42"              
[304] "grey43"               "grey44"               "grey45"              
[307] "grey46"               "grey47"               "grey48"              
[310] "grey49"               "grey50"               "grey51"              
[313] "grey52"               "grey53"               "grey54"              
[316] "grey55"               "grey56"               "grey57"              
[319] "grey58"               "grey59"               "grey60"              
[322] "grey61"               "grey62"               "grey63"              
[325] "grey64"               "grey65"               "grey66"              
[328] "grey67"               "grey68"               "grey69"              
[331] "grey70"               "grey71"               "grey72"              
[334] "grey73"               "grey74"               "grey75"              
[337] "grey76"               "grey77"               "grey78"              
[340] "grey79"               "grey80"               "grey81"              
[343] "grey82"               "grey83"               "grey84"              
[346] "grey85"               "grey86"               "grey87"              
[349] "grey88"               "grey89"               "grey90"              
[352] "grey91"               "grey92"               "grey93"              
[355] "grey94"               "grey95"               "grey96"              
[358] "grey97"               "grey98"               "grey99"              
[361] "grey100"              "honeydew"             "honeydew1"           
[364] "honeydew2"            "honeydew3"            "honeydew4"           
[367] "hotpink"              "hotpink1"             "hotpink2"            
[370] "hotpink3"             "hotpink4"             "indianred"           
[373] "indianred1"           "indianred2"           "indianred3"          
[376] "indianred4"           "ivory"                "ivory1"              
[379] "ivory2"               "ivory3"               "ivory4"              
[382] "khaki"                "khaki1"               "khaki2"              
[385] "khaki3"               "khaki4"               "lavender"            
[388] "lavenderblush"        "lavenderblush1"       "lavenderblush2"      
[391] "lavenderblush3"       "lavenderblush4"       "lawngreen"           
[394] "lemonchiffon"         "lemonchiffon1"        "lemonchiffon2"       
[397] "lemonchiffon3"        "lemonchiffon4"        "lightblue"           
[400] "lightblue1"           "lightblue2"           "lightblue3"          
[403] "lightblue4"           "lightcoral"           "lightcyan"           
[406] "lightcyan1"           "lightcyan2"           "lightcyan3"          
[409] "lightcyan4"           "lightgoldenrod"       "lightgoldenrod1"     
[412] "lightgoldenrod2"      "lightgoldenrod3"      "lightgoldenrod4"     
[415] "lightgoldenrodyellow" "lightgray"            "lightgreen"          
[418] "lightgrey"            "lightpink"            "lightpink1"          
[421] "lightpink2"           "lightpink3"           "lightpink4"          
[424] "lightsalmon"          "lightsalmon1"         "lightsalmon2"        
[427] "lightsalmon3"         "lightsalmon4"         "lightseagreen"       
[430] "lightskyblue"         "lightskyblue1"        "lightskyblue2"       
[433] "lightskyblue3"        "lightskyblue4"        "lightslateblue"      
[436] "lightslategray"       "lightslategrey"       "lightsteelblue"      
[439] "lightsteelblue1"      "lightsteelblue2"      "lightsteelblue3"     
[442] "lightsteelblue4"      "lightyellow"          "lightyellow1"        
[445] "lightyellow2"         "lightyellow3"         "lightyellow4"        
[448] "limegreen"            "linen"                "magenta"             
[451] "magenta1"             "magenta2"             "magenta3"            
[454] "magenta4"             "maroon"               "maroon1"             
[457] "maroon2"              "maroon3"              "maroon4"             
[460] "mediumaquamarine"     "mediumblue"           "mediumorchid"        
[463] "mediumorchid1"        "mediumorchid2"        "mediumorchid3"       
[466] "mediumorchid4"        "mediumpurple"         "mediumpurple1"       
[469] "mediumpurple2"        "mediumpurple3"        "mediumpurple4"       
[472] "mediumseagreen"       "mediumslateblue"      "mediumspringgreen"   
[475] "mediumturquoise"      "mediumvioletred"      "midnightblue"        
[478] "mintcream"            "mistyrose"            "mistyrose1"          
[481] "mistyrose2"           "mistyrose3"           "mistyrose4"          
[484] "moccasin"             "navajowhite"          "navajowhite1"        
[487] "navajowhite2"         "navajowhite3"         "navajowhite4"        
[490] "navy"                 "navyblue"             "oldlace"             
[493] "olivedrab"            "olivedrab1"           "olivedrab2"          
[496] "olivedrab3"           "olivedrab4"           "orange"              
[499] "orange1"              "orange2"              "orange3"             
[502] "orange4"              "orangered"            "orangered1"          
[505] "orangered2"           "orangered3"           "orangered4"          
[508] "orchid"               "orchid1"              "orchid2"             
[511] "orchid3"              "orchid4"              "palegoldenrod"       
[514] "palegreen"            "palegreen1"           "palegreen2"          
[517] "palegreen3"           "palegreen4"           "paleturquoise"       
[520] "paleturquoise1"       "paleturquoise2"       "paleturquoise3"      
[523] "paleturquoise4"       "palevioletred"        "palevioletred1"      
[526] "palevioletred2"       "palevioletred3"       "palevioletred4"      
[529] "papayawhip"           "peachpuff"            "peachpuff1"          
[532] "peachpuff2"           "peachpuff3"           "peachpuff4"          
[535] "peru"                 "pink"                 "pink1"               
[538] "pink2"                "pink3"                "pink4"               
[541] "plum"                 "plum1"                "plum2"               
[544] "plum3"                "plum4"                "powderblue"          
[547] "purple"               "purple1"              "purple2"             
[550] "purple3"              "purple4"              "red"                 
[553] "red1"                 "red2"                 "red3"                
[556] "red4"                 "rosybrown"            "rosybrown1"          
[559] "rosybrown2"           "rosybrown3"           "rosybrown4"          
[562] "royalblue"            "royalblue1"           "royalblue2"          
[565] "royalblue3"           "royalblue4"           "saddlebrown"         
[568] "salmon"               "salmon1"              "salmon2"             
[571] "salmon3"              "salmon4"              "sandybrown"          
[574] "seagreen"             "seagreen1"            "seagreen2"           
[577] "seagreen3"            "seagreen4"            "seashell"            
[580] "seashell1"            "seashell2"            "seashell3"           
[583] "seashell4"            "sienna"               "sienna1"             
[586] "sienna2"              "sienna3"              "sienna4"             
[589] "skyblue"              "skyblue1"             "skyblue2"            
[592] "skyblue3"             "skyblue4"             "slateblue"           
[595] "slateblue1"           "slateblue2"           "slateblue3"          
[598] "slateblue4"           "slategray"            "slategray1"          
[601] "slategray2"           "slategray3"           "slategray4"          
[604] "slategrey"            "snow"                 "snow1"               
[607] "snow2"                "snow3"                "snow4"               
[610] "springgreen"          "springgreen1"         "springgreen2"        
[613] "springgreen3"         "springgreen4"         "steelblue"           
[616] "steelblue1"           "steelblue2"           "steelblue3"          
[619] "steelblue4"           "tan"                  "tan1"                
[622] "tan2"                 "tan3"                 "tan4"                
[625] "thistle"              "thistle1"             "thistle2"            
[628] "thistle3"             "thistle4"             "tomato"              
[631] "tomato1"              "tomato2"              "tomato3"             
[634] "tomato4"              "turquoise"            "turquoise1"          
[637] "turquoise2"           "turquoise3"           "turquoise4"          
[640] "violet"               "violetred"            "violetred1"          
[643] "violetred2"           "violetred3"           "violetred4"          
[646] "wheat"                "wheat1"               "wheat2"              
[649] "wheat3"               "wheat4"               "whitesmoke"          
[652] "yellow"               "yellow1"              "yellow2"             
[655] "yellow3"              "yellow4"              "yellowgreen"         

4.2 Diagramme à bandes (ggplot)

Représentations graphiques des variables catégorielles

4.2.1 Une variable

Exemple : la possession d’un appareil connecté relatif à la santé (CONN_SANTE)

bns %>%
  filter(!is.na(CONN_SANTE)) %>% # n'affiche pas les NA
  count(CONN_SANTE) %>% # compte les effectifs pour chaque modalité
  mutate(freq=n/sum(n)) %>% # calcul du % (freq) pour chaque modalité
  ggplot(aes(x=reorder(CONN_SANTE,-freq),y=freq)) + # variable sur l'axe X et % sur axe Y et Le signe - devant freq permet d'ordonner du plus grand au plus petit
  geom_col(fill="#39ADAF") + # Choix de la couleur des bandes
  labs(
    x = "",
    y = "Pourcentage",
    title = "Figure 1. Possession d'un objet connecté relatif à la santé (%)"
  ) +
  scale_y_continuous(labels = percent) + # Affichage ss forme de % et non de proportion
  theme_minimal() + 
  theme(
    plot.title.position = "plot" # Pour afficher le titre en haut de la figure
  )

4.2.2 Plusieurs variables

On souhaite réaliser un seul diagramme avec les différents équipements numériques et uniquement les modalités “oui”

prop_oui <- function(x) {mean(x == "Oui", na.rm = TRUE)*100} # Creation d'une fonction utilitaire qui calcule les % de oui pondérés
equip_fig <- equip %>%
  summarise(
    SMARTPHO_f_oui = prop_oui(SMARTPHO_f),
    ORDIPERSO_r_oui = prop_oui(ORDIPERSO_r),
    TAB_oui = prop_oui(TAB),
    ENCEINTE_f_oui = prop_oui(ENCEINTE_f),
    ORDIPRO_r_oui = prop_oui(ORDIPRO_r)
  ) %>%
  pivot_longer(everything(),names_to = "variable",values_to = "Pourcentage") %>%
  # Remplace les noms affichés
  mutate(variable = recode(variable,
                           SMARTPHO_f_oui        = "Smartphone",
                           ORDIPERSO_r_oui  = "Ordinateur personnel",
                           TAB_oui    = "Tablette",
                           ENCEINTE_f_oui = "Enceinte",
                           ORDIPRO_r_oui    = "Ordinateur professionnel"),
         variable = fct_reorder(variable, Pourcentage, .desc = TRUE) 
  ) 
ggplot(equip_fig, aes(x = variable, y = Pourcentage)) +
  geom_col(width = 0.6, fill = "#4E79A7") +
  geom_text(aes(label = paste0(round(Pourcentage, 0), "%")), vjust = -0.5) +
  labs(
    title = "Figure 2. Les équipements des Français·es (%)",
    x = NULL,    y = NULL
  ) +
  theme_minimal() +
  theme(legend.position = "none")

4.3 Diagrammes en boites (boxplot)

Représentations graphiques des variables numériques

Exemples : HR_PHONE et HR_ECRAN2

Vérification du type et recodages des NA

  • Variable HR_ECRAN2
str(bns$HR_ECRAN2) # OK variable numérique
 num [1:3858] 21 5 20 9999 9999 ...
freq(bns$HR_ECRAN2) # Recoder les 9999 en NA
       n    % val%
0     34  0,9  0,9
1     32  0,8  0,8
2     59  1,5  1,5
3     65  1,7  1,7
4     42  1,1  1,1
5     82  2,1  2,1
6     56  1,5  1,5
7     69  1,8  1,8
8     51  1,3  1,3
9     24  0,6  0,6
10   201  5,2  5,2
11    10  0,3  0,3
12    45  1,2  1,2
13     6  0,2  0,2
14   100  2,6  2,6
15   158  4,1  4,1
16    20  0,5  0,5
17     5  0,1  0,1
18    15  0,4  0,4
19     3  0,1  0,1
20   360  9,3  9,3
21    81  2,1  2,1
22    13  0,3  0,3
23     6  0,2  0,2
24    46  1,2  1,2
25   147  3,8  3,8
26     5  0,1  0,1
27     6  0,2  0,2
28    82  2,1  2,1
29     3  0,1  0,1
30   339  8,8  8,8
31     1  0,0  0,0
32     7  0,2  0,2
33     1  0,0  0,0
34     3  0,1  0,1
35   136  3,5  3,5
36    13  0,3  0,3
37     2  0,1  0,1
38     8  0,2  0,2
39     4  0,1  0,1
40   203  5,3  5,3
41     1  0,0  0,0
42    22  0,6  0,6
43     2  0,1  0,1
44     3  0,1  0,1
45    33  0,9  0,9
46     1  0,0  0,0
47     1  0,0  0,0
48     9  0,2  0,2
49    10  0,3  0,3
50   162  4,2  4,2
54     2  0,1  0,1
55     5  0,1  0,1
56    15  0,4  0,4
58     2  0,1  0,1
60    67  1,7  1,7
63     4  0,1  0,1
64     2  0,1  0,1
65     3  0,1  0,1
66     1  0,0  0,0
68     1  0,0  0,0
70    72  1,9  1,9
72     5  0,1  0,1
75     4  0,1  0,1
77     3  0,1  0,1
78     3  0,1  0,1
79     1  0,0  0,0
80    28  0,7  0,7
84     3  0,1  0,1
86     1  0,0  0,0
90    10  0,3  0,3
91     1  0,0  0,0
98     2  0,1  0,1
99    11  0,3  0,3
100   31  0,8  0,8
104    1  0,0  0,0
110    1  0,0  0,0
111    1  0,0  0,0
112    2  0,1  0,1
120    4  0,1  0,1
125    1  0,0  0,0
130    2  0,1  0,1
140    2  0,1  0,1
150    9  0,2  0,2
155    1  0,0  0,0
159    1  0,0  0,0
168    4  0,1  0,1
9999 765 19,8 19,8
bns$HR_ECRAN2[bns$HR_ECRAN2 == 9999] <- NA
freq(bns$HR_ECRAN2) # Vérification OK
      n    % val%
0    34  0,9  1,1
1    32  0,8  1,0
2    59  1,5  1,9
3    65  1,7  2,1
4    42  1,1  1,4
5    82  2,1  2,7
6    56  1,5  1,8
7    69  1,8  2,2
8    51  1,3  1,6
9    24  0,6  0,8
10  201  5,2  6,5
11   10  0,3  0,3
12   45  1,2  1,5
13    6  0,2  0,2
14  100  2,6  3,2
15  158  4,1  5,1
16   20  0,5  0,6
17    5  0,1  0,2
18   15  0,4  0,5
19    3  0,1  0,1
20  360  9,3 11,6
21   81  2,1  2,6
22   13  0,3  0,4
23    6  0,2  0,2
24   46  1,2  1,5
25  147  3,8  4,8
26    5  0,1  0,2
27    6  0,2  0,2
28   82  2,1  2,7
29    3  0,1  0,1
30  339  8,8 11,0
31    1  0,0  0,0
32    7  0,2  0,2
33    1  0,0  0,0
34    3  0,1  0,1
35  136  3,5  4,4
36   13  0,3  0,4
37    2  0,1  0,1
38    8  0,2  0,3
39    4  0,1  0,1
40  203  5,3  6,6
41    1  0,0  0,0
42   22  0,6  0,7
43    2  0,1  0,1
44    3  0,1  0,1
45   33  0,9  1,1
46    1  0,0  0,0
47    1  0,0  0,0
48    9  0,2  0,3
49   10  0,3  0,3
50  162  4,2  5,2
54    2  0,1  0,1
55    5  0,1  0,2
56   15  0,4  0,5
58    2  0,1  0,1
60   67  1,7  2,2
63    4  0,1  0,1
64    2  0,1  0,1
65    3  0,1  0,1
66    1  0,0  0,0
68    1  0,0  0,0
70   72  1,9  2,3
72    5  0,1  0,2
75    4  0,1  0,1
77    3  0,1  0,1
78    3  0,1  0,1
79    1  0,0  0,0
80   28  0,7  0,9
84    3  0,1  0,1
86    1  0,0  0,0
90   10  0,3  0,3
91    1  0,0  0,0
98    2  0,1  0,1
99   11  0,3  0,4
100  31  0,8  1,0
104   1  0,0  0,0
110   1  0,0  0,0
111   1  0,0  0,0
112   2  0,1  0,1
120   4  0,1  0,1
125   1  0,0  0,0
130   2  0,1  0,1
140   2  0,1  0,1
150   9  0,2  0,3
155   1  0,0  0,0
159   1  0,0  0,0
168   4  0,1  0,1
NA  765 19,8   NA
  • Variable HR_PHONE
str(bns$HR_PHONE) # Variable de type character à numériser
 chr [1:3858] "24" "1" "20" "1" "1" "15" "28" "10" "10" "2" "6" "10" "4" ...
bns$HR_PHONE_n <- as.numeric(bns$HR_PHONE) # Pour passer du type character à numérique
str(bns$HR_PHONE_n)
 num [1:3858] 24 1 20 1 1 15 28 10 10 2 ...
freq(bns$HR_PHONE_n) # Recoder les 999 en NA
      n    % val%
0    22  0,6  0,7
1   156  4,0  5,0
2   169  4,4  5,4
3   134  3,5  4,3
4    87  2,3  2,8
5   138  3,6  4,4
6    64  1,7  2,1
7   132  3,4  4,2
8    91  2,4  2,9
9    18  0,5  0,6
10  285  7,4  9,1
11    7  0,2  0,2
12   57  1,5  1,8
13    5  0,1  0,2
14   89  2,3  2,9
15  177  4,6  5,7
16   27  0,7  0,9
17    2  0,1  0,1
18   16  0,4  0,5
19    2  0,1  0,1
20  308  8,0  9,9
21   45  1,2  1,4
22    7  0,2  0,2
23    4  0,1  0,1
24   29  0,8  0,9
25   75  1,9  2,4
26    3  0,1  0,1
27    2  0,1  0,1
28   25  0,6  0,8
29    2  0,1  0,1
30  159  4,1  5,1
31    1  0,0  0,0
32    4  0,1  0,1
33    3  0,1  0,1
34    2  0,1  0,1
35   58  1,5  1,9
36    3  0,1  0,1
38    1  0,0  0,0
39    1  0,0  0,0
40   76  2,0  2,4
42    5  0,1  0,2
43    1  0,0  0,0
45    9  0,2  0,3
48    6  0,2  0,2
49    2  0,1  0,1
50   50  1,3  1,6
53    2  0,1  0,1
54    1  0,0  0,0
55    2  0,1  0,1
56    3  0,1  0,1
60    9  0,2  0,3
64    1  0,0  0,0
65    1  0,0  0,0
66    1  0,0  0,0
67    1  0,0  0,0
70   21  0,5  0,7
72    1  0,0  0,0
75    2  0,1  0,1
80    3  0,1  0,1
90    3  0,1  0,1
91    1  0,0  0,0
99    5  0,1  0,2
100  14  0,4  0,4
105   1  0,0  0,0
120   5  0,1  0,2
125   1  0,0  0,0
130   2  0,1  0,1
140   1  0,0  0,0
150   3  0,1  0,1
160   2  0,1  0,1
168   4  0,1  0,1
999 468 12,1 15,0
NA  741 19,2   NA
bns$HR_PHONE_n[bns$HR_PHONE_n == 999] <- NA
freq(bns$HR_PHONE_n) # OK
       n    % val%
0     22  0,6  0,8
1    156  4,0  5,9
2    169  4,4  6,4
3    134  3,5  5,1
4     87  2,3  3,3
5    138  3,6  5,2
6     64  1,7  2,4
7    132  3,4  5,0
8     91  2,4  3,4
9     18  0,5  0,7
10   285  7,4 10,8
11     7  0,2  0,3
12    57  1,5  2,2
13     5  0,1  0,2
14    89  2,3  3,4
15   177  4,6  6,7
16    27  0,7  1,0
17     2  0,1  0,1
18    16  0,4  0,6
19     2  0,1  0,1
20   308  8,0 11,6
21    45  1,2  1,7
22     7  0,2  0,3
23     4  0,1  0,2
24    29  0,8  1,1
25    75  1,9  2,8
26     3  0,1  0,1
27     2  0,1  0,1
28    25  0,6  0,9
29     2  0,1  0,1
30   159  4,1  6,0
31     1  0,0  0,0
32     4  0,1  0,2
33     3  0,1  0,1
34     2  0,1  0,1
35    58  1,5  2,2
36     3  0,1  0,1
38     1  0,0  0,0
39     1  0,0  0,0
40    76  2,0  2,9
42     5  0,1  0,2
43     1  0,0  0,0
45     9  0,2  0,3
48     6  0,2  0,2
49     2  0,1  0,1
50    50  1,3  1,9
53     2  0,1  0,1
54     1  0,0  0,0
55     2  0,1  0,1
56     3  0,1  0,1
60     9  0,2  0,3
64     1  0,0  0,0
65     1  0,0  0,0
66     1  0,0  0,0
67     1  0,0  0,0
70    21  0,5  0,8
72     1  0,0  0,0
75     2  0,1  0,1
80     3  0,1  0,1
90     3  0,1  0,1
91     1  0,0  0,0
99     5  0,1  0,2
100   14  0,4  0,5
105    1  0,0  0,0
120    5  0,1  0,2
125    1  0,0  0,0
130    2  0,1  0,1
140    1  0,0  0,0
150    3  0,1  0,1
160    2  0,1  0,1
168    4  0,1  0,2
NA  1209 31,3   NA

Synthèse des principaux indicateurs de tendance centrale et de dispersion

summary(bns$HR_ECRAN2)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
    0,0    13,0    24,0    28,1    36,0   168,0     765 
summary(bns$HR_PHONE_n)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
    0,0     5,0    12,0    17,1    21,0   168,0    1209 

4.3.1 Une variable

Affichage séparé de chaque diagramme

boxplot(bns$HR_ECRAN2,main = "Figure 3. Nombre d'heures passées devant des écrans",col="orange")

boxplot(bns$HR_PHONE_n, main = "Figure 4. Nombre d'heures passées sur un smpartphone", col="lightblue") 

Affichage des deux diagrammes côte à côte

bp <- boxplot(bns$HR_ECRAN2, bns$HR_PHONE_n,
              names = c("Devant les écrans", "Sur le smartphone"),
              main  = "Figure 5. Comparaison du temps passé par semaine",
              ylab  = "Heures",
              col   = c("orange", "lightblue"))
# Statistiques tirées de l'objet 'bp'
q1  <- bp$stats[2, ]   # Q1
med <- bp$stats[3, ]   # Médiane
q3  <- bp$stats[4, ]   # Q3
# Moyennes (à calculer à part)
moy <- c(mean(bns$HR_ECRAN2_r, na.rm = TRUE),
         mean(bns$HR_PHONE_r,  na.rm = TRUE))
# Ajouts : un point pour la moyenne, et des étiquettes pour les 4 stats
points(1:2, moy, pch = 19, col = "red")
text(1:2, med, labels = paste0("Med=", round(med, 1)), pos = 3, cex = 0.8)
text(1:2, q1,  labels = paste0("Q1=",  round(q1, 1)),  pos = 1, cex = 0.8)
text(1:2, q3,  labels = paste0("Q3=",  round(q3, 1)),  pos = 3, cex = 0.8)

4.3.2 Plusieurs variables

Temps d’écran et âges

boxplot(HR_ECRAN2 ~ CLAGE, data = bns,
        main = "Figure 6. Temps d'écran selon les classes d'âge",
        xlab = "Classe d'âge",
        ylab = "Heures par jour",
        col  = "orange")

Temps d’écran et genre

boxplot(HR_ECRAN2 ~ GENRE, data = bns,
        main = "Figure 7. Temps d'écran selon le genre",
        xlab = "Genre",
        ylab = "Heures par jour",
        col  = "orange")

Temps d’écran et niveau de diplôme

boxplot(HR_ECRAN2 ~ DIPL, data = bns,
        main = "Figure 8. Temps d'écran selon le niveau d'étude",
        xlab = "Niveau d'étude",
        ylab = "Heures par jour",
        col  = "orange")