Cum să luați eșantioane folosind sample() în R?

Cum să luați eșantioane folosind sample() în R?

În analiza datelor, este adesea necesar să selectați un subset aleatoriu de date dintr-un set de date mai mare. Această selecție aleatorie, cunoscută sub numele de eșantionare, este esențială pentru a obține concluzii semnificative și generalizabile din datele analizate. În R, funcția sample() este un instrument esențial pentru a obține eșantioane aleatoare din vectori, liste, cadre de date sau chiar numere întregi.

Acest articol explorează utilizarea funcției sample() în R, oferind o explicație detaliată a sintaxei, argumentelor și exemplelor practice.

Introducere în funcția sample()

Funcția sample() în R vă permite să obțineți un eșantion aleatoriu dintr-un set de date. Această funcție este extrem de versatilă și poate fi utilizată pentru a genera eșantioane simple aleatoare, eșantioane cu înlocuire sau eșantioane fără înlocuire.

Sintaxa generală a funcției sample() este:
r
sample(x, size, replace = FALSE, prob = NULL)

Argumentele funcției sample() sunt:

* x: Vectorul, lista, cadrul de date sau numerele întregi din care se va genera eșantionul.
* size: Numărul de elemente care vor fi selectate pentru eșantion.
* replace: Un argument logic care indică dacă extragerea se face cu înlocuire (TRUE) sau fără înlocuire (FALSE). Implicit, este FALSE.
* prob: Un vector de probabilități care indică probabilitatea fiecărui element din x de a fi selectat. Implicit, toate elementele au șanse egale de a fi selectate.

Eșantionarea simplă aleatorie

Eșantionarea simplă aleatorie implică selectarea unui subset de date într-un mod aleatoriu, unde fiecare element al setului de date are o șansă egală de a fi inclus în eșantion.

Exemplu:

Să presupunem că avem un vector de 10 numere:
r
my_numbers <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

Pentru a obține un eșantion de 3 numere din my_numbers fără înlocuire, folosim următorul cod:
r
sample(my_numbers, size = 3, replace = FALSE)

Acest cod va returna un vector cu 3 numere selectate aleatoriu din my_numbers fără ca un număr să fie selectat de două ori.

Eșantionarea cu înlocuire

Eșantionarea cu înlocuire implică selectarea unui subset de date, unde un element poate fi selectat de mai multe ori. Această metodă este utilă atunci când se dorește ca un anumit element să aibă o probabilitate mai mare de a fi inclus în eșantion.

Exemplu:

Pentru a obține un eșantion de 5 numere din my_numbers cu înlocuire, folosim următorul cod:
r
sample(my_numbers, size = 5, replace = TRUE)

Acest cod va returna un vector cu 5 numere selectate aleatoriu din my_numbers, unde unele numere pot fi selectate de mai multe ori.

Eșantionarea cu probabilități specifice

Funcția sample() permite stabilirea unor probabilități specifice pentru fiecare element din setul de date, astfel încât anumite elemente să aibă o șansă mai mare de a fi selectate.

Exemplu:

Să presupunem că dorim să obținem un eșantion de 3 numere din my_numbers, unde numerele impare au o probabilitate dublă de a fi selectate față de numerele pare.

r
prob <- c(0.2, 0.2, 0.4, 0.2, 0.4, 0.2, 0.4, 0.2, 0.4, 0.2)
sample(my_numbers, size = 3, replace = FALSE, prob = prob)

În acest cod, probabilitatea pentru numerele impare este setată la 0.4, în timp ce probabilitatea pentru numerele pare este setată la 0.2.

Exemple practice

1. Eșantionarea unui set de date:

Să presupunem că avem un set de date cu 100 de rânduri și dorim să obținem un eșantion de 20 de rânduri aleatoare:
r

Încărcarea setului de date

my_data <- read.csv("my_data.csv")

Obținerea unui eșantion de 20 de rânduri

sample_data <- my_data[sample(1:nrow(my_data), size = 20), ]

2. Eșantionarea unui vector de caractere:

Să presupunem că avem un vector de cuvinte și dorim să selectăm 5 cuvinte aleatoare:
r
words <- c("mere", "pere", "banane", "portocale", "căpșuni", "prune", "cirese", "struguri")

Selectarea a 5 cuvinte aleatoare

sample(words, size = 5, replace = FALSE)

Concluzie

Funcția sample() este un instrument util pentru a obține eșantioane aleatoare din date în R. Această funcție este versatilă și poate fi utilizată pentru a genera eșantioane simple aleatoare, eșantioane cu înlocuire sau eșantioane cu probabilități specifice. Înțelegerea funcționalității și argumentelor funcției sample() este esențială pentru a realiza analize de date precise și semnificative.

FAQ

1. Cum pot seta o sămânță aleatorie pentru a genera același eșantion de fiecare dată?

Pentru a genera același eșantion aleatoriu de fiecare dată, puteți utiliza funcția set.seed(). De exemplu, set.seed(123) va seta sămânța aleatorie la 123, astfel încât sample() va genera același eșantion de fiecare dată când se execută cu această sămânță.

2. Poate funcția sample() să selecteze mai multe elemente de același tip?

Da, funcția sample() poate selecta mai multe elemente de același tip, în special atunci când se utilizează replace = TRUE.

3. Cum pot obține un eșantion de 10% din datele mele?

Puteți utiliza funcția sample() cu argumentul size setat la 10% din numărul de rânduri din setul de date. De exemplu, sample(my_data, size = nrow(my_data) * 0.1) va selecta un eșantion de 10% din my_data.

4. Care este diferența dintre sample() și runif()?

Funcția sample() este utilizată pentru a genera eșantioane aleatoare din seturi de date existente, în timp ce runif() este utilizată pentru a genera numere aleatoare uniforme dintr-un interval specificat.

5. Pot genera eșantioane aleatoare din coloane specifice ale unui cadru de date?

Da, puteți utiliza funcția sample() pe coloane specifice ale unui cadru de date. De exemplu, sample(my_data$column_name, size = 10) va selecta un eșantion de 10 elemente din coloana „column_name” din cadrul de date my_data.

6. Cum pot obține un eșantion stratified?

Puteți obține un eșantion stratified folosind funcția strata din pachetul sampling. Această funcție permite selectarea unui eșantion stratatificat, unde datele sunt împărțite în straturi și se selectează un eșantion aleatoriu din fiecare strat.

7. Cum pot elimina elementele duplicate din eșantionul meu?

Pentru a elimina elementele duplicate dintr-un eșantion, puteți utiliza funcția unique(). De exemplu, unique(sample(my_numbers, size = 5, replace = TRUE)) va genera un eșantion cu 5 elemente, unde elementele duplicate sunt eliminate.

8. Ce se întâmplă dacă argumentul prob din sample() nu se adună la 1?

Dacă argumentul prob nu se adună la 1, probabilitățile vor fi normalizate automat pentru a se aduna la 1.

9. Există alternative la funcția sample() pentru obținerea de eșantioane aleatoare?

Da, există alte funcții care pot fi utilizate pentru a obține eșantioane aleatoare din date, cum ar fi sample.int(), runif() și rnorm().

10. Cum pot genera un eșantion ordonat aleatoriu?

Puteți utiliza funcția sample() cu argumentul replace = TRUE și apoi să sortați rezultatele. De exemplu, sort(sample(my_numbers, size = 5, replace = TRUE)) va genera un eșantion ordonat aleatoriu.

Tags: R, sample(), eșantionare, selecție aleatorie, statistică, analiză de date, tutorial, cod, programare, probabilitate, date, funcție, argument, vector, listă, cadru de date, replace, prob, eșantionare simplă aleatorie, eșantionare cu înlocuire, eșantionare cu probabilități specifice

Link-uri:

* Documentația funcției sample()
* Ghidul de introducere în R
* Site-ul oficial al R-ului