주의: 본인 블로그에 올린 내용들은 통계 공부를 정리한 내용이며, 정리 과정 중 틀린 내용들이 포함될 수 있습니다. 혹시 제가 잘못 알고 있는 내용을 가르쳐 주시는 것은 언제든 환영합니다.
오늘은 정규분포를 이용한 신뢰구간 구하기 문제를 정리한다. (참조: Head First Statistics p522, p557)
페너티킥을 찬다. 성공확률은 0.1 이다. 30번을 차서 2골 이하가 될 확률은?
이건, 이항분포 문제이다. n = 30, p = 0.1 r = 2 일 때, P(x <= 2) = ?
n <- 30
p <- 0.1
q <- 1 - p
r <- 2
# lower.tail = TRUE => P(x <= r)
pbinom(q = r, size = n, prob = p, lower.tail = T)
## [1] 0.4113512
이항분포는 특정한 조건에서 푸아송분포 문제로 근사화 해서 풀수 있다. 위의 문제를 푸아송분포로 풀면 다음과 같다.
lambda = E(X) = Var(X) = 이항분포의 E(X) = n * p = 30 * 0.1 = 3
ppois(q = r, lambda = n * p, lower.tail = T)
## [1] 0.4231901
이번에는 위의 문제를 이렇게 보자. 30번 시도해서 3번 골을 넣었다.
이 사람이 다시 30번 찼을 경우, 골을 넣을 신뢰구간은 어떻게 되는가? 즉, 몇골 사이가 될까?
신뢰구간은 관측된 샘플로부터 통계치를 이용해, 모집단의 모수(parameter)가 포함될 특정구간을 신뢰수준에서 결정하는 문제이다.
따라서, 신뢰구간을 구하려면 신뢰수준을 먼저 결정해야 한다. 보통 신뢰수준은 95% 로 결정한다. 정규분포에서 신뢰수준 95%는 평균을 중심으로 표준편차의 (+-) 1.96배를 신뢰구간으로 정하고 있다.
위 문제를 이항분포의 정규분포 근사화를 이용해서 풀어보자.
mu <- n * p
interval <- mu + c(-1.96, 1.96) * sqrt(p * q)
interval
## [1] 2.412 3.588
그런데, 기대값과 분산이 동일한(또는 비슷한) 경우라면 이항분포는 푸아송분포로 근사화 될 수 있다. 즉, 정규분포로 변환 후 신뢰구간을 구할 수 있다.
이번에는 푸아송분포로 위의 신뢰구간 문제를 풀어보자. n이 충분히 크고, 확률p는 작으니까 lambda는 n * p가 된다.
mu <- n * p
lambda <- mu
interval <- mu + c(-1.96, 1.96) * sqrt(lambda / n)
interval
## [1] 2.380194 3.619806
즉, 2.3~3.6골 정도가 될 확률이 95%라고 보면 되겠다.
지난 30일 동안 하루 평균 손님이 10명 정도 방문했다. 매달 손님이 방문할 수를 95% 신뢰수준에서 생각해보자.
모집단을 푸아송분포를 따른다고 한다.
lambda = 10, E(X) = Var(X), n = 30
X_bar ~ N(mu, sigma^2/n) = N(lambda, lambda / n)
lambda <- 10
n <- 30
interval <- 10 + c(-1.96, 1.96) * sqrt(lambda / n)
interval
## [1] 8.868393 11.131607
8.8 ~ 11.1명 정도가 되겠다.
아래 예제는 ‘세상에서 가장 쉬운 통계학 입문’ p123 페이지를 참조한다.
공정한 동전이 있다. 앞면이 나올 확률은 0.5이다. 앞면이 10번 나왔다면, 신뢰수준 95% 수준에서, 동전을 몇번 정도 던졌다고 생각해도 될까?
동전 던지기는 이항분포를 따른다. X ~ B(n, p)
p = 0.5, E(X) = n * p = n / 2, Var(X) = npq = n/4
이를 정규분포로 변환하면,
X ~ N(N / 2, N /4)가 된다.
문제의 핵심은 모수가 어떤 수 N일 경우, 그 모수의 신뢰구간이 앞면 10번을 포함하느냐? 안하느냐?를 구분하는 것이다.
그럼, 모수 N은 얼마가 되야 하는가?
N <- 10 # 동전 던지기 총 횟수(모수, parameter)
p <- 0.5 # 동전 앞면이 나올 확률
coin <- 10 # 실제 앞면이 나온 횟수
while(N < 40)
{
# 모수 N일때의 신뢰구간 하한과 상한을 구한다.
interval_low <- N * p - 1.96 * sqrt(N / 4)
interval_high <- N * p + 1.96 * sqrt(N / 4)
# 모수 N일때의 신뢰구간 안에 실제 앞면이 나온 횟수가 포함되는지 확인한다.
if(interval_low <= coin && interval_high >= coin)
{
print (N)
}
N <- N + 1
}
## [1] 13
## [1] 14
## [1] 15
## [1] 16
## [1] 17
## [1] 18
## [1] 19
## [1] 20
## [1] 21
## [1] 22
## [1] 23
## [1] 24
## [1] 25
## [1] 26
## [1] 27
## [1] 28
## [1] 29
## [1] 30
즉, 13번에서 30번 정도 던져야 그 중 10번은 앞면이 나올 가능성이 95% 정도안에 든다.