Nous allons importer un fichier de données portant sur les revenus de 17000 ménages tunisiens en 2021. Il est tiré de l’enquête consommation et revenu de l’INS dont on trouvera la description détaillée en cliquant ici
On commence par charger les données contenues dans le fichier enq_INS_conso_menages_2021.RDS à l’aide de la fonction readRDS() qui permet de lire les fichiers sauvegardés sans le format interne de R et on affiche les 6 premières lignes
# Importe les données au format interne de Rbase<-readRDS("data/ENQ-TUN-2021/enq_INS_conso_menages_2021.RDS") head(base)
id reg mil sex age mat ins csp nbp pvr rev
1 1 GT urbain homme 59 marie primaire retraité 6 FALSE 5103
2 2 GT urbain homme 52 marie primaire employé 5 FALSE 5486
3 3 GT urbain femme 34 divorce secondaire chomeur 2 FALSE 5962
4 4 GT urbain homme 65 marie primaire inactif 2 FALSE 3699
5 5 GT urbain homme 35 marie secondaire ouvrier 4 FALSE 5058
6 6 GT urbain homme 43 marie primaire ouvrier 5 FALSE 3741
Liste des variables
On a légèrement changé le fichier initial de l’INS en simplifiant les noms des variables et en fusionnant certaines modalités. Les variables proposées sont les suivantes :
id : identifiant du ménages de 1 à 17114
reg : région de résidence (NE, NO, CE, CO, SE, SO + Grand Tunis)
mil : milieu de résidence (urbain ou rural)
sex : sexe du chef de ménage
age : age du chef de ménage
mat : situation matrimoniale (célbataire, marié, veuf, divorcé)
ins : instruction du chef de ménage (aucune, primaire, secondaire, supérieur)
csp : catégorie socio professionnelle du chef de ménage (simplifiée)
nbp : nombre de personnes composant le ménage
pauv: situation de pauvreté selon les critères de l’INS (Oui/Non)
rev : revenu moyen par personnes en DT / an
Selection du tableau à analyser
On suppose qu’on ne s’intéresse qu’à quelques variables
reg mil sex age ins pvr rev
1 GT urbain homme 59 primaire FALSE 5103
2 GT urbain homme 52 primaire FALSE 5486
3 GT urbain femme 34 secondaire FALSE 5962
4 GT urbain homme 65 primaire FALSE 3699
5 GT urbain homme 35 secondaire FALSE 5058
6 GT urbain homme 43 primaire FALSE 3741
Résumé rapide
On effectue un résumé rapide du tableau à l’aide de la fonction summary():
summary(don)
reg mil sex age ins
GT:3944 urbain:10836 homme:13996 Min. : 19.00 aucun :3742
NE:2458 rural : 6278 femme: 3118 1st Qu.: 46.00 primaire :6979
NO:2502 Median : 56.00 secondaire:4647
CE:2862 Mean : 56.34 supérieur :1746
CO:2330 3rd Qu.: 66.00
SE:1845 Max. :109.00
SO:1173
pvr rev
Mode :logical Min. : 185
FALSE:14665 1st Qu.: 3035
TRUE :2449 Median : 4429
Mean : 5519
3rd Qu.: 6496
Max. :526271
2. ANALYSE D’UNE VARIABLE QUALITATIVE (type factor ou logic)
Choix de la variables
Nous allons prendre comme exemple la variable ins que l’on va extraire du tableau pour en faire un vecteur X qui est de type factor
X <-don$insclass(X)
[1] "factor"
2.1 tableau de dénombrement
Pour dénomber une variable qualitative, on utilise l’instruction table() qui crée un objet particulier qui n’est ni un data.frame, ni une matrix.
création et affichage du tableau
tab<-table(X)tab
X
aucun primaire secondaire supérieur
3742 6979 4647 1746
2.1 tableau de dénombrement
Ajout du total
Un objet de type table peut être manipulé par des fonctions spéciales comme addmargins()
tab2<-addmargins(tab)tab2
X
aucun primaire secondaire supérieur Sum
3742 6979 4647 1746 17114
Transformation en fréquence
On peut également passer en fréquence avec la fonction prop.table()
tab3<-prop.table(tab)tab3
X
aucun primaire secondaire supérieur
0.2186514 0.4077948 0.2715321 0.1020217
Transformation en pourcentage
On peut finalement afficher le résultat sous une forme élégante :
tab4<-100*addmargins(tab3)tab4
X
aucun primaire secondaire supérieur Sum
21.86514 40.77948 27.15321 10.20217 100.00000
2.3 Visualiation
La fonction plot() s’applique à la plupart de objets R. Elle s’adapte au type d’objet et va chercher la fonction la plus adaptée au type de variable. Dans le cas d’une variable de type factor, la fonction plot() appelle en réalité la fonction barplot() après avoir effectué le dénombrement avec table()
Diagramme en bâtons
# Ecriture simpleplot(X)
# Ecriture équivalente# barplot(table(X))
plot amélioré
plot(X,col=c("orange","yellow","lightyellow","lightgreen"), main="Niveau d'instruction des chefs de ménages",xlab ="niveau", ylab ="Nombre de ménages",sub ="Source : INS, 2021")
3. ANALYSE D’UNE VARIABLE QUANTITATIVE
3.1 Valeurs centrales et paramètres de dispersion
fonctions élémentaires
Une variable numérique peut faire l’objet d’un ensemble de résumés statistiques à l’aide de fonctions élémentaires
min() : minimum
max() : maximum
mean() : moyenne
sd() : écart-type
sum() : somme
On va prendre l’exemple du revenu moyen par habitant
X <- don$revmin(X)
[1] 185
max(X)
[1] 526271
mean(X)
[1] 5519.385
sd(X)
[1] 7036.663
quantiles
Pour calculer les quantiles on peut utiliser la fonction quantile() en paramétrant la valeur de fréquence cumulée ascendante
La fonction boxplot() permet de visualiser une distribution sous forme de boîte à moustache où l’on repère facilement :
la médiane
les quartiles Q1 et Q3
le minimum et le maximum
les valeurs extrêmes
Boxplot simple
boxplot(X)
Boxplot améliorée
boxplot(X,horizontal =TRUE, col ="gray80",main ="Revenu par habitant des ménages",xlab ="en DT",outline = F )
3.4 Histogramme
Dans le cas d’une variable quantitative continue, la visualisation la plus logique est l’histogramme que l’on peut tracer avec la fonction hist(). Celle-ci comporte plusieurs paramètres que l’on peut visualiser en allant dans l’onglet Help et en tapant le nom de la fonction. On retiendra surtout ici
breaks : contrôle le choix des classes
probability : affiche la densité et non pas l’effectif des classes
Histogramme simple
X<-don$revhist(X)
Histogramme amélioré
X<-don$rev# Choix des classesmybreaks<-c(min(X),1000,2000,3000,4000,5000,6000,7000,8000,9000,10000,11000, 12000, 13000, 14000, 15000,16000,17000, 18000, 19000, 20000, max(X))hist(X,breaks = mybreaks, col="lightyellow",main ="Revenu des ménages tunisiens en 2021",sub ="Source : INS, 2021",xlab ="en DT par personne et par an",ylab ="Probabilité",xlim=c(0,20000))
Histogramme superbe
X<-don$rev# Choix des classesmybreaks<-c(min(X),1000,2000,3000,4000,5000,6000,7000,8000,9000,10000,11000, 12000, 13000, 14000, 15000,16000,17000, 18000, 19000, 20000, max(X))hist(X,breaks = mybreaks, col="lightyellow",main ="Revenu des ménages tunisiens en 2021",sub ="Source : INS, 2021",xlab ="en DT par personne et par an",ylab ="Probabilité",xlim=c(0,20000))# Ajout d'une courbe de Probabilité lisséelines(density(X,bw =sd(X)/2),col="red", lwd=2)# Ajout de la moyenne et de la médianeabline(v=mean(X), col="blue")abline(v=median(X), col="green")
4. A VOUS DE JOUER !
Objectif
Vous allez maintenant essayer de reprendre les programmes précédents en analysant successivement une variable qualitative et une variable quantitative.