다음은 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( )’ 절에서 설명했다.