모집단의 특성을 알기 위해 모집단 전체에 대한 검증을 하기는 현실적으로 어려운 경우가 대부분이다. 그래서 우리는 모집단에서 표본을 추출하여 테스트를 진행하고, 이를 통해 모집단의 특성을 추정하게 된다.
오늘은 표본을 추출할 때의 샘플링 기법 4가지를 알아본다.
1. Simple Random Sampling
2. Systematic Sampling
3. Stratified Random Sampling
4. Cluster Sampling
(위 4개는 모두 probability sampling이다)
🔔 알림
1. 저작권 때문에 여기 가져오지는 못했지만, 각 샘플링 기법을 설명하는 이미지는 하단참고한 자료
의 첫 번째 링크를 봐주세요. 🙇 글보다 훨씬 이해가 쉽습니다.
2. python 구현은 자주 사용하는 simple random sampling에 대해서만 담았습니다. 나머지는 데이터셋을 그룹으로 구분하는 등 샘플링 이전 추가 과정이 들어가는 것 말고는 동일한 것 같습니다. 추후 직접 해보게 될 일이 있을 때 추가해보는 걸로 하겠습니다.
모집단에서 무작위로 sampling을 하는 방법이다.
Simple Random Sampling에는 복원 추출(replacement)과 비복원 추출(non-replacement) 2가지가 있다.
numpy를 이용하면 간단하게 할 수 있다.
기본 코드: np.random.choice(data, size = n, replace = True)
예시
(데이터 프레임 df
가 있다고 전제한다.)
#
import numpy as np
np.random.seed(42)
sample_data = np.random.choice(df, size = 10)
sample_data #출력
이렇게 하면 df에서 10개를 무작위 추출하게 된다.
참고로 np.random.seed(42)
는 random을 돌릴 때마다 결과가 달라지지 않도록 고정하는 것이다.
np.random.sample(data, n)
을 사용할 수도 있다.
random.sample
은 비복원 추출이기 때문에 뽑힌 것들 모두 unique한 값이다. 또한 n에 data의 실제 size보다 큰 값을 넣으면 에러가 난다. (예 - df size가 100인데, n에 200을 넣을 수 없다) 기본 df.sample()
함수를 쓸 수도 있다
random_state
는 위에서 본 random.seed()
와 같은 역할을 한다.replace = True
로 설정하면 된다. axis
파라미터를 사용하면 행을 기준으로 n만큼 추출할건지, 열을 기준으로 할건지 설정할 수 있다. (디폴트는 행이다)어떨 때 무엇을 쓰느냐가 궁금해서 각각의 예시들을 쭉 찾아보니까,
어떤 Input을 넣어 어떻게 리턴해주느냐의 차이인 것 같다.
모집단에서 '어떤 규칙'을 가지고 sampling을 하는 방법이다.
이 샘플링 기법을 이용할 때는 샘플의 편향성에 유의해야 한다고 한다.
모집단을 미리 여러 그룹으로 나누고, 그 그룹별로 무작위 추출하는 방법이이다. 여기서 strata를 subgroup으로 생각하면 쉽다.
각 그룹별로 무작위 추출할 때 비율을 어떻게 할 것인지에 따라 Equal
, proportional
, disproportional
로 종류가 나뉘는데, 우선은 이런 게 있구나만 하고 넘어가겠다.
모집단을 미리 여러 그룹으로 나누고, 이후 특정 그룹을 무작위로 선택하는 방법이다.
참고한 자료
random
에 대해)