작성자: admin 작성일시: 2016-10-01 21:04:39 조회수: 116 다운로드: 30
카테고리: 기초 수학 태그목록:

이항 확률 분포

성공확률이 $\theta$ 인 베르누이 시도를 $N$번 하는 경우를 생각해 보자. 가장 운이 좋을 때에는 $N$번 모두 성공할 것이고 가장 운이 나쁜 경우에는 한 번도 성공하지 못할 겻이다. $N$번 중 성공한 횟수를 확률 변수 $X$ 라고 한다면 $X$의 값은 0 부터 $N$ 까지의 정수 중 하나가 될 것이다.

이러한 확률 변수를 이항 분포(binomial distribution)를 따르는 확률 변수라고 하며 다음과 같이 표시한다.

$$ X \sim \text{Bin}(x;N,\theta) $$

이항 확률 분포를 수식으로 묘사해 보자.

0 또는 1이 나오는 베르누이 확률 분포를 따르는 확률 변수 $Y$를 가정한다.

$$ Y \sim \text{Bern}(y;\theta) $$

이 확률 변수의 $N$개의 샘플을 $y_1, y_2, \cdots, y_N$라고 하자. 이 값은 모두 0(실패) 아니면 1(성공) 이라는 값을 가지기 때문에 $N$번 중 성공한 횟수는 $N$개의 샘플 값의 총합이다.

$$ X = \sum_{i=1}^N y_i $$

이항 확률 분포를 수식으로 쓰면 다음과 같다.

$$ \text{Bin}(x;N,\theta) = \binom N x \theta^x(1-\theta)^{N-x} $$

이 식에서 $()$ 기호와 $!$ 기호는 각각 조합(combination)과 팩토리얼(factorial)을 뜻하면 다음과 같이 정의한다.

$$ \binom N x =\dfrac{N!}{x!(N-x)!} $$$$ N! = N\cdot (N-1) \cdots 2 \cdot 1 $$

베르누이 분포의 시뮬레이션

인수 sizeprob로 시행횟수 $N$ 및 성공확률 $\theta$를 설정할 수 있다.

In [1]:
N <- 10
theta <- 0.6

dbinom 명령을 사용하면 확률 질량 함수(pmf: probability mass function)를 계산할 수 있다.

In [6]:
xx = 0:N
barplot(dbinom(xx, size=N, prob=theta), 
        names.arg=0:N, ylab="P(x)", 
        main="pmf of binomial distribution")

시뮬레이션을 하려면 rbinom 메서드를 사용한다.

In [11]:
set.seed(0)
x <- rbinom(100, size=N, prob=theta)
x
  1. 4
  2. 7
  3. 7
  4. 6
  5. 4
  6. 7
  7. 4
  8. 4
  9. 5
  10. 6
  11. 8
  12. 7
  13. 7
  14. 5
  15. 6
  16. 5
  17. 6
  18. 5
  19. 2
  20. 7
  21. 5
  22. 4
  23. 7
  24. 5
  25. 8
  26. 7
  27. 6
  28. 9
  29. 6
  30. 4
  31. 7
  32. 6
  33. 6
  34. 6
  35. 7
  36. 5
  37. 5
  38. 5
  39. 8
  40. 5
  41. 6
  42. 5
  43. 5
  44. 5
  45. 6
  46. 6
  47. 5
  48. 9
  49. 6
  50. 5
  51. 5
  52. 6
  53. 4
  54. 6
  55. 7
  56. 8
  57. 8
  58. 7
  59. 6
  60. 5
  61. 6
  62. 4
  63. 7
  64. 6
  65. 7
  66. 5
  67. 7
  68. 6
  69. 5
  70. 8
  71. 4
  72. 7
  73. 4
  74. 7
  75. 7
  76. 6
  77. 4
  78. 4
  79. 6
  80. 5
  81. 3
  82. 6
  83. 5
  84. 6
  85. 7
  86. 5
  87. 7
  88. 5
  89. 8
  90. 7
  91. 8
  92. 7
  93. 8
  94. 5
  95. 4
  96. 5
  97. 5
  98. 6
  99. 6
  100. 5

결과는 tabulate 명령으로 카운팅할 수 있다.

In [17]:
barplot(tabulate(x + 1, nbins=N+1), names.arg=0:N)

이론적인 확률 분포와 샘플의 확률 분포를 동시에 나타내려면 다음과 같은 코드를 사용한다.

In [23]:
y1 <- dbinom(0:N, size=N, prob=theta) * 100
y2 <- tabulate(x + 1, nbins=N+1)
t <- rbind(y1, y2)
rownames(t) <- c("theoretic", "simulation")
colnames(t) <- 0:N
t
012345678910
theoretic0.010485760.1572864 1.061683 4.246733 11.14767 20.06581 25.08227 21.49908 12.09324 4.031078 0.6046618
simulation0.000000000.0000000 1.000000 1.000000 13.00000 27.00000 25.00000 22.00000 9.00000 2.000000 0.0000000
In [35]:
barplot(t, beside=TRUE, legend.text=TRUE, args.legend=list(x="topleft"))

이항 분포의 모멘트

이항 분포의 기댓값과 분산은 각각 다음과 같다.

기댓값

$$ \text{E}[X] = N\theta $$

(증명)

$$ \text{E}[X] = \text{E} \left[ \sum_{i=1}^N \text{Bern}_i \right] = \sum_{i=1}^N \text{E}[ \text{Bern}_i ] = N\theta $$

여기에서 $\text{Bern}_i$는 $i$번째 시도의 결과로 나온 숫자로써 서로 독립인 베르누이 분포이다.

분산

$$ \text{Var}[X] = N\theta(1-\theta)$$

(증명)

$$ \text{Var}[X] = \text{Var} \left[ \sum_{i=1}^N \text{Bern}_i \right] = \sum_{i=1}^N \text{Var}[ \text{Bern}_i ] = N\theta(1-\theta)$$

연습 문제 1

베르누이 확률 분포의 모수가 다음과 같을 경우에 각각 샘플을 생성한 후 기댓값과 분산을 구하고 앞의 예제와 같이 확률 밀도 함수와 비교한 카운트 플롯을 그린다.

샘플의 갯수가 10개인 경우와 1000개인 경우에 대해 각각 위의 계산을 한다.

  1. $\theta = 0.5$, $N=5$
  2. $\theta = 0.9$, $N=10$

질문/덧글

아직 질문이나 덧글이 없습니다. 첫번째 글을 남겨주세요!