Comment générer un échantillon à l’aide de la fonction Sample dans R



La fonction sample() dans R vous permet de prélever un échantillon aléatoire d’éléments à partir d’un ensemble de données ou d’un vecteur, avec ou sans remplacement.

La syntaxe de base de la fonction sample() est la suivante :

échantillon (x, taille, remplacer = FALSE , prob = NULL )

x : un ensemble de données ou un vecteur à partir duquel choisir l’échantillon
size : taille de l’échantillon
remplacer : l’échantillonnage doit-il être effectué avec remplacement ? (c’est FAUX par défaut)
prob : un vecteur de poids de probabilité pour obtenir les éléments du vecteur échantillonné

La documentation complète de sample() peut être trouvée ici .

Les exemples suivants illustrent des exemples pratiques d’utilisation de sample().

Générer un échantillon à partir d’un vecteur

Supposons que nous ayons un vecteur a contenant 10 éléments :

#define vector a with 10 elements in it
a <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

Pour générer un échantillon aléatoire de 5 éléments du vecteur a sans remplacement, nous pouvons utiliser la syntaxe suivante :

#generate random sample of 5 elements from vector a
sample(a, 5)

#[1] 3 1 4 7 5

Il est important de noter que chaque fois que nous générons un échantillon aléatoire, il est probable que nous obtiendrons à chaque fois un ensemble d’éléments différent.

#generate another random sample of 5 elements from vector a
sample(a, 5)

#[1] 1 8 7 4 2

Si nous souhaitons pouvoir répliquer nos résultats et travailler avec le même échantillon à chaque fois, nous pouvons utiliser set.seed() .

#set.seed(some random number) to ensure that we get the same sample each time
set.seed(122)

#define vector a with 10 elements in it
a <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

#generate random sample of 5 elements from vector a
sample(a, 5)

#[1] 10 9 2 1 4

#generate another random sample of 5 elements from vector a
sample(a, 5)

#[1] 10 9 2 1 4

Nous pouvons également utiliser l’argument replace = TRUE pour échantillonner avec remplacement. Cela signifie que chaque élément du vecteur peut être choisi pour figurer dans l’échantillon plus d’une fois.

#generate random sample of 5 elements from vector a using sampling with replacement
sample(a, 5, replace = TRUE)

# 10 10 2 1 6

Générer un échantillon à partir d’un ensemble de données

Une autre utilisation courante de la fonction sample() consiste à générer un échantillon aléatoire de lignes à partir d’un ensemble de données. Pour l’exemple suivant, nous générerons un échantillon aléatoire de 10 lignes à partir de l’ensemble de données R intégré iris , qui compte 150 lignes au total.

#view first 6 rows of iris dataset
head(iris)

# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#1         5.1         3.5          1.4         0.2  setosa
#2         4.9         3.0          1.4         0.2  setosa
#3         4.7         3.2          1.3         0.2  setosa
#4         4.6         3.1          1.5         0.2  setosa
#5         5.0         3.6          1.4         0.2  setosa
#6         5.4         3.9          1.7         0.4  setosa

#set seed to ensure that this example is replicable
set.seed(100)

#choose a random vector of 10 elements from all 150 rows in iris dataset
sample_rows <- sample(1:nrow(iris), 10)
sample_rows

#[1] 47 39 82 9 69 71 117 53 78 25

#choose the 10 rows of the iris dataset that match the row numbers above
sample <- iris[sample_rows, ]
sample

#   Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
#47          5.1         3.8          1.6         0.2     setosa
#39          4.4         3.0          1.3         0.2     setosa
#82          5.5         2.4          3.7         1.0 versicolor
#9           4.4         2.9          1.4         0.2     setosa
#69          6.2         2.2          4.5         1.5 versicolor
#71          5.9         3.2          4.8         1.8 versicolor
#117         6.5         3.0          5.5         1.8  virginica
#53          6.9         3.1          4.9         1.5 versicolor
#78          6.7         3.0          5.0         1.7 versicolor
#25          4.8         3.4          1.9         0.2     setosa

Notez que si vous copiez et collez le code ci-dessus dans votre propre console R, vous devriez obtenir exactement le même échantillon puisque nous avons utilisé set.seed(100) pour nous assurer que nous obtenons le même échantillon à chaque fois.

Ajouter un commentaire

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