Eléments de statistique descriptive avec R
Michael Genin - [Link]@[Link]
04 mai 2017
Résumé
Ce document propose quelques instructions en language R afin de réaliser des analyses statistiques
descriptives univariées et bivariées. En fonction de la nature des variables, des indicateurs statistiques ainsi
que des représentations graphiques sont proposées. Dans cet exemple, les données sont issues du site de
Bruno Fallisard.
Table des matières
Données utilisées 2
Contexte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Présentation des données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Chargement de données 2
Définition du répertoire de travail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Chargement des données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Analyse descriptive univariée 3
Indicateurs statistiques pour variables quantitatives . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Représentations graphiques pour variables quantitatives . . . . . . . . . . . . . . . . . . . . . . . . 4
Compléments pour les variables quantitatives discrètes . . . . . . . . . . . . . . . . . . . . . . . . . 5
Indicateurs statistiques pour variables qualitatives . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Représentations graphiques pour variables qualitatives . . . . . . . . . . . . . . . . . . . . . . . . . 6
Analyse descriptive bivariée 8
1
Données utilisées
Contexte
Des études observationnelles ont suggéré que la faible consommation alimentaire ou les faibles concentrations
plasmatiques de rétinol, de bêta-carotène pourraient être associées à un risque accru de développer certains
types de cancer. Cependant, relativement peu d’études ont étudié les déterminants des concentrations
plasmatiques de ces micronutriments. Des chercheurs ont conçu une étude transversale portant sur 315
individus pour étudier la relation entre les caractéristiques personnelles et les facteurs alimentaires, et les
concentrations plasmatiques de rétinol, de bêta-carotène.
Présentation des données
— AGE : Age (en années)
— SEXE : 1=Masculin, 2=Féminin
— TABAC : 1=jamais, 2=autrefois, 3=actuellement
— TABAC_2 : oui, non, ancien
— BMI : poids/(taille2 )
— VITAMINES : 1=oui, souvent, 2=oui, pas souvent, 3=non
— CALORIES : Nombre de calories par jour
— GRAISSES : Grammes de graisse consommés par jour
— FIBRES : Grammes de fibre consommés par jour
— ALCOOL : Nombre de verres d’alcool consommés par semaine
— CHOLESTEROL : Cholesterol consommé (mg par jour).
— BETADIET : beta-carotene consommé (mcg par jour). (pro-vitamine A)
— RETDIET : retinol consommé (mcg par jour) (vitamine A)
— BETAPLASMA : beta-carotene plasmatique (ng/ml) (pro-vitamine A)
— RETPLASMA : Retinol plasmatique (ng/ml) (vitamine A)
— AGE_2 : Age discrétisé en classes : 0-30 ; 30-40 ; 40-50 ; 50-70 ; 70-100
— NB_ENF : nombre d’enfants
Chargement de données
Définition du répertoire de travail
Vous avez la possibilité de définir un Répertoire de travail dans lequel vous allez stocker votre script R, vos
données etc. . . Ceci est réalisé par la fonction suivante :
setwd("/Users/michaelgenin/Desktop/TP_StatDescr_IAE2017_R")
Cette fonction considère comme seul paramètre le chemin d’accès au répertoire que vous avez choisi. A tout
moment, vous pouvez vérifier le répertoire de travail courant en executant l’instruction suivante :
getwd()
## [1] "/Users/michaelgenin/Desktop/TP_StatDescr_IAE2017_R"
Chargement des données
Il existe une multitude de fonctions qui permettent de charger un fichier de données. Pour les besoins
de l’exemple, nous allons considérer uniquement la fonction [Link](). Cette fonction prend comme
2
principaux paramètres d’entrée le fichier à charger (file="[Link]"), le séparateur de colonnes dans le
fichier initial (sep=) et la présence (ou non) des noms de colonnes dans le fichier (header=). Dans notre
exemple, l’instruction de chargement du fichier est la suivante :
df<-[Link](file="[Link]",sep="\t",header=T)
Dans cet exemple, le fichier dans le répertoire de travail est intitulé "[Link]", le séparateur de colonnes est
le caractère tabulation codé "\t" et le fichier contient des noms de colonnes donc le paramètre header a pour
valeur TRUE qui se note true ou T. Le fichier de données est chargé dans l’environnement R et est affecté à
l’objet df. C’est cet objet, de type dataframe qui va faire l’objet de manipulations par la suite. Vous pouvez
vérifier le nombre de d’observations (lignes) et le nombre de variables (colonnes) du fichier précedemment
charger en utilisant les instructions suivantes :
nrow(df) # nombre de lignes du fichier de données chargé
## [1] 315
ncol(df) # nombre de colonnes du fichier de données chargé
## [1] 18
dim(df) #nombre de lignes et nombre de colonnes
## [1] 315 18
Vous pouvez également afficher les premières lignes (6 par défaut) du fichier chargé afin de vérifier l’intégrité
des données :
head(df)
## age sexe homme tabac tabac2 bmi vitamine calories graisses fibres
## 1 64 2 1 2 oui 21.48380 1 1298.8 57.0 6.3
## 2 76 2 1 1 non 23.87631 1 1032.5 50.1 15.8
## 3 38 2 1 2 oui 20.01080 2 2372.3 83.6 19.1
## 4 40 2 1 2 oui 25.14062 3 2449.5 97.5 26.5
## 5 72 2 1 1 non 20.98504 1 1952.1 82.6 16.2
## 6 40 2 1 2 oui 27.52136 3 1366.9 56.0 9.6
## alcool cholesterol betadiet retdiet betaplasma retplasma age2 nb_enf
## 1 0.0 170.3 1945 890 200 915 50-70 3
## 2 0.0 75.8 2653 451 124 727 70-100 4
## 3 14.1 257.9 6321 660 328 721 30-40 2
## 4 0.5 332.6 1061 864 153 615 40-50 1
## 5 0.0 170.8 2863 1209 92 799 70-100 3
## 6 1.3 154.6 1729 1439 148 654 40-50 0
L’accès à une colonne d’un dataframe se fait par la notation $ : nom_du_dataframe$nom_variable. Dans
notre exemple, pour accdéder aux valeurs de la variable bmi contenue dans le dataframe df nous utiliserons
l’instruction suivante :
df$bmi
Analyse descriptive univariée
Indicateurs statistiques pour variables quantitatives
Moyenne : mean() ; écart-type : sd(). La fonction summary() permet de donner le minimum, Q1 , la médiane,
la moyenne, Q3 , et le maximum d’une série statistique. Prenons l’exemple de l’âge dans le fichier de données.
3
La moyenne de l’âge :
mean(df$age)
## [1] 50.14603
L’écart-type de l’âge :
sd(df$age)
## [1] 14.57523
Plus d’informations sont données par la fonction summary()
summary(df$age)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 19.00 39.00 48.00 50.15 62.50 83.00
Représentations graphiques pour variables quantitatives
Un histogramme d’une série statistique est donné par la fonction hist() :
hist(df$age,main="Distribution de l'âge",ylab="Effectifs",xlab="Age en années",col="darkred")
Distribution de l'âge
50
40
30
Effectifs
20
10
0
20 30 40 50 60 70 80
Age en années
Ici nous considérons la variable df$age. Les paramètres main, ylab,xlab et col permettent respectivement
de définir le titre du graphique, des axes des ordonnées, des abscisses et la couleur des barres.
Une boîte à moustache est réalisée en utilisant la fonction boxplot :
boxplot(df$age,col="darkred",[Link]=0.8,[Link]=0.8,ylab="Age")
4
80
70
60
Age
50
40
30
20
Compléments pour les variables quantitatives discrètes
Il est possible de générer un tableau des effectifs pour chacune des valeurs de la variable quantitative discrète.
Prenons l’exemple du nombre d’enfants :
table(df$nb_enf)
##
## 0 1 2 3 4 5 6
## 28 56 126 53 26 13 13
Un tableau des effectifs cumulés est réalisé par l’instruction suivante :
cumsum(table(df$nb_enf))
## 0 1 2 3 4 5 6
## 28 84 210 263 289 302 315
Pour travailler en fréquences et non en effectifs, il suffit de diviser l’ensemble des résultats par le nombre
total d’individus qui constituent l’échantillon :
table(df$nb_enf)/nrow(df) # fréquences
##
## 0 1 2 3 4 5
## 0.08888889 0.17777778 0.40000000 0.16825397 0.08253968 0.04126984
## 6
## 0.04126984
cumsum(table(df$nb_enf))/nrow(df) # fréquences cumulées
## 0 1 2 3 4 5
## 0.08888889 0.26666667 0.66666667 0.83492063 0.91746032 0.95873016
## 6
## 1.00000000
5
Indicateurs statistiques pour variables qualitatives
Un tableau de contingence peut être réalisé pour une variable en utilisant la fonction table(). Prenons
comme exemple la variable tabac2 qui correspond au statut tabagique :
table(df$tabac2)
##
## ancien non oui
## 43 157 115
Pour considérer les fréquences, il faut utiliser la fonction [Link]() de la manière suivante :
[Link](table(df$tabac2))
##
## ancien non oui
## 0.1365079 0.4984127 0.3650794
Représentations graphiques pour variables qualitatives
Un diagramme en barre des effectifs est réalisé via la commande barplot(). Dans l’exemple du statut
tabagique :
barplot(table(df$tabac2),col="darkred",main="Distribution du nombre d'enfants",
xlab="Nombre d'enfants",ylab="Effectifs")
Distribution du nombre d'enfants
150
100
Effectifs
50
0
ancien non oui
Nombre d'enfants
Afin de réaliser un diagramme en barre des effectifs cumulés, l’instruction est quasiment identique à
l’exception de l’ajout de la fonction cumsum() :
barplot(cumsum(table(df$tabac2)),col="darkred",main="Distribution du nombre d'enfants",
xlab="Nombre d'enfants",ylab="Effectifs")
6
Distribution du nombre d'enfants
100 150 200 250 300
Effectifs
50
0
ancien non oui
Nombre d'enfants
Un diagramme circulaire est réalisé au moyen de la fonction pie(). Dans l’exemple du statut tabagique :
pie(table(df$tabac2))
non
ancien
oui
Afin de rajouter les fréquences ainsi qu’une légende :
colors<-c("gray","lightgreen","darkred")
pie(table(df$tabac2),col=colors,main="Répartition de la consommation de tabac",
labels=round(table(df$tabac2)/nrow(df),digits=3))
legend("bottomleft", xpd = TRUE, legend = unique(df$tabac2),fill=colors)
7
Répartition de la consommation de tabac
0.498
0.137
oui
non 0.365
ancien
Analyse descriptive bivariée
To be continued. . .