Avant de modéliser ou d'appliquer des algorithmes complexes de Machine Learning, la première étape indispensable de toute analyse de données est la statistique descriptive.
Son objectif est de décrire, synthétiser et rendre compréhensible l'information brute contenue dans un échantillon d'observations, sans chercher à extrapoler immédiatement à la population globale.
R a été conçu par et pour des statisticiens : il offre les fonctions les plus complètes et précises pour calculer tous les indicateurs statistiques univariés et bivariés.
1. Analyse univariée : Variables quantitatives#
Pour étudier une variable numérique continue ou discrète (comme des salaires, des âges ou des montants de commandes), on s'appuie sur deux familles d'indicateurs :
Indicateurs Statistiques Univariés
┌─────────────────────────────────┬─────────────────────────────────┐
│ Tendance Centrale │ Dispersion & Étendue │
├─────────────────────────────────┼─────────────────────────────────┤
│ • Moyenne arithmétique : mean() │ • Écart-type : sd() │
│ • Médiane (50e centile): median()│ • Variance : var() │
│ • Mode (valeur la plus fréquente│ • Écart interquartile : IQR() │
│ │ • Minimum / Maximum / Quantiles │
└─────────────────────────────────┴─────────────────────────────────┘
1. Mesures de tendance centrale#
salaires <- c(2100, 2400, 2250, 1950, 3100, 2800, 8500) # Présence d'un outlier (8500)
mean(salaires) # Moyenne : [1] 3300
median(salaires) # Médiane : [1] 2400
[!NOTE] Moyenne vs Médiane : La robustesse aux valeurs aberrantes
Remarquez la différence : la moyenne est fortement tirée vers le haut par le salaire atypique de 8 500 € (3 300 €), tandis que la médiane (2 400 €) sépare fidèlement les 50 % des salariés les moins payés des 50 % les mieux payés. La médiane est un indicateur robuste.
2. Mesures de dispersion#
min(salaires) # [1] 1950
max(salaires) # [1] 8500
range(salaires) # [1] 1950 8500
var(salaires) # Variance : [1] 5437500
sd(salaires) # Écart-type : [1] 2331.845
IQR(salaires) # Écart interquartile (Q3 - Q1) : [1] 850
# Quantiles personnalisés (ex: déciles ou quartiles)
quantile(salaires, probs = c(0.25, 0.50, 0.75))
3. La commande tout-en-un : summary()#
Sortie :
2. Analyse univariée : Variables qualitatives#
Pour une variable catégorielle (facteur ou texte), on étudie la répartition des effectifs :
diplomes <- c("Bac", "Master", "Licence", "Master", "Bac", "Doctorat", "Master")
# Tableau des effectifs (fréquences absolues)
eff <- table(diplomes)
print(eff)
# Fréquences relatives (pourcentages)
prop.table(eff) * 100
3. Analyse bivariée : Croiser deux variables#
1. Deux variables quantitatives : Corrélation linéaire#
Pour mesurer l'intensité de la liaison linéaire entre deux grandeurs numériques \(X\) et \(Y\) :
taille <- c(160, 165, 170, 175, 180, 185)
poids <- c(55, 60, 65, 72, 78, 86)
# Coefficient de corrélation linéaire de Pearson (entre -1 et +1)
cor(taille, poids, method = "pearson") # [1] 0.9947844 (très forte corrélation positive)
# Matrice de covariance
cov(taille, poids)
2. Deux variables qualitatives : Tableau de contingence#
genre <- c("F", "H", "F", "F", "H", "H", "F")
reponse <- c("Oui", "Non", "Oui", "Oui", "Oui", "Non", "Non")
table(genre, reponse)
3. Une quantitative et une qualitative : Comparer par groupe avec aggregate()#
4. Visualisations fondamentales en R de base#
R intègre nativement un moteur graphique puissant pour visualiser instantanément vos distributions :
# 1. Histogramme d'une variable continue
hist(salaires,
main = "Distribution des Salaires",
xlab = "Salaire (€)",
col = "lightblue",
border = "darkblue",
breaks = 5)
# 2. Boîte à moustaches (Boxplot) pour repérer les outliers
boxplot(salaires,
main = "Boxplot des Salaires",
ylab = "Euros",
col = "lightgreen")
# 3. Nuage de points (Scatter plot) entre deux variables continues
plot(taille, poids,
main = "Relation Poids - Taille",
xlab = "Taille (cm)",
ylab = "Poids (kg)",
pch = 19,
col = "red")
Mise en pratique : Exploration du dataset iris#
R intègre plusieurs jeux de données célèbres d'apprentissage, dont le célèbre jeu de données iris d'Edgar Anderson (150 fleurs de 3 espèces) :
# Charger le jeu de données intégré
data(iris)
# 1. Afficher la structure
str(iris)
# 2. Calculer la moyenne et l'écart-type de la longueur des pétales (Petal.Length)
mean(iris$Petal.Length)
sd(iris$Petal.Length)
# 3. Calculer la longueur moyenne des pétales pour chacune des 3 espèces
aggregate(Petal.Length ~ Species, data = iris, FUN = mean)
# 4. Tracer la boîte à moustaches de Petal.Length selon l'espèce
boxplot(Petal.Length ~ Species, data = iris, col = c("orange", "lightblue", "lightgreen"))
Commentaires