Come generare un campione utilizzando la funzione sample in r


La funzione sample() in R consente di prelevare un campione casuale di elementi da un set di dati o da un vettore, con o senza sostituzione.

La sintassi di base della funzione sample() è:

campione (x, dimensione, sostituisci = FALSE , prob = NULL )

x : un set di dati o un vettore da cui scegliere il campione
dimensione : dimensione del campione
sostituire : è opportuno effettuare il campionamento con sostituzione? (questo è FALSO per impostazione predefinita)
prob : un vettore di pesi di probabilità per ottenere gli elementi del vettore campionato

La documentazione completa per sample() può essere trovata qui .

Gli esempi seguenti mostrano esempi pratici di utilizzo di sample().

Generare un campione da un vettore

Supponiamo di avere un vettore a contenente 10 elementi:

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

Per generare un campione casuale di 5 elementi del vettore a senza reinserimento, possiamo utilizzare la seguente sintassi:

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

#[1] 3 1 4 7 5

È importante notare che ogni volta che generiamo un campione casuale, è probabile che otterremo ogni volta un insieme diverso di elementi.

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

#[1] 1 8 7 4 2

Se vogliamo essere in grado di replicare i nostri risultati e lavorare ogni volta con lo stesso campione, possiamo usare 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

Possiamo anche usare l’argomento replace = TRUE per campionare con la sostituzione. Ciò significa che ciascun elemento del vettore può essere scelto per apparire nel campione più di una volta.

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

#10 10 2 1 6

Generare un campione da un set di dati

Un altro uso comune della funzione sample() è generare un campione casuale di righe da un set di dati. Per l’esempio seguente, genereremo un campione casuale di 10 righe dal set di dati R integrato iris , che ha 150 righe in totale.

 #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

Tieni presente che se copi e incolli il codice riportato sopra nella tua console R, dovresti ottenere esattamente lo stesso campione poiché abbiamo utilizzato set.seed(100) per assicurarci di ottenere sempre lo stesso campione.

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *