웹사이트 검색

R에서 sample()을 사용하여 샘플을 채취하는 방법은 무엇입니까?


자주 사용하는 함수 중 하나인 R의 sample()에 대해 알아보겠습니다. 데이터 분석에서 데이터 샘플을 채취하는 것은 분석가가 수행하는 가장 일반적인 프로세스입니다. 데이터를 연구하고 이해하려면 때로는 샘플을 채취하는 것이 가장 좋은 방법이며 빅 데이터의 경우 대부분 그렇습니다.

R은 데이터 세트에서 샘플을 가져오는 표준 함수 sample()을 제공합니다. 많은 비즈니스 및 데이터 분석 문제는 데이터에서 샘플을 가져와야 합니다. 무작위 데이터는 아래 섹션에 설명된 대체 여부에 관계없이 이 프로세스에서 생성됩니다.

본론으로 들어가자!!!

R의 sample() 구문

sample(x, size, replace = FALSE, prob = NULL)

  • x - 벡터 또는 데이터 세트.
  • 크기 - 샘플 크기.
  • 바꾸기 - 값을 바꾸거나 바꾸지 않습니다.
  • 바꾸기 - 값을 바꾸거나 바꾸지 않습니다.
  • prob - 확률 가중치

교체용 샘플 채취

대체 샘플을 채취하는 것이 무엇인지 궁금하실 수 있습니다.

음, 목록이나 데이터에서 샘플을 가져오는 동안 replace=TRUE 또는 T를 지정하면 함수가 값의 반복을 허용합니다.

사례를 명확하게 설명하는 아래 예를 따르십시오.

#sample range lies between 1 to 5
x<- sample(1:5)
#prints the samples
x
Output -> 3 2 1 5 4


#samples range is 1 to 5 and number of samples is 3
x<- sample(1:5, 3)
#prints the samples (3 samples)
x
Output -> 2 4 5


#sample range is 1 to 5 and the number of samples is 6
x<- sample(1:5, 6)
x
#shows error as the range should include only 5 numbers (1:5)
Error in sample.int(length(x), size, replace, prob) : 
  cannot take a sample larger than the population when 'replace = FALSE'

#specifing replace=TRUE or T will allow repetition of values so that the function will generate 6 samples in the range 1 to 5. Here 2 is repeated.
 
x<- sample(1:5, 6, replace=T)
Output -> 2 4 2 2 4 3

R에서 교체가 없는 샘플

이 경우 교체 없이 샘플을 채취할 예정입니다. 전체 개념은 다음과 같습니다.

이 경우 교체가 없는 경우 replace=F 함수가 사용되며 값의 반복을 허용하지 않습니다.

#samples without replacement 
x<-sample(1:8, 7, replace=F)
x
Output -> 4 1 6 5 3 2 7
x<-sample(1:8, 9, replace=F)
Error in sample.int(length(x), size, replace, prob) :
cannot take a sample larger than the population when 'replace = FALSE'


#here the size of the sample is equal to range 'x'. 
x<- sample(1:5, 5, replace=F)
x
Output -> 5 4 1 3 2

set.seed() 함수를 사용하여 샘플 채취

샘플을 채취할 때 샘플이 무작위이며 매번 변경되는 것을 경험할 수 있습니다. 이를 방지하기 위해 또는 매번 다른 샘플을 원하지 않는 경우 set.seed() 함수를 사용할 수 있습니다.

set.seed() - set.seed 함수는 실행할 때 동일한 시퀀스를 생성합니다.

이 경우는 아래에 설명되어 있습니다. 아래 코드를 실행하여 매번 동일한 무작위 샘플을 얻습니다.

#set the index 
set.seed(5)
#takes the random samples with replacement
sample(1:5, 4, replace=T)
2 3 1 3

set.seed(5)
sample(1:5, 4, replace=T)
2 3 1 3

set.seed(5)
sample(1:5, 4, replace=T)
2 3 1 3

데이터 세트에서 샘플 가져오기

이 섹션에서는 Rstudio의 데이터 세트에서 샘플을 생성할 것입니다.

이 코드는 'ToothGrowth' 데이터 세트에서 샘플로 10개 행을 가져와서 표시합니다. 이러한 방식으로 데이터 세트에서 필요한 크기의 샘플을 가져올 수 있습니다.

#reads the dataset 'Toothgrwoth' and take the 10 rows as sample
df<- sample(1:nrow(ToothGrowth), 10)
df
--> 53 12 16 26 37 27  9 22 28 10
#sample 10 rows
ToothGrowth[df,]

    len supp dose
53 22.4   OJ  2.0
12 16.5   VC  1.0
16 17.3   VC  1.0
26 32.5   VC  2.0
37  8.2   OJ  0.5
27 26.7   VC  2.0
9   5.2   VC  0.5
22 18.5   VC  2.0
28 21.5   VC  2.0
10  7.0   VC  0.5

set.seed() 함수를 사용하여 데이터 세트에서 샘플 가져오기

이 섹션에서는 set.seed() 함수를 사용하여 데이터 세트에서 샘플을 가져옵니다.

아래 코드를 실행하여 set.seed()를 사용하여 데이터 세트에서 샘플을 생성합니다.

#set.seed function
set.seed(10)
#taking sample of 10 rows from the iris dataset. 
x<- sample(1:nrow(iris), 10)
x
--> 137  74 112  72  88  15 143 149  24  13
#displays the 10 rows
iris[x, ]
    Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
137          6.3         3.4          5.6         2.4  virginica
74           6.1         2.8          4.7         1.2 versicolor
112          6.4         2.7          5.3         1.9  virginica
72           6.1         2.8          4.0         1.3 versicolor
88           6.3         2.3          4.4         1.3 versicolor
15           5.8         4.0          1.2         0.2     setosa
143          5.8         2.7          5.1         1.9  virginica
149          6.2         3.4          5.4         2.3  virginica
24           5.1         3.3          1.7         0.5     setosa
13           4.8         3.0          1.4         0.1     setosa

코드를 여러 번 실행하면 동일한 행이 표시됩니다. set.seed() 함수를 사용했기 때문에 값이 변경되지 않습니다.

R에서 sample()을 사용하여 무작위 샘플 생성

글쎄, 우리는 문제의 도움으로 이 개념을 이해할 것입니다.

문제: 선물 가게에서 고객 중 한 명에게 깜짝 선물을 주기로 결정했습니다. 이를 위해 몇 가지 이름을 수집했습니다. 문제는 목록에서 임의의 이름을 선택하는 것입니다.

힌트: 무작위 샘플을 생성하려면 sample() 함수를 사용하십시오.

아래에서 볼 수 있듯이 이 코드를 실행할 때마다 임의의 참가자 이름 샘플이 생성됩니다.

#creates a list of names and generates one sample from this list
sample(c('jack','Rossie','Kyle','Edwards','Joseph','Paloma','Kelly','Alok','Jolie'),1)
--> "Rossie"
 sample(c('jack','Rossie','Kyle','Edwards','Joseph','Paloma','Kelly','Alok','Jolie'),1)
--> "Jolie"

sample(c('jack','Rossie','Kyle','Edwards','Joseph','Paloma','Kelly','Alok','Jolie'),1)
--> "jack"

sample(c('jack','Rossie','Kyle','Edwards','Joseph','Paloma','Kelly','Alok','Jolie'),1)
--> "Edwards"

sample(c('jack','Rossie','Kyle','Edwards','Joseph','Paloma','Kelly','Alok','Jolie'),1)
--> "Kyle"

확률을 설정하여 표본 추출

위의 예와 개념을 통해 무작위 샘플을 생성하고 데이터 세트에서 특정 데이터를 추출하는 방법을 이해했습니다.

R을 사용하면 많은 문제를 해결할 수 있으므로 확률을 설정할 수 있다고 말하면 편안하게 느끼는 사람도 있을 것입니다. 간단한 예를 통해 어떻게 작동하는지 살펴보겠습니다.

10개의 시계를 제조할 수 있는 회사를 생각해 봅시다. 이 10개의 시계 중 20%가 결함이 발견되었습니다. 아래 코드의 도움으로 이를 설명하겠습니다.

#creates a probability of 80% good watches an 20% effective watches.
 sample (c('Good','Defective'), size=10, replace=T, prob=c(.80,.20))
 
"Good"      "Good"      "Good"      "Defective" "Good"      "Good"     
"Good"      "Good"      "Defective" "Good"  

아래와 같이 다양한 확률 조정을 시도할 수도 있습니다.

 sample (c('Good','Defective'), size=10, replace=T, prob=c(.60,.40))
 
--> "Good"      "Defective" "Good"      "Defective" "Defective" "Good"     
 "Good"      "Good"      "Defective" "Good"

마무리

이 자습서에서는 데이터 세트에서 샘플을 생성하는 방법을 배웠습니다. 대체하거나 대체하지 않고 나열합니다. set.seed() 함수는 동일한 샘플 시퀀스를 생성할 때 유용합니다.

R에서 사용할 수 있는 다양한 데이터 세트에서 샘플을 가져오고 또한 일부 CSV 파일을 가져와 그림과 같이 확률 조정으로 샘플을 가져올 수 있습니다.

추가 학습: R 설명서