Jeu de données iris
Cet article utilise le jeu de données intégré iris en R, contenant 150 échantillons de fleurs d'iris avec cinq variables :
Sepal.Length: longueur du sépaleSepal.Width: largeur du sépalePetal.Length: longueur du pétalePetal.Width: largeur du pétaleSpecies: espèce de la fleur (setosa, versicolor, virginica)
Chargement des données
Pour commencer, chargeons le jeu de données et affichons ses premières lignes :
# Charger les données
donnees <- iris
# Voir les premières lignes
head(donnees)
Échantillonnage aléatoire simple
L'échantillonnage aléatoire simple sélectionne des observations avec une probabilité égale. Il peut être effectué avec ou sans remise.
Échantilonnage avec remise
Ici, nous tirons 5 échantillons où une observation peut apparaître plusieurs fois :
# Fixer la graine aléatoire pour la reproductibilité
set.seed(456)
# Sélectionner 5 indices avec remise
indices_rep <- sample(seq_len(nrow(donnees)), size = 5, replace = TRUE)
# Extraire les échantillons
echantillon_rep <- donnees[indices_rep, ]
print(echantillon_rep)
Le paramètre replace = TRUE active le remplacement.
Échantillonnage sans remise
Dans ce cas, chaque observation ne peut être sélectionnée qu'une seule fois :
indices_sans_rep <- sample(seq_len(nrow(donnees)), size = 5, replace = FALSE)
echantillon_sans_rep <- donnees[indices_sans_rep, ]
print(echantillon_sans_rep)
Ici, replace = FALSE est la valeur par défaut.
Échantillonnage stratifié
Cette méthode divise la population en sous-groupes homogènes (strates) et échantillonne dans chaque strate. Dans notre jeu de données, nous stratifions par Species.
Nous allons prélever 2 observations par espèce en utilisant le package dplyr :
library(dplyr)
echantillon_stratifie <- donnees %>%
group_by(Species) %>%
slice_sample(n = 2)
print(echantillon_stratifie)
La fonction slice_sample() remplace sample_n() dans les versions récentes de dplyr. L'opérateur %>% est un tuyau pour chaîner les opérations.
Échantillonnage par grappe
Dans l'échantillonnage par grappe, on sélectionne d'abord un groupe (grappe) aléatoire, puis on prend toutes les observations de ce groupe. Ici, chaque espèce constitue une grappe.
# Obtenir les espèces uniques
especes_uniques <- unique(donnees$Species)
# Choisir une espèce au hasard
grappe_choisie <- sample(especes_uniques, 1)
# Extraire toutes les observations de cette espèce
echantillon_grappe <- subset(donnees, Species == grappe_choisie)
print(echantillon_grappe)
Nous utilisons unique() pour lister les espèces distinctes et subset() pour filtrer les données.
Séparation en ensembles d'entraînement et de test
Pour la modélisation, les données sont souvent divisées en ensembles d'entraînement (75%) et de test (25%) :
set.seed(789)
# Générer des indices pour l'ensemble d'entraînement
taille_entraînement <- round(0.75 * nrow(donnees))
indices_entraînement <- sample(seq_len(nrow(donnees)), size = taille_entraînement)
# Créer les ensembles
ensemble_entraînement <- donnees[indices_entraînement, ]
ensemble_test <- donnees[-indices_entraînement, ]
# Vérifier les tailles
cat("Taille de l'ensemble d'entraînement :", nrow(ensemble_entraînement), "\n")
cat("Taille de l'ensemble de test :", nrow(ensemble_test), "\n")
L'opérateur - dans l'indexation exclut les indices spécifiés.