가중치를 고려한 표본 추출
각 데이터의 중요도나 발생 빈도가 다르다면 이를 고려하여 표본을 추출해야 한다. 예를 들어, 인터넷 쇼핑몰에서 제품과 제품별 판매량이 다음 표와 같이 정리되어 있다고 가정해보자.
제품명 |
판매량 |
A |
23,428 |
B |
104 |
C |
3,392,201 |
D |
1,392,485 |
... |
... |
Y |
3,007 |
Z |
32,037 |
그리고 이들 중 5개 제품을 선택해서 판매 데이터를 분석하기를 원한다고 가정해보자. 어떤 제품들을 분석해야 할까?
이 문제에 단순 임의 추출을 적용하면 알파벳 A ~ Z 중 5개가 모두 같은 확률로 선택될 것이다. 그러나 이렇게 표본을 추출하면 우연히 판매량이 적은 데이터만 선택될 가능성이 있다. 또, 인터넷 쇼핑몰 운영자 입장에서도 판매량이 많은 제품에 가중치를 두어 분석해보고 싶을 것이다. 따라서 이런 경우에는 제품 5개를 선택할 때 판매량에 비례하여 표본을 추출해야 한다.
sample( )에는 이런 경우를 위해 각 데이터가 뽑힐 가중치를 지정하는 prob 파라미터가 있다. prob라는 이름은 확률을 의미하지만 실제로 이 인자에 확률을 지정할 필요는 없다. 다만 가중치에 비례하는 음이 아닌 값을 지정하면 된다.
예를 들어, 1에서 10까지의 수에 각각 1에서 10까지 가중치를 주어 복원 추출을 해보자. 다음 코드를 보면 가중치가 큰 표본이 더 많이 뽑히는 경향을 쉽게 확인할 수 있다.
> sample(1:10, 5, replace=TRUE, prob=1:10)
[1] 10 9 6 7 7