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

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