더북(TheBook)

다음은 iris 데이터로부터 비복원 단순 임의 추출을 사용해 각 종별로 3개씩 표본을 추출하는 예다.

> install.packages("sampling")
> library(sampling)
> (x <- strata(c("Species"), size=c(3, 3, 3), method="srswor", data=iris))
       Species ID_unit Prob Stratum
4       setosa       4 0.06       1
15      setosa      15 0.06       1
36      setosa      36 0.06       1
73  versicolor      73 0.06       2
78  versicolor      78 0.06       2
85  versicolor      85 0.06       2
104  virginica     104 0.06       3
138  virginica     138 0.06       3
141  virginica     141 0.06       3

> getdata(iris, x)
    Sepal.Length Sepal.Width Petal.Length Petal.Width    Species ID_unit Prob Stratum
4           4.6          3.1          1.5         0.2     setosa       4 0.06       1
15          5.8          4.0          1.2         0.2     setosa      15 0.06       1
36          5.0          3.2          1.2         0.2     setosa      36 0.06       1
73          6.3          2.5          4.9         1.5 versicolor      73 0.06       2
78          6.7          3.0          5.0         1.7 versicolor      78 0.06       2
85          5.4          3.0          4.5         1.5 versicolor      85 0.06       2
104         6.3          2.9          5.6         1.8  virginica     104 0.06       3
138         6.4          3.1          5.5         1.8  virginica     138 0.06       3
141         6.7          3.1          5.6         2.4  virginica     141 0.06       3

strata( ) 함수가 편리한 점은 층별로 다른 수의 표본을 추출할 수 있다는 점이다. 다음 예에서는 setosa 종에서 3개의 표본을 추출하고, 나머지 종에서는 1개씩 표본을 추출한다.

> strata(c("Species"), size=c(3, 1, 1), method="srswr", data=iris)
       Species ID_unit Prob Stratum
5       setosa       5 0.06       1
38      setosa      38 0.06       1
46      setosa      46 0.06       1
89  versicolor      89 0.02       2
116  virginica     116 0.02       3

또, strata( )는 다수의 층을 기준으로 데이터를 추출할 수 있다. 다음은 iris에 Species2라는 이름으로 또 다른 층을 만들고, (Species, Species2)의 각 층마다 1개씩 표본을 추출하는 예다.

> iris$Species2 <- rep(1:2, 75) # 1, 2, 1, 2, ..., 1, 2
> strata(c("Species", "Species2"), size=c(1, 1, 1, 1, 1, 1), method="srswr", data=iris)
       Species Species2 ID_unit Prob Stratum
49      setosa        1      49 0.04       1
26      setosa        2      26 0.04       2
59  versicolor        1      59 0.04       3
60  versicolor        2      60 0.04       4
127  virginica        1     127 0.04       5
114  virginica        2     114 0.04       6

각 층마다 동일한 개수의 표본을 추출하고자 한다면 doBy::sampleBy( )를 사용할 수 있다. 이 함수는 ‘4.5.3 sampleBy( )’ 절에서 설명했다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.