Analyses statistiques descriptives de données numériques – partie 2

Dans ce nouveau post, je vais vous montrer comment réaliser simplement des analyses statistiques descriptives de vos données numériques avec le logiciel R. Comme expliqué dans la première partie de cette série sur les analyses statistiques descriptives il s’agit d’estimer un certain nombre de paramètres de position et de dispersion.

Pour réaliser facilement des analyses statistiques descriptives, il est important que vos données soient structurées selon un format dit tidy. Selon ce format :

1. les variables sont en colonne, et chaque variable mesurée doit correspondre à une seule colonne.
2. les observations sont en lignes, et si plusieurs observations ontété faites pour une variable donnée, ces observations doivent êtresur des lignes différentes.
3. A l’intersection des lignes et des colonnes se trouvent les valeursmesurées.

Pour illustrer cet article, je vais utiliser le jeu de données iris qui se trouve dans le package dataset qui est chargé par défaut par le logiciel R à chaque ouverture de session. Il n’est donc pas nécessaire d’importer le jeu de données dans R. Néanmoins les étapes pour importer un jeu de données dans le logiciel R sont décrites ici.

1. Le jeu de données iris

Pour visualiser les 10 premières lignes du jeu de données iris, utilisez head(iris,10). De la même façon vous pouvez afficher les 5 (par exemple) dernières lignes en utilisant tail(iris,5).

 

Le jeu de données *iris* est bien sous la forme dit *tidy*, puisque les variables sont en colonne, les observations en ligne, et les valeurs mesurées à l’intersection des lignes et des colonnes.

Le jeu de données *iris* est composé de 5 variables:

– Sepal.Length
– Sepal.Width
– Petal.Length
– Petal.Width
– Species

Les quatre premières sont des variables numériques continues, et la cinquième est une variable catégorielle à 3 modalités (setosa /versicolor / virginica).

La commande str(iris) permet de connaitre les types des variables (numérique / catégorielle (ou facteur)), alors que la commande levels(iris$Species) permet d’avoir accès aux différentes modalités de la variable catégorielle.

 

 

2.Utilisation des fonctions summary, var et sd

2.1 Utilisation de la fonction summary

Ces 3 fonctions appartiennent respectivement aux packages base et stats qui sont automatiquement installés et chargés à l’ouverture de chaque session de R. Il n’y a donc rien à faire de particulier pour pouvoir utiliser ces fonctions. La fonction summary est une fonction clé des analyses statistiques descriptives. Lorsque la variable considérée est numérique, cette fonction renvoie :

  • le minimum
  • le premier quartile
  • la médiane
  • la moyenne
  • le troisième quartile
  • le maximum
  • le nombre de valeurs manquante (NA pour *Not Available*).

Lorsque la variable considérée est catégorielle, la fonction summaryrenvoie uniquement :

  • le nombre de données pour chacune des modalités,
  • le nombre total de données manquantes.

La fonction summary peut être appliquée sur un jeu de données entier, une variable spécifique d’un jeu de données, ou encore sur un vecteur de données. Un vecteur de données correspond plus ou moins à une colonne de chiffres ou de texte sous Excel.

 2.2 Estimation des paramètres descriptifs par groupe avec la fonction summary

La fonction summary peut également être appliquée par groupe. Imaginons par exemple que l’on souhaite obtenir les paramètres décrits précédemment mais pour chaque modalité de la variable Species. Pour cela on utilise la commande by(jeu_de_données, variable_grpe, summary).

 

2.3 Estimation de l’écart type et de la variance avec les fonctions var et sd

En revanche, la fonction summary ne renvoie ni variance ni écart type. Il est donc nécessaire d’estimer séparément ces deux paramètres de dispersion à l’aide des fonctions var et sd. Ces fonctions appartiennent également au package stats; elles peuvent donc être utilisées immédiatement.

Néanmoins, contrairement à la fonction summary, ces deux fonctions ne peuvent pas s’appliquer sur un jeu de données entier, mais uniquement sur une variable numérique d’un jeu de données, ou sur un vecteur de données numériques.

 

Par contre, il est possible d’estimer la variance ou l’écart type de plusieurs variables d’un même jeu de données en une seule commande. Pour cela il faut utiliser la fonction map du package purrr. Ce package n’est pas importé et chargé par défaut, il faut donc faire ces deux étapes avant d’utiliser la fonction map.

Pour importer le package purrr utilisez l’onglet *package* de la fenêtre en bas à droite de R Studio, puis le sous onglet *Install* en écrivez *purrr* dans l’espace dédié. Chargez ensuite ce package (c’est ce qui permet d’avoir accés aux fonctions et aux jeux de données d’un package) à l’aide de la commande library(purrr).

3.Utilisation de la fonction stats.desc du package pastecs

La fonction stats.desc du package pastecs est également très intéressante pour réaliser des analyses statistiques descriptives. Elle est un peu plus complexe à utiliser mais elle permet d’estimer un grand nombre de paramètres, c’est ce qui la rend particulièrement complète.

3.1 Les paramètres de base

Cette fonction renvoie notamment :

nbr.val : le nombre de données
nbr.null : le nombre de valeurs nulles (valeurs non définies)
nbr.na : le nombre de données manquantes :
min : le min
max : le max
range : le range = max-min
sum : la somme des valeurs (rarement intéressant de mon point devu)
median : la médiane
mean : la moyenne
SE.mean : l’erreur standard de la moyenne (sem)
CI.mean.0.95 : l’erreur marginale à 95% de la moyenne (selon laloi de Student à n-1 degrés de libertés)
var : la variance des données observées
std.dev : l’écart type des données observées
coef.var : le coefficient de variation

L’erreur marginale à 95% de la moyenne est la quantité à soustraire à la moyenne pour construire la borne inférieure de l’intervalle de confiance à 95% de la moyenne, et inversement à additionner à la moyenne pour construire la borne supérieure.
Le coefficient de variation est le rapport de l’écart type des observations sur leur moyenne, soit std.dev / mean. Il s’agit d’une mesure de la dispersion relative. Ce paramètre peut être employé pour comparer la dispersion de deux variables ayant des unités différentes.

 

3.2 Estimation des paramètres de base par groupe

Ces paramètres descriptifs peuvent facilement être estimés par groupe, comme ici pour chaque modalité de la variable *Species*.

3.3 Les paramètres d’estimation de la normalité

La fonction stat.desc permet également d’évaluer la normalité de la distribution des valeurs observées, par l’intermédiaire de plusieurs paramètres accessibles en ajoutant l’argument norm=TRUE. Ces paramètres supplémentaires sont :

skewness : le coefficient d’asymétrie g1
skew.2SE : la statistique g1/ (2*SE_g1)
kurtosis : le coefficient d’applatissement g2
kurt.2SE : la statistique g2/ (2*SE_g2)
normtest.W : la statistique W du test de normalité de Shapiro Wilks
normtest.p : la pvalue du test de Shapiro de Shapiro-Wilks

Voici un exemple :

Lorsque le coefficient d’asymétrie skewness est > 0, cela témoigne d’une queue de distribution sur la droite, et d’une médiane inférieure à la moyenne.

Inversement, lorsque l’indice de skewness est <0, cela témoigne d’une queue de distribution sur la gauche, et d’une médiane supérieure à la moyenne.

Lorsque le coefficient d’asymétrie skewness est inférieur à -1 ou supérieur à 1, alors l’asymétrie de la distribution est considérée comme étant très marquée. Lorsqu’il est compris entre \[-1 ; -1/2\] ou entre \[1/2, 1\], l’asymétrie est considérée comme étant modérée. Lorsqu’il est compris entre \[-1/2 ; 1/2\], la distribution est considérée comme étant symétrique.

La statistique g1/ (2*SE_g1), nommée skew.2SE, permet d’évaluer la significativité du coefficient d’asymétrie. Si skew.2SE est supérieure à 1, ou inférieure à -1, alors le coefficient d’asymétrie est significativement différent de 0. La distribution s’éloigne alors de la normalité.

Le coefficient d’aplatissement g2 nommé kurtosis est moins utilisé que le coefficient d’asymétrie. Lorsque sa statistique g2 / (2*SE_g2), nommée kurt.2SE est supérieure à 1, ou inférieur à -1, alors le coefficient d’aplatissement est significativement différent de 0. La distribution s’éloigne alors de la normalité.

Le test de Shapiro-Wilk permet d’évaluer la normalité de la distribution des données observées. Si sa p-value, nommée ici normtest.p est inférieure à 0.05 alors la normalité est rejetée.

Ces informations sont disponibles dans la page d'[aide de la fonction stat.desc.

Détecter si la distribution des données observées s’écarte de la normalité permet notamment de choisir une méthode adéquate pour estimer l’intervalle de confiance de la moyenne. En effet, en cas d’écart à la normalité, l’intervalle de confiance par utilisation de la loi de Student (paramètre CI.mean.0.95) peut s’avérer biaisé. Dans ce cas il est préférable d’estimer l’intervalle de confiance de la moyenne par une approche de bootstrap non paramétrique.

4. Estimation de l’intervalle de confiance de la moyenne par bootstrap

Le principe du bootstrap est de générer un grand nombre d’échantillons (par exemple 1000) à partir des valeurs observées.

Chacun des 1000 échantillons bootstrap est créé à partir des valeurs observées, en les tirant au sort avec remise. Cela signifie que dans un échantillon bootstrap donné, certaines valeurs apparaitront plusieurs fois et que d’autre valeurs ne seront pas présentes du tout.
Ensuite, chaque échantillon bootstrap est considéré séparément et la moyenne de chaque échantillon bootstrap est calculée. Les 1000 moyennes sont ensuite ordonnées de la plus petite à la plus grande et les percentiles 2.5 et 97.5 sont estimés. Le percentile 2.5 correspond au seuil en dessous duquel seules 2.5% des moyennes ordonnées sont présentes. De la même façon, le percentile 97.5 correspond au seuil au dessus duquel seules 2.5% des moyennes estimées ordonnées sont présentes. Ces valeurs constitueront les bornes inférieure et supérieure de l’intervalle de confiance à 95%.

Je vais vous montrer très succinctement comment calculer l’intervalle de confiance à 95% d’une moyenne avec la fonction boot du package du même nom . Pour cela, il est d’abord nécessaire d’importer et de charger ce package boot.

Ensuite, il faut créer une fonction moyenne tel que ci-dessous. C’est cette fonction qui sera passée en argument à la foncion boot.

En réalité, la fonction boot.ci estime plusieurs types d’intervalle de confiance. Celui qui nous intéresse ici est le type *Percentile*.

J’espère qu’avec cet article vous saurez, à présent, réaliser facilement les analyses descriptives de vos variables numériques. Si vous utilisez d’autres fonctions que celles décrites dans cet article , n’hésitez pas à me les indiquer dans un commentaire.

Et si cet article vous a plu, n’hésitez pas, non plus, à le partager.

Partager l'article
  •  
  •  
  •  
  •  
  •  
    4
    Partages
  • 4
  •  
  •  
  •  
  •  

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *