본문 바로가기
R 주제/R 기초 및 통계 강의

[R강의] 102. 표본추출 방법 - 계통추출법(systematic sampling)

by 만다린망고 2020. 9. 29.
반응형

[R강의] 102. 표본추출 방법 - 계통추출법(systematic sampling)


표본추출방법은 크게 확률추출법과 비확률추출법으로 나뉩니다. 오늘은 R에서 계통추출을 하는 방법을 공부해봅시다. 표본추출방법에 대한 내용은 아래 글을 참고해주세요. 


https://hsm-edu.tistory.com/1083


계통추출법 (systematic sampling)은 간격 k를 정하고, k보다 작은 번호에서 출발하여 k간격으로 표본을 추출하는 방법입니다.


예를들어 모집단의 크기가 10이라고 해봅시다. 모집단 원소들을 각각 1번부터 10번까지의 번호를 붙였습니다. 3번으로 출발하여 2간격으로 표본을 추출하면 아래와 같습니다.


3번, 5번, 7번, 9번


R 코드를 짜봅시다. 첫 번호와, 간격 k를 입력하면 표본을 추출해주는 코드입니다. 함수를 만들건데요. 함수 만드는 과정을 자세히 설명드리겠습니다. 


함수를 만들기 전에 한가지 상황에 특정하여 코딩을 먼저 합니다. 


1부터 10까지의 수를 모집단으로 설정합시다. 테스트를 위한 모집단이므로 아무거나 생성해도 상관없습니다. 첫 번호를 3번으로 하고 2간격으로 표본을 추출하면 아래와 같습니다.

 

population=1:10

sample=c()


initial_num=3

k=2


sample[1]=population[initial_num]

sample[2]=population[initial_num+k]

sample[3]=population[initial_num+2*k]

sample[4]=population[initial_num+3*k]


결과는 아래와 같습니다. 


> sample

[1] 3 5 7 9


이제 조건문으로 만들어봅시다. while문으로 만들면 됩니다. 


population=1:10

sample=c()


initial_num=3

k=2


i=1


while(initial_num+(i-1)*k<=length(population)){

  

  sample[i]=population[initial_num+(i-1)*k]

  i=i+1

  

}


초기값 initial number에 k를 더해가는 숫자가 모집단의 크기보다 클 수는 없으므로, 조건을 모집단의 크기보다 작은 경우까지만 구문이 실행되도록 설정하였습니다. i는 1부터 시작하여 하나씩 커집니다. 모집단의 initial_num+(i-1)*k 번째 원소가 sample의 i번째 원소에 저장됩니다. 


함수를 만들어봅시다. 함수의 인자로는 모집단, 첫번호, 간격k가 들어가면 됩니다. 함수 이름은 smplg_sstm 으로 하겠습니다. 


smplg_sstm=function(population, initial_num, k) {

  

sample=c()


  i=1


while(initial_num+(i-1)*k<=length(population)){

  

  sample[i]=population[initial_num+(i-1)*k]

  i=i+1

  

}

  print(sample)


}


테스트해봅시다. 


> smplg_sstm(1:10,3,2)

[1] 3 5 7 9


잘 작동하는 것을 알 수 있습니다. 


반응형

댓글