일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 데이터 과학
- 산점도
- 이항분포
- version 1
- 정규분포
- 가설검정
- 반복없음
- version 2
- html
- 이원배치 분산분석
- 변동분해
- 회귀분석
- 분산분석
- 경제학
- css
- 추정
- 변량효과모형
- 인공지능
- 글쓰기
- 오블완
- 해운업
- 확률
- 반복있음
- 혼합효과모형
- r
- 고정효과모형
- 통계학
- 티스토리챌린지
- 에세이
- JavaScript
- Today
- Total
생각 작업실 The atelier of thinking
45. R을 이용한 확률분포 - 초기하분포 구하기 본문
Chapter 45. R을 이용한 확률분포 - 초기하분포 구하기
1. R에서의 확률분포
이산확률분포 | 연속확률분포 | ||
이항분포 | binom | 정규분포 | norm |
초기하분포 | hyper | T분포 | t |
포아송분포 | pois | F분포 | f |
기하분포 | geom | 카이분포 | chisq |
음이항분포 | nbionom | 균등분포 | unif |
다항분포 | multinom | 지수분포 | exp |
구하고자 하는 함수에 따라 아래의 접두사를 붙여 사용하면 됩니다.
- d : probability mass/density function - 확률 질량/밀도 함수
- p : cumulative distribution function - 누적함수
- q : quantile function - 분위수
- r : random number generator - 램덤 생성 작업
2. 초기하분포(Hypergeometric Distribution)
초기하분포는 이항분포와 비슷한 분포이지만, 복원추출이 아닌 비복원추출에서의 확률분포입니다.
유한모집단이 두 그룹으로 나누어져 있고 표본을 비복원으로 추출할 때, 특정 그룹에서 뽑힌 표본의 수에 대한 확률분포입니다.
초기하분포의 확률질량함수는 아래와 같습니다.
모집단 크기 : N , M과 N-M인 두 개의 부모집단, n : 추출될 표본의 수
f(x) = \frac{ \dbinom{M}{x} \dbinom{N-M}{n-x} }{ \dbinom{N}{n}}, x=0,1,2,..,n
R에서 초기하분포의 확률질량함수를 구하는 함수는 "dhyper" 입니다.
dhyper(x,M,N-M,n)
x : 추출될 표본의 수
M : 추출대상 집단의 수
N-M : 추출 대상이 아닌 집단의 수
n : 시행횟수
◈ 예제 : 6개가 정상품과 4개의 불량품이 있는 상자에서 임의로 3개의 제품을 비복원 추출한 경우
(1) 3 개 중 1개가 불량품일 확률은?
R 코드는,
x <- 1
M <- 4
N <- 10
n <- 3
dhyper(x,M,N-M,n)
[1] 0.5
추출될 표본의 수(x) : 1 , 추출대상 집단의 수(M) : 4 , N-M : 6 , n : 3 을 차례로 입력하여 구합니다.
(2) 3개 중 불량품이 0~3개 나올 확률을 각각 구하면 ?
x <- 0:3
M <- 4
N <- 10
n <- 3
hyper <- dhyper(x,M,N-M,n)
names(hyper) <- x
hyper
0 1 2 3
0.16666667 0.50000000 0.30000000 0.03333333
시각화 코드
barplot(hyper, space = 2, col='skyblue',xlab = '불량품수')
abline(h=0)

(3) 3개 중 불량품이 1개 이하 나올 확률은 ?
이 경우는 누적분포함수를 사용합니다.
phyper(x,M,N-M,n,lower.tail = True)
x : 추출될 표본의 수
M : 추출대상 집단의 수
N-M : 추출 대상이 아닌 집단의 수
n : 시행횟수
lower.tail : 누적분포함수 값 계산 방법을 지정하는 논리값
TRUE x보다 작거나 같은 확률을 계산
FALSE x보다 큰 확률을 계산
x <- 1
M <- 4
N <- 10
n <- 3
phyper(x,M,N-M,n,lower.tail = TRUE)
[1] 0.6666667
◈ 예제 : 품질관리 Operating Characteristic(OC) Curve
50개의 전구들이 들어있는 상자에서 10개의 전구를 무작위로 선택하여 검사를 합니다.
불량전구의 개수가 1개이하이면 이 회사이 전구를 구매하려고 합니다.
만약 이 상자에 5개의 불량품이 있을 때, 구매할 확률은 ?
이 경우는 10개 추출했을 때 불량품이 0 또는 1 개가 나올 확률을 구하라는 것입니다.
이를 확률질량함수로 표현하면,
P(X \leq 1) = \frac{\dbinom{5}{0} \dbinom{45}{10} }{ \dbinom{50}{10}}+ \frac{\dbinom{5}{1} \dbinom{45}{9}}{ \dbinom{50}{10}}
누적분포함수를 이용해 구해보면,
x <- 1
M <- 5
N <- 50
n <- 10
phyper(x,M,N-M,n,lower.tail = TRUE)
[1] 0.7419
구매할 확률은 74.19% 가 나옵니다.
위 경우는 전체 불량품의 갯수를 미리 안다고 가정했지만, 대부분의 경우는 전체불량품의 갯수를 알지못합니다.
결과를 보고 전체 불량품의 갯수가 얼마나 되는지를 추정해볼 수 있습니다.
예를 들어 10개를 추출했는 데 1개의 불량품이 나왔다고 했을 때 전체불량품 수는 ?
x <- 1
M <- 0:50
N <- 50
n <- 10
prob <- phyper(x,M,N-M,n,lower.tail = TRUE)
plot(M,prob,type="o",xlab="불량품의 수",main="OC curve")

위 그래프는 OC Curve라 불리우며, 통계적 품질관리에서 중요한 도구입니다.
◈ 예제 : 연못에 사는 물고기는 몇마리?
꼬리표를 붙인 20마리의 물고기를 연못에 넣고 어느 정도 지난 후 물고기 15마리를 잡았을 때 꼬리표가 있는 물고기가 4마리였다면, 연못안 전체 물고기는 얼마나 될까요?
위 상황은 꼬리표를 단 물고기를 M 으로 달지 않은 물고기를 N-M 으로 분류하여 초기화분포로 나타낼 수 있습니다.
위 상황에서 전체물고기(N) 는 정확히 알 수 없지만, 각각의 확률을 알 수 있습니다.
N이 30~100일 때의 확률질량함수를 그래프로 표현해 보겠습니다.
x <- 4
M <- 20
N <- 30:100
n <- 15
fish <- dhyper(x,M,N-M,n)
names(fish) <- N
barplot(fish, space = 2, col='skyblue', xlab="연못 전체물고기 수")
abline(h=0)

위 그래프에서 보면 75마리에서 약 25%의 확률로 제일 높게 나타나는 것을 볼 수 있습니다.
'통계학 이야기' 카테고리의 다른 글
47. R을 이용한 확률분포 - 포아송 분포 구하기 (1) | 2023.10.30 |
---|---|
46. 포아송분포(Poisson Distribution) - 이산확률분포 (1) | 2023.10.27 |
44. 초기하 분포(Hypergeometric Distribution) - 이산확률분포 (1) | 2023.10.26 |
43. R을 이용한 확률분포 - 이항분포 구하기 (0) | 2023.10.25 |
42. 베르누이분포 & 이항분포 (이산확률분포) (0) | 2023.10.24 |