histogramme couverture

Construire un histogramme avec R et python

Emmanuel Jakobowicz Mis à jour le : 12 mars 2018 méthode Laissez un commentaire

Comment définir un histogramme

Un histogramme est un des graphiques les plus important de la statistique. Un histogramme vous permet de comprendre la distribution de vos données et de valider certaines hypothèses. Un histogramme est représenté comme un diagramme en bâtons dans lequel chaque bâton représente une densité ou une fréquence d'individus dans un intervalle donné.

Un histogramme s'applique sur des données quantitatives, c'est-à-dire numériques et va utiliser un système de discrétisation (découpage en classes ordonnées) pour représenter les densités d'individus présents dans chaque intervalle.

Un histogramme pourra avoir la forme suivante :

histogramme de deux distributions

Cet histogramme représente deux groupes d'individus (ils sont dans ce cas issus d'une loi normale centrée réduite) et ce sont des fréquences qui sont représentées en ordonnée. L'axe des abscisses représente les valeurs associées aux individus dans les données.

Quels paramètres choisir dans un histogramme

Lorsque vous construisez un histogramme, le principal paramètre à définir concerne les intervalles créés lors de la discrétisation.

La plupart des outils ont des valeurs par défaut autour de 10, mais cette valeur n'est pas adaptée à tous les cas. En effet, imaginons que vous avec 100'000 individus avec une distribution assez complexe, si vous utilisez 10 intervalles, vous ne verrez absolument pas les variations de votre distribution. On le voit bien dans cet exemple :

histogramme avec 10 intervalles
histogramme avec 100 intervalles

On voit ici clairement qu'il y a deux distributions différentes dans le second histogramme alors qu'elles n'apparaissent pas dans le premier.

A l'inverse, si vous avez très peu de données, il sera inutile d'augmenter le nombre d'intervalles car comme on peut le voir sur l'exemple précédent, plus vous augmentez le nombre d'intervalles, plus la fréquence par intervalle devient faible. Si on a très peu de données, on verra apparaître des variations dans l'histogramme qui seront le fait de très peu d'individus ce qui pourra entraîner de fausses pistes d'analyse. 

Construire un histogramme avec R et python

R et python sont aujourd'hui les deux langages de référence pour le traitement de la données, il est donc intéressant de comprendre comment construire un histogramme sur vos données avec ces deux langages.

Nous allons nous baser sur deux bibliothèques de référence : ggplot2 pour R et matplotlib pour python.

Les outils utilisés

R
Il existe une fonction histogramme dans R base mais nous préférons utiliser la fonction de ggplot2 qui constitue une référence en visualisation de données avec R.
ggplot2
python
De nombreuses bibliothèques sont disponibles en python pour la visualisation des données. Nous utiliserons ici matplotlib qui est la référence actuelle en la matière.
matpltolib

La génération des données

R
Nous allons générer des données aléatoires en utilisant une loi normale avec R. Nous avons besoin d'un DataFrame pour travailler avec ggplot2. Nous combinons ici des nombres aléatoires issus de deux distributions normales :
>df <-data.frame(donnees=as.vector(rbind(rnorm(100000),rnorm(100000,mean = 6,sd=3))))
>
python
Nous allons générer des données aléatoires avec python et la bibliothèque numpy. Nous concaténons ici deux arrays numpy dans lesquels des données aléatoires issues de deux distributions normales ont été générés :
import numpy as np

data=np.concatenate([np.random.randn(100000),6+(np.random.randn(100000))*3],axis=0)

Le code et les résultats

R
Pour dessiner un histogramme, il faut charger les packages nécessaires :
install.packages("ggplot2")

library(ggplot2)
Il est ensuite très simple de dessiner l'histogramme associé :
ggplot(df,aes(x=donnees)) + geom_histogram(bins=100,fill="red",alpha = 0.5) +  ggtitle("Histogramme avec 100 intervalles") +  labs(y="Fréquences")
Et on obtient :
histogramme avec R et 100 intervalles
python

Pour dessiner un histogramme, il faut charger les bibliothèques associées. Si de plus vous utilisez des Jupyter Notebook ou le nouveau JupyterLab, on peut ajouter une ligne pour afficher directement l'histogramme dans le notebook :

import matplotlib.pyplot as plt
%matplotlib inline

On peut alors simplement dessiner un histogramme en utilisant l'approche matplotlib :

plt.hist(data,bins=100,color="red",alpha=0.8)

plt.title("Histogramme avec 100 intervalles")

plt.ylabel("Fréquences")
Et on obtient :
histogramme avec python et 100 intervalles
En travaillant dans un notebook, on n'a pas besoin d'ajouter plt.show(). Si vous travaillez dans votre IDE habituel, il faudra ajouter ce code.

Aller plus loin

Cet article ne proposer que la base pour représenter des histogrammes avec R et python. Voici quelques références intéressantes à ce sujet pour aller plus loin :

Bien entendu, je reste à votre écoute si vous avez des questions ou un besoin de formation. Contactez-moi par en utilisant le formulaire de contact en bas de cette page ou en cliquant sur contact en haut à droite. N'hésitez pas à ajouter des commentaires si vous avez des remarques à ajouter.

DÉCOUVREZ NOS FORMATIONS TRAITEMENT DE DONNÉES AVEC PYTHON


DÉCOUVREZ NOS FORMATIONS AU LOGICIEL R POUR LE TRAITEMENT DES DONNÉES

Partager cet article

Laisser un commentaire

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.