2017-05-01 1 views
1

3078 건의 관측으로 층화 무작위 샘플링을 사용하여 크기 100의 층화 샘플을 생성하는 데 어려움을 겪고 있습니다. 층화 무작위 표본 추출이 충족시켜야하는 조건은 FARMS92 < 100, 100-300, 300-600 및 FARMS92> 600을 지로서, 그리고 비례 할당을 사용합니다.층화 무작위 샘플링 in R

나는 내가 계층화 기능을 수행 할 때 진행하는 방법을 이해하지 않습니다 https://gist.github.com/mrdwab/6424112 여기

내 데이터 세트입니다 :

 COUNTY STATE ACRES92 ACRES87 FARMS92 
    1 ALEUTIAN AK 683533 726596 764514 
    2 ANCHORAGE AK 47146 59297 256709 
    3 FAIRBANKS AK 141338 154913 204568 
    4 JUNEAU AK 210  214  127 
    5 KENAI  AK 50810 85712 98035 
    6 AUTAUGA AL 107259 116050 145044 
    7 BALDWIN AL 167832 192082 223502 
    8 BARBOUR AL 177189 207906 222066 
    9 BIBB  AL 48022 50818 49630 
    10 BLOUNT AL 137426 140107 163638 
    11 BULLOCK AL 144799 156332 185304 
    12 BUTLER AL 96427 99997 124491 
    13 CALHOUN AL 73841 90474 93248 
    14 CHAMBERS AL 109555 102153 121101 
    15 CHEROKEE AL 121504 119956 143656 

당신이 나에게 진행 방법에 대한 단계를 설명해 수는?

+0

데이터 세트의 스크린 샷은 유용하지 않습니다. dput()을 사용하여 데이터를 추가하십시오. –

+1

@ed_sans 코멘트 주셔서 감사합니다. 데이터를 추가하는 질문을 편집했습니다. –

+0

아래의 솔루션이 효과가 있기를 바랍니다. –

답변

3

먼저 빈 (bin)으로 분리 할 수 ​​있습니다. < 100, 100 ~ 300 등 cut 기능을 사용하십시오.

data$cut <- cut(data$FARMS92, breaks = c(0,100,300,600, 1E7), labels = c("A","B","C", "D"), right = TRUE) 

그런 다음 stratify 기능 (https://gist.github.com/mrdwab/6424112)을 사용하십시오. 각 용지함에서 2를 반환합니다 내가 size = c(2,2,2,2) 사용이 특정 예를 들어

stratified(data, "cut", size = c(2,2,2,2)) 

. 샘플 크기 = 100을 원하므로 크기를 적절하게 조정하십시오. 예를 들어 비례 할당의 경우 원본 데이터 세트에 size = round(100 * prop.table(table(data$cut)), 0)과 같은 것을 사용할 수 있습니다.

출력 :

 COUNTY STATE ACRES92 ACRES87 FARMS92 cut 
7 BALDWIN AL 167832 192082  22 A 
6 AUTAUGA AL 107259 116050  14 A 
4 JUNEAU AK  210  214  127 B 
12 BUTLER AL 96427 99997  124 B 
11 BULLOCK AL 144799 156332  385 C 
15 CHEROKEE AL 121504 119956  436 C 
9  BIBB AL 48022 50818 49630 D 
8 BARBOUR AL 177189 207906 222066 D 

나는 더 나은 작업 예를 생산하는 데이터 집합을 수정했습니다. 데이터 :

data <- read.table(text= "COUNTY STATE ACRES92 ACRES87 FARMS92 
1 ALEUTIAN AK 683533 726596 76 
2 ANCHORAGE AK 47146 59297 2 
3 FAIRBANKS AK 141338 154913 204 
4 JUNEAU AK 210  214  127 
5 KENAI  AK 50810 85712 480 
6 AUTAUGA AL 107259 116050 14 
7 BALDWIN AL 167832 192082 22 
8 BARBOUR AL 177189 207906 222066 
9 BIBB  AL 48022 50818 49630 
10 BLOUNT AL 137426 140107 163638 
11 BULLOCK AL 144799 156332 385 
12 BUTLER AL 96427 99997 124 
13 CALHOUN AL 73841 90474 93248 
14 CHAMBERS AL 109555 102153 121 
15 CHEROKEE AL 121504 119956 436 ", stringsAsFactors=FALSE, header = TRUE) 
+0

데이터 세트를 여러 개의 저장소로 나누는 솔루션이 제대로 작동합니다. –

+0

데이터 세트를 여러 개의 저장소로 나누는 솔루션이 완벽하게 작동합니다. 나는 다음과 같은 코드를 계층화 된 함수로 만들지는 못했다.'stratified (data, group = cut, size = round (100 * prop.table (table (data $ cut)), 0))' 설명해 주시겠습니까? –

+0

층화 된 (데이터, "컷", 크기 = c (25,25,25,25))을 사용하면 모든 그룹 (A, B, C, D)에서 25 개의 행이 무작위로 100 개가 선택됩니다. round (100 * prop.table (table (data $ cut)), 0)를 사용하면 그룹당 몇 개가 선택 될지 결정됩니다. (35, 25, 25, 15). round (100 * prop.table (table (data $ cut)), 0)가 작동하면 계층화 함수가 작동합니다. –