[R] 초기하분포(poisson distribution)의 정의, 함수, 예제, 그래프
#1. 초기하분포 정의
크기가 M인 모집단이 있습니다. 이 모집다 안에는 우리가 원하는 원소가 k개 들어 있습니다. 이 모집단에서 크기가 n인 표본을 뽑았습니다. 이 표본 안에 우리가 원하는 원소가 x개 들어있을 확률을 p(x)라고 합시다. p(x)의 분포가 초기하분포입니다.
위에서 사용한 기호는 일반적으로 사용하는 기호입니다. R에서는 기호사용이 다릅니다. m+n이 모집단의 크기, m이 우리가 원하는 원소의 개수, k가 표본의 크기입니다. 따라서 수식이 아래와 같이 바뀝니다.
#2. 초기하분포와 관련된 함수
dhyper : 확률밀도함수(probability density function)
phyper : 누적분포함수(cumulative distribution function)
qhyper : 누적분포함수의 역함수(inverse cumulative distribution function)
rhyper : 임의추출
#3. 사용 방법
누적분포함수의 경우 왼쪽꼬리가 디폴트입니다.
dhyper(x, m, n, k, log = FALSE)
phyper(q, m, n, k, lower.tail = TRUE, log.p = FALSE)
qhyper(p, m, n, k, lower.tail = TRUE, log.p = FALSE)
rhyper(nn, m, n, k)
입력변수를 쉽게 설명하면 아래와 같습니다.
m : 모집단 안에 있는 우리가 원하는 원소의 수
n : 모집단 안에 있는 우리가 원하지 않는 원소의 수
k : 표본의 크기
dhyper(사건발생횟수, m, n, k, log = FALSE)
phyper(사건발생횟수, m, n, k, lower.tail = TRUE, log.p = FALSE)
qhyper(누적확률, m, n, k, lower.tail = TRUE, log.p = FALSE)
rhyper(표본크기, m, n, k)
#4. 예제
1) dhyper
크기가 100인 모집단 안에 우리가 원하는 원소가 10개 들어 있습니다. 이 모집단에서 크기가 20인 표본을 뽑을 때, 우리가 원하는 원소가 3개 들어있을 확률을 구해봅시다.
> dhyper(3,10,90,20)
[1] 0.2092081
2) phyper
크기가 100인 모집단 안에 우리가 원하는 원소가 10개 들어 있습니다. 이 모집단에서 크기가 20인 표본을 뽑을 때, 우리가 원하는 원소가 0개 들어있을 확률부터 3개 들어있을 확률까지의 누적확률을 구해봅시다.
> phyper(3,10,90,20)
[1] 0.8904281
> dhyper(0,10,90,20)+dhyper(1,10,90,20)+dhyper(2,10,90,20)+dhyper(3,10,90,20)
[1] 0.8904281
3) qhyper
크기가 100인 모집단 안에 우리가 원하는 원소가 10개 들어 있습니다. 이 모집단에서 크기가 20인 표본을 뽑을 때, 누적확률이 0.5가 될 때가지의 발생횟수입니다.
> qhyper(0.5,10,90,20)
[1] 2
4) rhyper
모집단의 크기가 100, 모집단 안에 들어있는 원하는 원소의 수가 10, 표본의 크기가 20인 초기하분포에서 임의로 5개의 값을 추출합니다.
#5. 그래프
1) 확률질량함수
par(mar=c(5.1, 4.1, 4.1, 8.5),xpd=TRUE)
par(mfrow=c(2,2))
m=c(10,50,150,300)
n=c()
k=c(10,30,50,90)
for (j in 1:length(k))
{
plot(0,type="n",
xlim=c(0,100),ylim=c(0,1),ann=FALSE)
for (i in 1:length(m))
{
x=0:100
y=dhyper(x,m[i],500-m[i],k[j])
points(x,y,type="l",col=rainbow(length(m))[i])
}
title(main=paste0("PMF of hyper,"," k=",k[j],', m+n=500"'),xlab="x",ylab="p(x)",cex.main=2,cex.lab=1.2)
box("outer",col="gray")
legend("topright",inset=c(-0.30,0), legend=paste("m=",m),col=rainbow(length(m)),lty=1)
}
2) 누적분포함수
par(mar=c(5.1, 4.1, 4.1, 8.5),xpd=TRUE)
par(mfrow=c(2,2))
m=c(10,50,150,200)
n=c()
k=c(10,30,50,90)
for (j in 1:length(k))
{
plot(0,type="n",
xlim=c(0,100),ylim=c(0,1),ann=FALSE)
for (i in 1:length(m))
{
x=0:100
y=phyper(x,m[i],500-m[i],k[j])
points(x,y,type="l",col=rainbow(length(m))[i])
}
title(main=paste0("CMF of hyper,"," k=",k[j],', m+n=500"'),xlab="x",ylab="p(x)",cex.main=2,cex.lab=1.2)
box("outer",col="gray")
legend("topright",inset=c(-0.30,0), legend=paste("m=",m),col=rainbow(length(m)),lty=1)
}
'2. 확률분포 > 이산확률분포' 카테고리의 다른 글
[R] 푸아송분포(poisson distribution)의 정의, 함수, 예제, 그래프 (0) | 2019.11.28 |
---|---|
[R] 음이항분포(negative binomial distribution) 의 정의, 함수, 예제, 그래프 (0) | 2019.11.28 |
[R] 기하분포(geometric distribution)의 정의, 함수, 예제, 그래프 (1) | 2019.11.28 |
[R] 이항분포(binomial distribution)의 정의, 함수, 예제, 그래프 (2) | 2019.11.28 |
댓글