[STA2B] : Statistique bivariée : Y qualitative et X quantitative

GEO UNIV’R Tunisie 2024

Auteur·rice

Claude Grasland

Date de publication

2024-05-13

(1) PREPARATION DES DONNEES

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 que l’on peut télécharger librement en cliquant ici

Importation des données

On commence par charger les données contenues dans le fichier enq_INS_conso_menages_2021.RDS à l’aide de la fonction readRDS(). On tape ensuite la commande str()pour connaître les caractéristiques de l’objet.

# Importe les données au format interne de R
base<-readRDS("data/ENQ-TUN-2021/enq_INS_conso_menages_2021.RDS")
str(base)
'data.frame':   17114 obs. of  11 variables:
 $ id : num  1 2 3 4 5 6 7 8 9 10 ...
 $ reg: Factor w/ 7 levels "GT","NE","NO",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ mil: Factor w/ 2 levels "urbain","rural": 1 1 1 1 1 1 1 1 1 1 ...
 $ sex: Factor w/ 2 levels "homme","femme": 1 1 2 1 1 1 2 1 1 1 ...
 $ age: num  59 52 34 65 35 43 64 71 51 56 ...
 $ mat: Factor w/ 4 levels "celibataire",..: 3 3 2 3 3 3 4 3 3 3 ...
 $ ins: Factor w/ 4 levels "aucun","primaire",..: 2 2 3 2 3 2 1 3 3 2 ...
 $ csp: Factor w/ 8 levels "cadre","employé",..: 7 2 6 8 4 4 4 7 4 4 ...
 $ nbp: num  6 5 2 2 4 5 6 3 2 4 ...
 $ pvr: logi  FALSE FALSE FALSE FALSE FALSE FALSE ...
 $ rev: num  5103 5486 5962 3699 5058 ...

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

don<-base[,c("reg","mil","sex", "age","ins","rev")]
head(don)
  reg    mil   sex age        ins  rev
1  GT urbain homme  59   primaire 5103
2  GT urbain homme  52   primaire 5486
3  GT urbain femme  34 secondaire 5962
4  GT urbain homme  65   primaire 3699
5  GT urbain homme  35 secondaire 5058
6  GT urbain homme  43   primaire 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                                                                  
      rev        
 Min.   :   185  
 1st Qu.:  3035  
 Median :  4429  
 Mean   :  5519  
 3rd Qu.:  6496  
 Max.   :526271  
                 

On retient comme variable Y quantitative le revenu moyen annuel par personne du ménage. Par exemple si le revenu annuel est de 10000 DT et que ce ménage comporte 4 personnes, alors le revenu moyen annuel par personne sera de 2500 DT.

2. ANALYSE DE LA VARIABLE Y

Pour procéder à des tests statistiques paramétriques, il faut s’assurer que la variable quantitative Y est si possible normale (gaussienne) ou, au minimum unimodale et symétrique.

2.1 La distribution de Y est-elle normale ?

mybreaks <- quantile(don$rev,0:10/10)
par(mfrow=c(1,2))
hist(don$rev,
     breaks = mybreaks,
     col="lightyellow",
     probability = TRUE)
lines(density(don$rev,bw=1000),col="red",lwd=1)
boxplot(don$rev, col="lightyellow",horizontal = T)

La distribution ne semble pas du tout normale. Elle est très asymétrique et il y a des valeurs très exceptionnelles.

2.2 Elimination des valeurs exceptionnelles

On va retirer les individus dont le revenu dépasse 20 000 DT et créer un fichier don2

don2<-don[don$rev<20000,]
mybreaks <- quantile(don2$rev,0:10/10)
par(mfrow=c(1,2))
hist(don2$rev,
     breaks = mybreaks,
     col="lightyellow",
     probability = TRUE)
lines(density(don2$rev,bw=1000),col="red",lwd=1)
boxplot(don2$rev, col="lightyellow",horizontal = T)

Il demeure beaucoup de valeurs exceptionnelles et la dissymétrie n’est pas totalement éliminée. On décide donc de descendre juqu’à 15000

On va retirer les individus dont le revenu dépasse 10 000 DT et créer un fichier don3

don3<-don[don$rev<10000,]
mybreaks <- quantile(don3$rev,0:10/10)
par(mfrow=c(1,2))
hist(don3$rev,
     breaks = mybreaks,
     col="lightyellow",
     probability = TRUE)
lines(density(don3$rev,bw=1000),col="red",lwd=1)
boxplot(don3$rev, col="lightyellow",horizontal = T)

3. TEST D’EGALITE DES MOYENNES

3.1 Hypothèses

On considère une variable Y quantitative continue définie sur une population de réféence P et une variable X qualitative à deux modalités divisant P en deux sous population P1 et P2.

Soit par exemple la variable Y = rev et la variable X = mil. On peut se demander si les revenus des ménages urbains sont plus ou moins élevés que ceux des ménages ruraux.

Y<-don3$rev
nomY <-"Revenu par personne"

X<-don3$mil
nomX <- "Milieu"

3.2 Visualisations

Le plus simple est d’utiliser boxplot() en version de base …

boxplot(Y~X)

… ou améliorée

boxplot(Y~X,
        horizontal=T, 
        xlab = nomY, 
        ylab=nomX, 
        col="gray80")

3.3 Paramètres principaux

La fonction tapply() permet de calculer les paramètres statistiques de Y en fonction des modalités de X.

moy<-tapply(Y,X, mean)
ect<-tapply(Y,X,sd)
cv<-100*ect/moy
res<-cbind(moy,ect,cv)
res
            moy      ect      cv
urbain 5012.590 2029.743 40.4929
rural  3684.426 1778.546 48.2720

3.4 Test d’égalité des moyennes

Test de student

Le test de Student permet de tester l’hypothèse d’égalité des moyennes entre deux échantillons. Il suppose que la distribution est gaussienne.

t.test(Y~X)

    Welch Two Sample t-test

data:  Y by X
t = 43.062, df = 14200, p-value < 2.2e-16
alternative hypothesis: true difference in means between group urbain and group rural is not equal to 0
95 percent confidence interval:
 1267.708 1388.621
sample estimates:
mean in group urbain  mean in group rural 
            5012.590             3684.426 

Test de Wilcoxon

Le test de Wilcoxon permet également de tester l’hypothèse d’égalité des moyennes entre deux échantillons. Il ne suppose que la distribution est gaussienne car il travaille sur les rangs et non pas les valeurs.

wilcox.test(Y~X)

    Wilcoxon rank sum test with continuity correction

data:  Y by X
W = 40316246, p-value < 2.2e-16
alternative hypothesis: true location shift is not equal to 0

4. ANALYSE DE VARIANCE

Que faire lorsque X a plus de deux modalités ?

Supposons que nous voulions maintenant examiner la relation entre revenu et niveau d’instruction. On une peut commencer par réaliser une boxplot comme précédemment :

Y<-don3$rev
nomY <-"Revenu par personne"
X<-don3$ins
nomX <- "Niveau d'instruction"

boxplot(Y~X, horizontal=T)

On peut également construire un tableau de paramètres par modalités

moy<-tapply(Y,X, mean)
ect<-tapply(Y,X, sd)
cv=100*moy/ect

param<-data.frame(moy,ect,cv)

param
                moy      ect       cv
aucun      4216.892 1957.342 215.4398
primaire   4232.572 1951.893 216.8444
secondaire 4769.130 2032.135 234.6857
supérieur  5787.599 2162.304 267.6588

Impossible d’utiliser le test d’égalité de deux moyennes

Le test d’égalité des moyennes ne fonctionne que lorsque la variable qualitative Y n’a que deux modalités. On ne peut donc pas l’appliquer pour étudier la relation entre le revenu (Y) et le niveau d’instruction (X) car celui-ci comporte 4 modalités.

Le programme suivant provoquera une erreur :

t.test(Y~X)

Error in t.test.formula(Y ~ X) : grouping factor must have exactly 2 levels

Solution générale : l’analyse de variance

Y<-don3$rev
modele <- lm(Y~X)
summary(modele)

Call:
lm(formula = Y ~ X)

Residuals:
    Min      1Q  Median      3Q     Max 
-5337.6 -1522.6  -304.9  1293.3  5766.4 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  4216.89      33.25  126.81   <2e-16 ***
Xprimaire      15.68      41.24    0.38    0.704    
Xsecondaire   552.24      45.46   12.15   <2e-16 ***
Xsupérieur   1570.71      65.75   23.89   <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 1992 on 15614 degrees of freedom
Multiple R-squared:  0.04776,   Adjusted R-squared:  0.04758 
F-statistic:   261 on 3 and 15614 DF,  p-value: < 2.2e-16

Cette méthode étant plus complexe on attendra le cours sur la modélisation pour la discuter plus en détail.

A VOUS DE JOUER

Sexe du chef de ménage et revenu

Vous devez analyser l’existence d’une relation entre les variables revenu moyen annuel du ménage (Y) et sexe du chef de ménage (X).

Quelle est votre hypothèse H1 ?

Quelle est votre hypothèse H0 ?

flouze