library(questionr)
library(vcd)
library(car) 
library(dplyr)
library(ggplot2)
library(FactoMineR)
library(explor)

Dans cette partie nous allons utiliser un jeu de données hdv2003 inclus direcetement dans la librarie questionr de R . Le jeu de données est un extrait de l’enquête __histoire de vie_ réalisée par l’INSEE en 2003. Il contient 2000 individus et 20 variables parmi lesquelles : d’une part des variables décrivant les caractéristiques socio-démographiques des individus (age, sexe, nivetud, etc.), et d’autre part des variables décrivant leurs pratiques de loisirs (hard.rock, lecture.bd, peche.chasse, etc.)

Cette enquête part du postulat de départ que pour comprendre comment un individu s’intègre dans la société, il faut disposer à la fois d’informations objectives (situation professionnelle, situation familiale, état de santé, centres d’intérêts,etc.) mais aussi tenir compte d’éléments plus subjectifs.

Pour pus d’information regarder la site :

http://www.insee.fr/fr/themes/detail.asp?ref_id=fd-HDV03

Pour charger les données de l’enquête hdv2003, il suffit d’utiliser la fonction data(),

data(hdv2003)
names(hdv2003)
##  [1] "id"            "age"           "sexe"          "nivetud"      
##  [5] "poids"         "occup"         "qualif"        "freres.soeurs"
##  [9] "clso"          "relig"         "trav.imp"      "trav.satisf"  
## [13] "hard.rock"     "lecture.bd"    "peche.chasse"  "cuisine"      
## [17] "bricol"        "cinema"        "sport"         "heures.tv"

Ensuite, pour voir tous les données taper sur la console de R la commande View(hdv2003).

Une brève inspection des données

Visualisation des données

glimpse(hdv2003)
## Observations: 2,000
## Variables: 20
## $ id            (int) 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 1...
## $ age           (int) 28, 23, 59, 34, 71, 35, 60, 47, 20, 28, 65, 47, ...
## $ sexe          (fctr) Femme, Femme, Homme, Homme, Femme, Femme, Femme...
## $ nivetud       (fctr) Enseignement superieur y compris technique supe...
## $ poids         (dbl) 2634.3982, 9738.3958, 3994.1025, 5731.6615, 4329...
## $ occup         (fctr) Exerce une profession, Etudiant, eleve, Exerce ...
## $ qualif        (fctr) Employe, NA, Technicien, Technicien, Employe, E...
## $ freres.soeurs (int) 8, 2, 2, 1, 0, 5, 1, 5, 4, 2, 3, 4, 1, 5, 2, 3, ...
## $ clso          (fctr) Oui, Oui, Non, Non, Oui, Non, Oui, Non, Oui, No...
## $ relig         (fctr) Ni croyance ni appartenance, Ni croyance ni app...
## $ trav.imp      (fctr) Peu important, NA, Aussi important que le reste...
## $ trav.satisf   (fctr) Insatisfaction, NA, Equilibre, Satisfaction, NA...
## $ hard.rock     (fctr) Non, Non, Non, Non, Non, Non, Non, Non, Non, No...
## $ lecture.bd    (fctr) Non, Non, Non, Non, Non, Non, Non, Non, Non, No...
## $ peche.chasse  (fctr) Non, Non, Non, Non, Non, Non, Oui, Oui, Non, No...
## $ cuisine       (fctr) Oui, Non, Non, Oui, Non, Non, Oui, Oui, Non, No...
## $ bricol        (fctr) Non, Non, Non, Oui, Non, Non, Non, Oui, Non, No...
## $ cinema        (fctr) Non, Oui, Non, Oui, Non, Oui, Non, Non, Oui, Ou...
## $ sport         (fctr) Non, Oui, Oui, Oui, Non, Oui, Non, Non, Non, Ou...
## $ heures.tv     (dbl) 0.0, 1.0, 0.0, 2.0, 3.0, 2.0, 2.9, 1.0, 2.0, 2.0...
summary(hdv2003)
##        id              age           sexe     
##  Min.   :   1.0   Min.   :18.00   Homme: 899  
##  1st Qu.: 500.8   1st Qu.:35.00   Femme:1101  
##  Median :1000.5   Median :48.00               
##  Mean   :1000.5   Mean   :48.16               
##  3rd Qu.:1500.2   3rd Qu.:60.00               
##  Max.   :2000.0   Max.   :97.00               
##                                               
##                                                  nivetud   
##  Enseignement technique ou professionnel court       :463  
##  Enseignement superieur y compris technique superieur:441  
##  Derniere annee d'etudes primaires                   :341  
##  1er cycle                                           :204  
##  2eme cycle                                          :183  
##  (Other)                                             :256  
##  NA's                                                :112  
##      poids                            occup     
##  Min.   :   78.08   Exerce une profession:1049  
##  1st Qu.: 2221.82   Chomeur              : 134  
##  Median : 4631.19   Etudiant, eleve      :  94  
##  Mean   : 5535.61   Retraite             : 392  
##  3rd Qu.: 7626.53   Retire des affaires  :  77  
##  Max.   :31092.14   Au foyer             : 171  
##                     Autre inactif        :  83  
##                       qualif    freres.soeurs             clso     
##  Employe                 :594   Min.   : 0.000   Oui        : 936  
##  Ouvrier qualifie        :292   1st Qu.: 1.000   Non        :1037  
##  Cadre                   :260   Median : 2.000   Ne sait pas:  27  
##  Ouvrier specialise      :203   Mean   : 3.283                     
##  Profession intermediaire:160   3rd Qu.: 5.000                     
##  (Other)                 :144   Max.   :22.000                     
##  NA's                    :347                                      
##                          relig                             trav.imp  
##  Pratiquant regulier        :266   Le plus important           : 29  
##  Pratiquant occasionnel     :442   Aussi important que le reste:259  
##  Appartenance sans pratique :760   Moins important que le reste:708  
##  Ni croyance ni appartenance:399   Peu important               : 52  
##  Rejet                      : 93   NA's                        :952  
##  NSP ou NVPR                : 40                                     
##                                                                      
##          trav.satisf  hard.rock  lecture.bd peche.chasse cuisine   
##  Satisfaction  :480   Non:1986   Non:1953   Non:1776     Non:1119  
##  Insatisfaction:117   Oui:  14   Oui:  47   Oui: 224     Oui: 881  
##  Equilibre     :451                                                
##  NA's          :952                                                
##                                                                    
##                                                                    
##                                                                    
##  bricol     cinema     sport        heures.tv     
##  Non:1147   Non:1174   Non:1277   Min.   : 0.000  
##  Oui: 853   Oui: 826   Oui: 723   1st Qu.: 1.000  
##                                   Median : 2.000  
##                                   Mean   : 2.247  
##                                   3rd Qu.: 3.000  
##                                   Max.   :12.000  
##                                   NA's   :5
mean(hdv2003$heures.tv)
## [1] NA
mean(hdv2003$heures.tv, na.rm = TRUE)
## [1] 2.246566

Résumés numeriques avec summarise

summarise(group_by(hdv2003, occup), NbHomme = sum(sexe == "Homme", na.rm = TRUE),
          NbFemme = sum(sexe == "Femme", na.rm = TRUE))
## Source: local data frame [7 x 3]
## 
##                   occup NbHomme NbFemme
##                  (fctr)   (int)   (int)
## 1 Exerce une profession     520     529
## 2               Chomeur      54      80
## 3       Etudiant, eleve      48      46
## 4              Retraite     208     184
## 5   Retire des affaires      39      38
## 6              Au foyer       0     171
## 7         Autre inactif      30      53
summarise(group_by(hdv2003, sexe, occup), 
          age.min = min(age, na.rm = TRUE), age.max = max(age, na.rm = TRUE), 
          Moyenneheure.tv = mean(heures.tv, na.rm = TRUE))
## Source: local data frame [13 x 5]
## Groups: sexe [?]
## 
##      sexe                 occup age.min age.max Moyenneheure.tv
##    (fctr)                (fctr)   (int)   (int)           (dbl)
## 1   Homme Exerce une profession      18      63        1.920463
## 2   Homme               Chomeur      18      63        2.853846
## 3   Homme       Etudiant, eleve      18      34        1.400000
## 4   Homme              Retraite      48      92        2.826442
## 5   Homme   Retire des affaires      57      91        2.410256
## 6   Homme         Autre inactif      39      71        3.133333
## 7   Femme Exerce une profession      18      67        1.724953
## 8   Femme               Chomeur      18      63        2.888608
## 9   Femme       Etudiant, eleve      18      35        1.256522
## 10  Femme              Retraite      41      96        2.877174
## 11  Femme   Retire des affaires      57      93        2.844737
## 12  Femme              Au foyer      22      90        2.822222
## 13  Femme         Autre inactif      19      97        3.339623

Regroupemenet des modalités d’une variable qualitative

table(hdv2003$qualif)
## 
##       Ouvrier specialise         Ouvrier qualifie               Technicien 
##                      203                      292                       86 
## Profession intermediaire                    Cadre                  Employe 
##                      160                      260                      594 
##                    Autre 
##                       58
table(hdv2003$qualif, useNA = "ifany")
## 
##       Ouvrier specialise         Ouvrier qualifie               Technicien 
##                      203                      292                       86 
## Profession intermediaire                    Cadre                  Employe 
##                      160                      260                      594 
##                    Autre                     <NA> 
##                       58                      347
freq(hdv2003$qualif)
##                            n    % val%
## Ouvrier specialise       203 10.2 12.3
## Ouvrier qualifie         292 14.6 17.7
## Technicien                86  4.3  5.2
## Profession intermediaire 160  8.0  9.7
## Cadre                    260 13.0 15.7
## Employe                  594 29.7 35.9
## Autre                     58  2.9  3.5
## NA                       347 17.3   NA
levels(hdv2003$qualif)[1:2] <- "ouvrier"
freq(hdv2003$qualif)
##                            n    % val%
## ouvrier                  495 24.8 29.9
## Technicien                86  4.3  5.2
## Profession intermediaire 160  8.0  9.7
## Cadre                    260 13.0 15.7
## Employe                  594 29.7 35.9
## Autre                     58  2.9  3.5
## NA                       347 17.3   NA

Regarder aussi la variable hdv2003$qualif

freq(hdv2003$nivetud)
##                                                                   n    %
## N'a jamais fait d'etudes                                         39  2.0
## A arrete ses etudes, avant la derniere annee d'etudes primaires  86  4.3
## Derniere annee d'etudes primaires                               341 17.1
## 1er cycle                                                       204 10.2
## 2eme cycle                                                      183  9.2
## Enseignement technique ou professionnel court                   463 23.2
## Enseignement technique ou professionnel long                    131  6.6
## Enseignement superieur y compris technique superieur            441 22.1
## NA                                                              112  5.6
##                                                                 val%
## N'a jamais fait d'etudes                                         2.1
## A arrete ses etudes, avant la derniere annee d'etudes primaires  4.6
## Derniere annee d'etudes primaires                               18.1
## 1er cycle                                                       10.8
## 2eme cycle                                                       9.7
## Enseignement technique ou professionnel court                   24.5
## Enseignement technique ou professionnel long                     6.9
## Enseignement superieur y compris technique superieur            23.4
## NA                                                                NA

Il est important de remarquer que la variable nivetud est détaillée en pas moins de huit modalités dont certaines sont peu représentées (seulement 39 individus soit 2 % n’ont jamais fait d’études par exemple). Afin d’améliorier notre modèle logistique, il peut être pertinent de regrouper certaines modalités.

levels(hdv2003$nivetud)<-c(rep("Primaire",3),rep("Secondaire",2),
                           rep("Technique/Professionnel",2),"Supéreur")

freq(hdv2003$nivetud)
##                           n    % val%
## Primaire                466 23.3 24.7
## Secondaire              387 19.4 20.5
## Technique/Professionnel 594 29.7 31.5
## Supéreur                441 22.1 23.4
## NA                      112  5.6   NA

Modification de noms des modalités d’une variable qualitative

levels(hdv2003$qualif) <- c("Ovrier", "Empl","Tech", "Interm", "Cadre", "Autre")
freq(hdv2003$qualif)
##          n    % val%
## Ovrier 495 24.8 29.9
## Empl    86  4.3  5.2
## Tech   160  8.0  9.7
## Interm 260 13.0 15.7
## Cadre  594 29.7 35.9
## Autre   58  2.9  3.5
## NA     347 17.3   NA

Découpage d’une variable quantitative en classes

On utilise pour cela la fonction cut de R. Par exemple,

table(cut(hdv2003$age, 5))
## 
## (17.9,33.8] (33.8,49.6] (49.6,65.4] (65.4,81.2] (81.2,97.1] 
##         454         628         556         319          43
table(cut(hdv2003$age, c(0, 20, 40, 60, 80, 100)))
## 
##   (0,20]  (20,40]  (40,60]  (60,80] (80,100] 
##       72      660      780      436       52
table(cut(hdv2003$age, c(0, 20, 40, 60, 80, 100),include.lowest = TRUE))
## 
##   [0,20]  (20,40]  (40,60]  (60,80] (80,100] 
##       72      660      780      436       52
table(cut(hdv2003$age, c(0, 20, 40, 60, 80, 100),include.lowest = TRUE,
          labels = c("<20ans", "21-40 ans", "41-60ans", "61-80ans",">80ans")))
## 
##    <20ans 21-40 ans  41-60ans  61-80ans    >80ans 
##        72       660       780       436        52

Quelques graphiques

tab1 <- table(hdv2003$sport, hdv2003$qualif)
tab1
##      
##       Ovrier Empl Tech Interm Cadre Autre
##   Non    381   44   83    117   401    38
##   Oui    114   42   77    143   193    20
chisq.test(tab1)
## 
##  Pearson's Chi-squared test
## 
## data:  tab1
## X-squared = 96.811, df = 5, p-value < 2.2e-16

ACM

Pour l’analyse qui suit, on ne conserve que les 7 variables qui décrivent les loisirs et 3 variables socio-démographiques : hard.rock, lecture.bd, peche.chasse, cuisine, bricol, cinema, sport, age, sexe, qualif .

hdv2003.A <- select(hdv2003,hard.rock, lecture.bd, peche.chasse, cuisine, 
                    bricol, cinema, sport, age, sexe, qualif)
glimpse(hdv2003.A)
## Observations: 2,000
## Variables: 10
## $ hard.rock    (fctr) Non, Non, Non, Non, Non, Non, Non, Non, Non, Non...
## $ lecture.bd   (fctr) Non, Non, Non, Non, Non, Non, Non, Non, Non, Non...
## $ peche.chasse (fctr) Non, Non, Non, Non, Non, Non, Oui, Oui, Non, Non...
## $ cuisine      (fctr) Oui, Non, Non, Oui, Non, Non, Oui, Oui, Non, Non...
## $ bricol       (fctr) Non, Non, Non, Oui, Non, Non, Non, Oui, Non, Non...
## $ cinema       (fctr) Non, Oui, Non, Oui, Non, Oui, Non, Non, Oui, Oui...
## $ sport        (fctr) Non, Oui, Oui, Oui, Non, Oui, Non, Non, Non, Oui...
## $ age          (int) 28, 23, 59, 34, 71, 35, 60, 47, 20, 28, 65, 47, 6...
## $ sexe         (fctr) Femme, Femme, Homme, Homme, Femme, Femme, Femme,...
## $ qualif       (fctr) Cadre, NA, Empl, Empl, Cadre, Cadre, Ovrier, Ovr...
MCA.hdv2003.A <- MCA(hdv2003.A, ncp=5, quanti.sup =8, quali.sup=9:10,  graph=FALSE)
barplot(MCA.hdv2003.A$eig[, 2], main="Histogramme des valeurs propres",
        names.arg=rownames(MCA.hdv2003.A$eig), xlab="Axes", ylab="Pourcentage d'inertie")

Taper sur la console de R la commande explor(MCA.hdv2003.mod).

#quantile(hdv2003.A$age)
hdv2003.A$age <- cut(hdv2003.A$age, breaks=quantile(hdv2003.A$age))
glimpse(hdv2003.A)
## Observations: 2,000
## Variables: 10
## $ hard.rock    (fctr) Non, Non, Non, Non, Non, Non, Non, Non, Non, Non...
## $ lecture.bd   (fctr) Non, Non, Non, Non, Non, Non, Non, Non, Non, Non...
## $ peche.chasse (fctr) Non, Non, Non, Non, Non, Non, Oui, Oui, Non, Non...
## $ cuisine      (fctr) Oui, Non, Non, Oui, Non, Non, Oui, Oui, Non, Non...
## $ bricol       (fctr) Non, Non, Non, Oui, Non, Non, Non, Oui, Non, Non...
## $ cinema       (fctr) Non, Oui, Non, Oui, Non, Oui, Non, Non, Oui, Oui...
## $ sport        (fctr) Non, Oui, Oui, Oui, Non, Oui, Non, Non, Non, Oui...
## $ age          (fctr) (18,35], (18,35], (48,60], (18,35], (60,97], (18...
## $ sexe         (fctr) Femme, Femme, Homme, Homme, Femme, Femme, Femme,...
## $ qualif       (fctr) Cadre, NA, Empl, Empl, Cadre, Cadre, Ovrier, Ovr...
MCA.hdv2003.A <- MCA(hdv2003.A, ncp=5, quali.sup=8:10, graph=FALSE)

Taper la commande explor(MCA.hdv2003.A).

Modele Logistique

table(hdv2003$sport, hdv2003$cuisine)
##      
##       Non Oui
##   Non 759 518
##   Oui 360 363
odds.ratio(table(hdv2003$sport, hdv2003$cuisine))
## 
##  Fisher's Exact Test for Count Data
## 
## data:  x
## p-value = 3.646e-05
## alternative hypothesis: true odds ratio is not equal to 1
## 95 percent confidence interval:
##  1.224159 1.782856
## sample estimates:
## odds ratio 
##    1.47713
hdv2003.glm=glm(cinema ~ sexe + age, data=hdv2003, family=binomial)
odds.ratio(hdv2003.glm)
##                 OR  2.5 % 97.5 %      p    
## (Intercept) 10.412  7.464 14.637 <2e-16 ***
## sexeFemme    1.143  0.939  1.393 0.1838    
## age          0.942  0.936  0.949 <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Etudier l’effet de l’âge, du sexe, du niveau d’étude, de la pratique religieuse et du nombre moyen l’heures passées à regarder la télévision par jour.

hdv2003.B <- select(hdv2003,age, sexe, nivetud, relig, heures.tv,sport)
glimpse(hdv2003.B)
## Observations: 2,000
## Variables: 6
## $ age       (int) 28, 23, 59, 34, 71, 35, 60, 47, 20, 28, 65, 47, 63, ...
## $ sexe      (fctr) Femme, Femme, Homme, Homme, Femme, Femme, Femme, Ho...
## $ nivetud   (fctr) Supéreur, NA, Primaire, Supéreur, Primaire, Techniq...
## $ relig     (fctr) Ni croyance ni appartenance, Ni croyance ni apparte...
## $ heures.tv (dbl) 0.0, 1.0, 0.0, 2.0, 3.0, 2.0, 2.9, 1.0, 2.0, 2.0, 1....
## $ sport     (fctr) Non, Oui, Oui, Oui, Non, Oui, Non, Non, Non, Oui, N...
glm(sport ~ ., data = hdv2003.B, family = binomial(logit))
## 
## Call:  glm(formula = sport ~ ., family = binomial(logit), data = hdv2003.B)
## 
## Coefficients:
##                      (Intercept)                               age  
##                        0.1741588                        -0.0278996  
##                        sexeFemme                 nivetudSecondaire  
##                       -0.3623013                         0.9185028  
##   nivetudTechnique/Professionnel                   nivetudSupéreur  
##                        1.0233422                         1.8467521  
##      religPratiquant occasionnel   religAppartenance sans pratique  
##                       -0.1315989                        -0.0200906  
## religNi croyance ni appartenance                        religRejet  
##                       -0.2749081                        -0.3384755  
##                 religNSP ou NVPR                         heures.tv  
##                       -0.0006283                        -0.1164885  
## 
## Degrees of Freedom: 1882 Total (i.e. Null);  1871 Residual
##   (117 observations deleted due to missingness)
## Null Deviance:       2407 
## Residual Deviance: 2088  AIC: 2112