[STA1] : Statistiques univariée

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 dont on trouvera la description détaillée en cliquant ici

Télécharger le jeux de données

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() 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 R
base<-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

don<-base[,c("reg","mil","sex", "age","ins","pvr","rev")]
head(don)
  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$ins
class(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 simple
plot(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$rev
min(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

  • quantile(X,0) : minimum
  • quantile(X,0.10) : D1 (premier décile)
  • quantile(X,0.25) : Q1 (premier quartile)
  • quantile(X,0.5) : Q2 (médiane)
  • quantile(X,0.75) : Q3 (troisième quartile)
  • quantile(X,0.90) : D9 (dernier décile)
  • quantile(X,1) : maximum

quantiles

X<-don$rev
quantile(X,0.5)
 50% 
4429 
sel<-c(0,0.25,0.5,0.75,1)
quantile(X,sel)
       0%       25%       50%       75%      100% 
   185.00   3035.00   4429.00   6495.75 526271.00 
sel<-c(0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1)
quantile(X,sel)
      0%      10%      20%      30%      40%      50%      60%      70% 
   185.0   2143.6   2757.0   3304.0   3854.0   4429.0   5104.0   5941.0 
     80%      90%     100% 
  7151.0   9480.4 526271.0 

3.2 Tableau de dénombrement (discrétisation)

Une variable quantitative peut être discrétisée avec cut(). Elle devient alors un facteur qu’on peut dénomber avec table()

XQ<-cut(don$rev, c(0, 500, 1000, 2000, 5000, 10000, 20000, 50000, 1000000))
table(XQ)
XQ
      (0,500]   (500,1e+03] (1e+03,2e+03] (2e+03,5e+03] (5e+03,1e+04] 
            7            92          1269          8664          5586 
(1e+04,2e+04] (2e+04,5e+04] (5e+04,1e+06] 
         1333           134            29 

3.3 Boîte à moustaches

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$rev
hist(X)

Histogramme amélioré

X<-don$rev

# Choix des classes
mybreaks<-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 classes
mybreaks<-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ée
lines(density(X,
              bw = sd(X)/2),
              col="red", lwd=2)

# Ajout de la moyenne et de la médiane
abline(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.