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).
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
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).
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