126강에서 확률변수라는 틀을 세웠습니다. 이제 그 틀에 구체적인 분포를 채웁니다.
가장 단순한 확률변수부터 시작합니다. 값이 두 개뿐인 것입니다.
이보다 단순할 수 없습니다. 값이 하나뿐이면 무작위가 아니고, 두 개면 최소한의 불확실성입니다. 이것을 베르누이 확률변수라 합니다.
단순하지만 쓰임이 압도적입니다. 어떤 사건이든 "일어났다"와 "안 일어났다"로 나눌 수 있으므로, 모든 사건에 베르누이 확률변수가 하나씩 딸립니다.
이를 지시함수라 하며, 이므로 확률이 곧 기댓값이 됩니다. 132강에서 이 다리를 정식으로 놓습니다.
그리고 이것을 번 반복하면 이항분포가 됩니다.
이 한 줄에 앞의 세 강의가 모두 들어 있습니다.
| 부분 | 어디서 왔는가 |
|---|---|
| p^{k}(1-p)^ | 124강 독립이라 곱합니다 |
| \binom{n} | 19강 조합, 경로의 개수입니다 |
| 총합이 | 20강 이항정리입니다 |
문제. , 인 확률변수를 봅니다.
(1) 와 를 구하세요.
(2) 분산을 구하세요.
(3) 분산이 최대가 되는 를 찾으세요.
생각의 실마리. 가 아니면 이므로 입니다. 이 사소해 보이는 사실이 계산을 전부 끝냅니다.
풀이. (1) 기댓값은 값에 확률을 곱해 더한 것입니다.
그리고 이므로 입니다.
(2) 분산 공식으로
(3) 검산 결과입니다.
| 표준편차 | ||||
|---|---|---|---|---|
**에서 최대 **이고 이나 에서 입니다. 가 위로 볼록한 이차식이므로 꼭짓점이 입니다.
이 문제에서 배우는 것: 베르누이 분포.
베르누이 분포. 이면
이나 에서 분산이 인 것은 무작위성이 없다는 뜻입니다. 결과가 하나로 정해져 있습니다.
에서 분산이 최대인 것은 가장 예측하기 어렵다는 뜻입니다. 이 관찰이 정보이론으로 이어집니다. 엔트로피
도 에서 최대이며, 불확실성을 재는 두 척도가 같은 곳에서 정점입니다.
지시함수. 사건 에 대해 는 가 일어나면 , 아니면 입니다.
이므로 모든 사건이 베르누이 확률변수 하나에 대응합니다. 이 대응이 다음 두 세계를 잇습니다.
| 사건의 언어 | 확률변수의 언어 |
|---|---|
| 와 가 독립 | 와 가 독립 |
| 1-\mathbf{1}_ |
둘째 줄이 유용합니다. 이므로 교집합의 확률이 곱의 기댓값이 되며, 138강에서 공분산을 계산할 때 그대로 쓰입니다.
바로 확인 1.
확인 1-1. 베르누이 분포의 평균과 분산을 쓰세요.
답. 와 입니다.
확인 1-2. 인 이유를 쓰세요.
답. 가 또는 이라 이기 때문입니다.
확인 1-3. 분산이 최대가 되는 와 그 값을 쓰세요.
답. 이며 입니다.
문제. 성공확률 인 시행을 독립으로 번 합니다.
(1) 성공이 정확히 번일 확률을 세워 보세요.
(2) 부터 까지 계산하고 누적을 확인하세요.
(3) 총합이 인 근거를 쓰세요.
생각의 실마리. 성공이 번인 결과는 여러 가지입니다. 각 결과의 확률이 같은지, 그런 결과가 몇 개인지를 나눠서 봅니다.
풀이. (1) 성공을 S, 실패를 F라 하면 한 결과는 길이 인 문자열입니다. 성공이 번인 어떤 문자열이든 독립이므로 확률이 곱이고
이며 순서와 무관하게 같습니다. 그런 문자열의 개수는 자리 중 성공 자리 개를 고르는 방법이므로 입니다.
(2) 검산 결과입니다.
| \binom{n} | p^{k}(1-p)^ | 누적 | ||
|---|---|---|---|---|
**합이 정확히 **입니다.
(3) 20강의 이항정리에서
이항정리가 정규화를 보장합니다.
이 문제에서 배우는 것: 이항분포.
이항분포. 이면
이름이 이항정리에서 왔습니다. 확률질량함수가 의 전개에서 나오는 각 항입니다.
베르누이 시행의 세 조건. 이항분포가 되려면 다음 셋이 필요합니다.
각 시행의 결과가 둘뿐이고, 성공확률 가 매 시행 같으며, 시행들이 서로 독립이어야 합니다.
세 조건이 모두 필요합니다.
| 조건이 깨지면 | 예 | 실제 분포 |
|---|---|---|
| 가 변합니다 | 학습하는 시행자 | 이항이 아닙니다 |
| 독립이 아닙니다 | 비복원 추출 | 초기하분포 |
| 결과가 셋 이상 | 주사위 눈 | 다항분포 |
둘째 줄이 실무에서 가장 흔합니다. 123강 문제 2의 항아리에서 비복원으로 뽑으면 두 번째 확률이 첫 결과에 의존하므로 이항이 아닙니다. 다만 모집단이 표본보다 훨씬 크면 이항으로 근사할 수 있으며, 통상 표본이 모집단의 이하일 때 씁니다.
바로 확인 2.
확인 2-1. 이항분포의 확률질량함수를 쓰세요.
답. 입니다.
확인 2-2. 총합이 인 근거를 쓰세요.
답. 이항정리로 이기 때문입니다.
확인 2-3. 베르누이 시행의 세 조건을 쓰세요.
답. 결과가 둘, 성공확률이 일정, 시행이 독립이어야 합니다.
문제. 여러 에 대해 이항분포의 평균과 분산을 봅니다.
(1) 정의대로 직접 계산하세요.
(2) 및 와 비교하세요.
(3) 왜 그렇게 되는지 설명하세요.
생각의 실마리. 를 직접 계산하는 것은 번거롭습니다. 를 무엇의 합으로 보면 쉬워집니다.
풀이. (1)(2) 검산 결과입니다.
| 직접 계산 | 직접 | ||||
|---|---|---|---|---|---|
네 줄 모두 정확히 일치합니다.
(3) 를 베르누이 개의 합으로 봅니다.
"번째 시행이 성공인가"를 각각 과 로 기록하면 그 합이 총 성공 횟수입니다. 그러면 문제 1의 결과를 번 쓰면 됩니다.
이 문제에서 배우는 것: 합으로 분해하기.
기댓값의 선형성. 이며 독립이 아니어도 성립합니다.
분산의 가법성. 이며 독립일 때만 성립합니다.
이 비대칭이 대단히 중요합니다. 기댓값은 언제나 더할 수 있지만 분산은 조건이 붙습니다. 일반적으로는 공분산 항이 붙습니다.
138강에서 정식으로 다루며, 독립이면 공분산이 이라 가법성이 나옵니다.
합으로 분해하는 수법은 이 강의를 넘어 계속 쓰입니다.
| 상황 | 무엇의 합으로 보는가 |
|---|---|
| 이항분포 | 베르누이 개 |
| 표본평균 | 관측값 개의 합을 으로 나눈 것 |
| 생일 문제 기대 충돌 수 | 쌍마다의 지시함수 |
| 교란순열 기대 고정점 수 | 원소마다의 지시함수 |
셋째와 넷째 줄이 122강의 문제들입니다. 그때는 세어서 풀었는데, 지시함수의 합으로 보면 기댓값이 곧바로 나옵니다. 생일 문제에서 충돌 쌍의 기대 개수는 이고, 교란순열에서 고정점의 기대 개수는 입니다. 후자가 강에서 가 나온 이유입니다.
바로 확인 3.
확인 3-1. 이항분포의 평균과 분산을 쓰세요.
답. 와 입니다.
확인 3-2. 기댓값의 선형성에 독립이 필요합니까?
답. 필요하지 않습니다.
확인 3-3. 분산의 가법성에는 무엇이 필요합니까?
답. 독립이 필요하며 일반적으로는 공분산 항이 붙습니다.
문제. 여러 에서 이항분포의 모양을 봅니다.
(1) 최빈값을 수치로 찾고 와 비교하세요.
(2) 일치하지 않는 경우를 조사하세요.
(3) 왜도를 계산하고 와 의 역할을 정리하세요.
생각의 실마리. 최빈값은 가 가장 큰 입니다. 연속한 두 확률의 비를 보면 어디까지 증가하고 어디부터 감소하는지 알 수 있습니다.
풀이. (1)(2) 검산 결과입니다.
| 최빈 들 | 평균 | 왜도 | |||
|---|---|---|---|---|---|
| \ | |||||
| \ | |||||
| \ | |||||
| \ | |||||
| \ |
마지막 줄에서 최빈값이 둘입니다. 가 정수인 경우이며, 검산에서
으로 **차이가 정확히 **입니다.
(3) 왜도는 에서 양수, 에서 , 에서 음수이며, 이 커지면 으로 갑니다.
이 문제에서 배우는 것: 최빈값과 대칭성.
최빈값. 연속한 확률의 비가
이며 이 값이 보다 크면 증가, 작으면 감소합니다. 부등식을 풀면 에서 증가하므로 최빈값이 입니다.
**가 정수이면 그 지점에서 비가 정확히 **이 되어 두 값이 같아집니다. , 에서 이므로 과 가 공동 최빈이며, 검산의 차이 이 그 확인입니다.
왜도. 이항분포의 왜도는
이며 분포가 어느 쪽으로 치우쳤는지를 잽니다.
분자와 분모의 역할이 다릅니다.
| 요소 | 하는 일 |
|---|---|
| 치우침의 방향과 크기를 정합니다 | |
| \sqrt | 이 커지면 치우침을 지웁니다 |
이면 완전 대칭이고, 가 극단으로 갈수록 한쪽 꼬리가 길어집니다. 그런데 을 키우면 어떤 에서도 왜도가 으로 갑니다. 표에서 인데 이라 왜도가 로 작습니다.
이것이 문제 5의 정규 근사가 통하는 이유입니다. 이 크면 이항분포가 대칭적인 종 모양이 되며, 143강 중심극한정리의 특수한 경우입니다.
바로 확인 4.
확인 4-1. 이항분포의 최빈값을 쓰세요.
답. 입니다.
확인 4-2. 최빈값이 둘이 되는 조건을 쓰세요.
답. 가 정수일 때이며 그 값과 그보다 작은 값이 같습니다.
확인 4-3. 왜도를 쓰고 의 역할을 쓰세요.
답. 이며 이 커지면 으로 갑니다.
문제. 이항분포에서 의 두 방식을 봅니다.
(1) 를 고정한 채 을 키우면 어떻게 되는지 보세요.
(2) 를 고정한 채 을 키우면 어떻게 되는지 보세요.
(3) 두 극한의 차이를 정리하세요.
생각의 실마리. 이 커질 때 를 어떻게 하느냐가 갈림길입니다. 평균 를 붙잡느냐, 를 붙잡느냐입니다.
풀이. (1) 로 고정하고 을 키운 검산 결과입니다.
| 최대오차 | |||||
|---|---|---|---|---|---|
| 3.13\times10^ | |||||
| 2.74\times10^ | |||||
| 2.71\times10^ | |||||
| 2.71\times10^ |
**포아송 의 값은 , , **이며 이 열 배 늘 때마다 오차가 열 배 줄어듭니다.
(2) 을 고정하고 으로 두면 , 입니다.
| 정확 | 보정 없음 오차 | 보정 후 오차 | ||
|---|---|---|---|---|
| 1.91\times10^ | 2.62\times10^ | |||
| 2.55\times10^ | 7.54\times10^ | |||
| 4.91\times10^ | 5.68\times10^ | |||
| 2.15\times10^ | 1.05\times10^ | |||
| 2.05\times10^ | 1.53\times10^ |
중심 근처에서 연속성 보정이 오차를 크게 줄입니다. 에서 이 로 약 배 좋아집니다.
그런데 에서는 보정이 오히려 조금 나빠집니다. 평균에서 표준편차 떨어진 꼬리이며, 정규 근사 자체가 꼬리에 약하기 때문입니다.
(3) 두 극한이 갈립니다.
이 문제에서 배우는 것: 이항분포의 두 극한.
포아송 극한. , , 이면
드문 사건이 많이 시도되는 상황입니다.
정규 극한. 가 고정이고 이면
흔한 사건이 많이 누적되는 상황입니다.
어느 쪽을 쓸지는 의 크기가 정합니다.
| 상황 | 근사 | 조건 |
|---|---|---|
| 가 작게 유지됨 | 포아송 | , |
| 와 가 큼 | 정규 | 둘 다 또는 |
표의 마지막 줄이 검산에서 , 인 경우이며 , 으로 조건을 넉넉히 만족합니다.
연속성 보정. 이산분포를 연속으로 근사할 때 를 더해 구간을 넓힙니다.
정수 에 있던 확률질량이 에 퍼진 것으로 보는 것입니다. 검산의 표가 그 효과를 보여 주며, 중심에서는 크게 이득이고 꼬리에서는 이득이 없습니다.
꼬리에 정확도가 필요하면 근사 대신 부등식을 씁니다. 146강의 호에프딩 부등식이 꼬리 확률의 상한을 지수적으로 주며, 근사가 아니라 보장입니다.
바로 확인 5.
확인 5-1. 포아송 극한의 조건을 쓰세요.
답. , 이면서 로 고정되어야 합니다.
확인 5-2. 정규 근사를 쓸 조건을 쓰세요.
답. 와 가 둘 다 충분히 커야 합니다.
확인 5-3. 연속성 보정이 무엇이며 어디서 효과적인지 쓰세요.
답. 를 더하는 것이며 중심 근처에서 효과적이고 꼬리에서는 이득이 적습니다.
| 분포 | 질량함수 | 평균 | 분산 |
|---|---|---|---|
| 베르누이 | p^{x}(1-p)^ | ||
| 이항 | \binom{n}{k}p^{k}(1-p)^ |
| 성질 | 내용 |
|---|---|
| 정규화 근거 | 이항정리 |
| 합의 분해 | 베르누이 개의 합 |
| 최빈값 | |
| 공동 최빈 | 가 정수일 때 |
| 왜도 | (1-2p)/\sqrt |
| 극한 | 조건 | 결과 |
|---|---|---|
| 포아송 | 고정 | |
| 정규 | 고정, |
| 자주 하는 실수 | 바로잡기 |
|---|---|
| 비복원 추출에 이항을 씁니다 | 초기하이며 모집단이 크면 근사만 가능합니다 |
| 분산을 독립 없이 더합니다 | 공분산 항이 붙습니다 |
| 연속성 보정을 빠뜨립니다 | 중심 근처에서 오차가 수십 배 납니다 |
| 꼬리에서 정규 근사를 믿습니다 | 부등식을 쓰는 편이 안전합니다 |
문제 6. 베르누이 분포의 평균과 분산을 쓰세요.
답. 와 입니다.
문제 7. 인 이유를 쓰세요.
답. 가 또는 이라 이기 때문입니다.
문제 8. 분산이 최대가 되는 와 그 값을 쓰세요.
답. 이며 입니다.
문제 9. 지시함수와 확률의 관계를 쓰세요.
답. 이며 확률이 기댓값입니다.
문제 10. 이항분포의 질량함수를 쓰세요.
답. 입니다.
문제 11. 총합이 인 근거를 쓰세요.
답. 이항정리로 입니다.
문제 12. 베르누이 시행의 세 조건을 쓰세요.
답. 결과가 둘, 성공확률이 일정, 시행이 독립이어야 합니다.
문제 13. 이항분포의 평균과 분산을 쓰고 유도 방법을 쓰세요.
답. 와 이며 베르누이 개의 합으로 봅니다.
문제 14. 기댓값의 선형성과 분산의 가법성에서 조건의 차이를 쓰세요.
답. 선형성은 조건이 없고 가법성은 독립이 필요합니다.
문제 15. 이항분포의 최빈값과 공동 최빈 조건을 쓰세요.
답. 이며 가 정수면 둘이 됩니다.
문제 16. 왜도를 쓰고 일 때의 값을 쓰세요.
답. 이며 에서 입니다.
문제 17. 이항분포의 두 극한과 각각의 조건을 쓰세요.
답. 고정이면 포아송, 고정이고 이 크면 정규입니다.
문제 18. 연속성 보정을 쓰고 어디서 효과적인지 쓰세요.
답. 에 를 더하는 것이며 중심 근처에서 효과적입니다.
심화 1. 베르누이 시행의 조건이 깨지는 경우를 정리하세요.
세 조건 각각이 깨질 때 다른 분포가 나옵니다.
| 깨진 조건 | 상황 | 분포 |
|---|---|---|
| 독립 | 비복원 추출 | 초기하분포 |
| 결과가 둘 | 범주가 개 | 다항분포 |
| 가 일정 | 시행마다 p_ | 푸아송 이항분포 |
| 가 무작위 | p\sim\text | 베타이항분포 |
초기하분포는 크기 에서 성공이 개일 때 개를 비복원으로 뽑는 경우입니다.
평균은 이항과 같은 이지만 분산이 작습니다.
뒤에 붙은 인자를 유한모집단 보정이라 하며 언제나 이하입니다. 비복원이면 뽑을수록 남은 것이 정해지므로 변동이 줄어듭니다. 이면 이 인자가 로 가서 이항과 같아집니다.
넷째 줄이 실무에서 중요합니다. 클릭률이 사용자마다 다르면 관측된 분산이 이항보다 큽니다. 이를 과산포라 하며, 이항 모형을 그대로 쓰면 신뢰구간이 너무 좁아집니다. 131강의 베타분포가 해법의 재료입니다.
심화 2. 이항계수의 항등식을 정리하세요.
20강에서 배운 항등식들이 확률의 성질로 읽힙니다.
| 항등식 | 확률의 뜻 |
|---|---|
| \binom{n}{k}=\binom{n} | 성공과 실패를 바꿔도 대칭입니다 |
| \binom{n}{k}=\binom{n-1}{k-1}+\binom{n-1} | 마지막 시행으로 조건을 겁니다 |
| \sum_{k}\binom{n}{k}=2^ | 에서 정규화입니다 |
| \sum_{k}k\binom{n}{k}=n2^ | 의 평균이 입니다 |
| \sum_{k}\binom{n}{k}^{2}=\binom{2n} | 반데르몬드 항등식입니다 |
둘째 줄이 파스칼의 규칙이며 확률로 읽으면 전확률의 법칙입니다. 마지막 시행이 성공이면 앞에서 번, 실패면 앞에서 번 성공해야 합니다.
이 점화식이 이항분포를 계산하는 안정적인 방법입니다. 를 직접 계산하면 큰 에서 넘침이 나지만, 점화식은 확률만 다루므로 안전합니다.
대칭성도 유용합니다. 이면 이므로
이며 꼬리 하나만 계산하면 반대쪽이 따라옵니다.
심화 3. 이항분포의 꼬리를 부등식으로 잡으세요.
문제 5에서 정규 근사가 꼬리에 약하다고 했습니다. 근사 대신 보장이 필요할 때 부등식을 씁니다.
호에프딩 부등식. 이면
지수적으로 작아지며 에 의존하지 않습니다.
이 얼마나 필요한지를 이 식으로 정합니다. 오차 이내로 를 추정하려면
| 일 때 | |
|---|---|
오차를 절반으로 줄이려면 표본이 네 배 필요합니다. 이 분모에 있기 때문이며, 모든 표본 크기 계산의 기본 형태입니다.
더 날카로운 부등식도 있습니다. 체르노프 경계는 를 반영해 가 작을 때 훨씬 강한 결과를 줍니다.
146강에서 두 부등식을 함께 다룹니다.
심화 4. 이항분포의 켤레 사전이 베타분포임을 보이세요.
125강 심화 4에서 라플라스의 후속 법칙을 유도했습니다. 그 계산을 일반화합니다.
에 사전분포 를 주면
이고 번 중 번 성공을 관측하면 가능도가 이므로 사후는 이렇게 됩니다.
이것이 입니다. 사전과 사후가 같은 족이며, 이를 켤레 사전이라 합니다.
갱신 규칙이 놀랍도록 단순합니다.
| 관측 | 갱신 |
|---|---|
| 성공 하나 | |
| 실패 하나 |
두 개의 수만 들고 다니면 됩니다. 125강 심화 5의 온라인 갱신이 여기서 가장 단순한 형태로 나타납니다.
사후평균이 예측 확률입니다.
이면 균등 사전이고 가 되어 라플라스의 후속 법칙이 나옵니다.
와 를 가상의 관측으로 읽을 수 있습니다. 는 "이미 성공 번, 실패 번을 본 것과 같은 믿음"이며, 사전의 강도를 관측 수로 환산할 수 있습니다.
톰슨 샘플링이 이 구조를 그대로 씁니다. 각 선택지에 사후를 유지하고 매 회 표본을 뽑아 가장 큰 것을 고릅니다. 131강에서 베타분포를 다룹니다.
심화 5. 로지스틱 회귀의 가능도가 이항임을 보이세요.
이항분포의 가 상수가 아니라 입력에 의존하면 회귀 모형이 됩니다.
관측이 독립이면 가능도가 곱이고 로그를 취하면 합이 됩니다.
오른쪽이 정확히 교차엔트로피 손실의 음수입니다. 곧 로지스틱 회귀의 손실함수는 베르누이 가능도에서 유도된 것이며 임의로 고른 것이 아닙니다.
왜 시그모이드인지도 설명됩니다. 125강 문제 2의 로그오즈 형태에서
선형 모형을 로그오즈에 두면 확률이 시그모이드가 됩니다. 확률은 에 갇혀 선형으로 두기 곤란한데, 로그오즈는 실수 전체를 달리므로 선형 모형이 자연스럽습니다.
205강에서 정식으로 다루며, 이항계수 가 에 의존하지 않아 최적화에서 사라진다는 점도 확인합니다.
심화 6. A/B 테스트의 표본 크기를 계산하세요.
두 변형의 전환율 와 를 비교합니다. 각 그룹에서 관측 수가 이항분포를 따릅니다.
차이의 표준오차가 출발점입니다. 두 그룹이 독립이므로 분산이 더해집니다.
근처에서 최악이므로 보수적으로 를 쓰면 입니다.
검출하고 싶은 최소 차이 를 유의수준 , 검정력 로 잡으려면
이며, , 검정력 이면 입니다.
| 기준 전환율 | 검출할 차이 | 그룹당 |
|---|---|---|
| 약 | ||
| 약 | ||
| 약 | ||
| 약 |
둘째 줄이 실무의 현실입니다. 전환율 에서 포인트 개선을 검출하려면 그룹당 만 사천 명이 필요합니다. 작은 개선일수록 표본이 제곱으로 늘어납니다.
흔한 실수 두 가지를 짚습니다. 첫째는 유의해질 때까지 들여다보다 멈추는 것이며, 125강 문제 5에서 본 대로 중단 규칙이 가능도에 들어가야 합니다. 둘째는 여러 지표를 동시에 보면서 보정하지 않는 것이며, 122강 심화 4의 본페로니 보정이 필요합니다.
import numpy as np, math
C = lambda n, k: math.comb(n, k)
# --- 문제 1: 0 과 1 만 갖는 가장 단순한 확률변수 ------------------------
print(" 베르누이: P(X=1)=p, P(X=0)=1-p. X 는 사건의 지시함수입니다")
print(" p E[X] E[X^2] Var[X] 표준편차")
for p in [0.0, 0.1, 0.3, 0.5, 0.7, 0.9, 1.0]:
m = p; m2 = p # X^2 = X 이므로 E[X^2] = p
print(" %9.2f %9.4f %9.4f %9.4f %11.6f" % (p, m, m2, m2 - m*m, np.sqrt(p*(1-p))))
print(" X^2 = X 라서 E[X^2] = E[X] = p 이고 Var = p - p^2 = p(1-p) 입니다")
print(" 분산은 p = 0.5 에서 최대 %.4f 이고 p = 0 또는 1 에서 0 입니다" % 0.25)
# 베르누이: P(X=1)=p, P(X=0)=1-p. X 는 사건의 지시함수입니다
# p E[X] E[X^2] Var[X] 표준편차
# 0.00 0.0000 0.0000 0.0000 0.000000
# 0.10 0.1000 0.1000 0.0900 0.300000
# 0.30 0.3000 0.3000 0.2100 0.458258
# 0.50 0.5000 0.5000 0.2500 0.500000
# 0.70 0.7000 0.7000 0.2100 0.458258
# 0.90 0.9000 0.9000 0.0900 0.300000
# 1.00 1.0000 1.0000 0.0000 0.000000
# X^2 = X 라서 E[X^2] = E[X] = p 이고 Var = p - p^2 = p(1-p) 입니다
# 분산은 p = 0.5 에서 최대 0.2500 이고 p = 0 또는 1 에서 0 입니다
# --- 문제 2: n 번 반복하면 계수가 조합이 된다 ---------------------------
n, p = 5, 0.3
print(" n = %d, p = %.1f 인 이항분포" % (n, p))
print(" k C(n,k) p^k (1-p)^(n-k) P(X=k) 누적")
acc = 0.0
for k in range(n+1):
t = (p**k)*((1-p)**(n-k)); pk = C(n, k)*t; acc += pk
print(" %5d %8d %16.8f %12.8f %12.8f" % (k, C(n, k), t, pk, acc))
print(" 합 %.10f 이며 이항정리 (p + (1-p))^n = 1^n = 1 이 근거입니다" % acc)
print(" 한 경로의 확률 p^k (1-p)^(n-k) 는 순서에 무관하고 경로 수가 C(n,k) 입니다")
# n = 5, p = 0.3 인 이항분포
# k C(n,k) p^k (1-p)^(n-k) P(X=k) 누적
# 0 1 0.16807000 0.16807000 0.16807000
# 1 5 0.07203000 0.36015000 0.52822000
# 2 10 0.03087000 0.30870000 0.83692000
# 3 10 0.01323000 0.13230000 0.96922000
# 4 5 0.00567000 0.02835000 0.99757000
# 5 1 0.00243000 0.00243000 1.00000000
# 합 1.0000000000 이며 이항정리 (p + (1-p))^n = 1^n = 1 이 근거입니다
# 한 경로의 확률 p^k (1-p)^(n-k) 는 순서에 무관하고 경로 수가 C(n,k) 입니다
# --- 문제 3: 평균과 분산은 합의 구조에서 나온다 -------------------------
print(" X = 베르누이 n 개의 합으로 보면 평균과 분산이 바로 나옵니다")
print(" n p 직접 계산 E[X] n*p 직접 Var[X] n*p*(1-p)")
for n2, p2 in [(5, 0.3), (20, 0.3), (20, 0.5), (100, 0.02)]:
ks = np.arange(n2+1)
pk = np.array([C(n2, int(k))*(p2**k)*((1-p2)**(n2-k)) for k in ks])
m = float(ks @ pk); v = float(((ks - m)**2) @ pk)
print(" %7d %5.2f %14.6f %10.4f %14.6f %12.6f"
% (n2, p2, m, n2*p2, v, n2*p2*(1-p2)))
print(" 기대값은 독립이 아니어도 더해지고 분산은 독립일 때만 더해집니다")
# X = 베르누이 n 개의 합으로 보면 평균과 분산이 바로 나옵니다
# n p 직접 계산 E[X] n*p 직접 Var[X] n*p*(1-p)
# 5 0.30 1.500000 1.5000 1.050000 1.050000
# 20 0.30 6.000000 6.0000 4.200000 4.200000
# 20 0.50 10.000000 10.0000 5.000000 5.000000
# 100 0.02 2.000000 2.0000 1.960000 1.960000
# 기대값은 독립이 아니어도 더해지고 분산은 독립일 때만 더해집니다
# --- 문제 4: 모양은 n 과 p 가 정한다 ------------------------------------
print(" 최빈값은 floor((n+1)p) 입니다")
print(" n p 최빈 k 들 floor((n+1)p) 평균 n*p 왜도")
for n3, p3 in [(10, 0.1), (10, 0.5), (10, 0.9), (50, 0.2), (7, 0.5)]:
pk = np.array([C(n3, k)*(p3**k)*((1-p3)**(n3-k)) for k in range(n3+1)])
modes = [k for k in range(n3+1) if abs(pk[k] - pk.max()) < 1e-15]
th = int(np.floor((n3+1)*p3))
skew = (1 - 2*p3)/np.sqrt(n3*p3*(1-p3))
print(" %7d %5.2f %-14s %12d %10.2f %10.4f"
% (n3, p3, str(modes), th, n3*p3, skew))
print(" (n+1)p 가 정수면 그 값과 그보다 1 작은 값이 공동 최빈이 됩니다")
print(" n=7, p=0.5 에서 (n+1)p = 4 라 k=3 과 k=4 의 확률이 정확히 같습니다:")
pk7 = np.array([C(7, k)*0.5**7 for k in range(8)])
print(" P(X=3) = %.10f, P(X=4) = %.10f, 차이 %.2e" % (pk7[3], pk7[4], abs(pk7[3]-pk7[4])))
print(" 왜도 (1-2p)/sqrt(n p (1-p)) 는 p=0.5 에서 0 이고 n 이 커지면 0 으로 갑니다")
# 최빈값은 floor((n+1)p) 입니다
# n p 최빈 k 들 floor((n+1)p) 평균 n*p 왜도
# 10 0.10 [1] 1 1.00 0.8433
# 10 0.50 [5] 5 5.00 0.0000
# 10 0.90 [9] 9 9.00 -0.8433
# 50 0.20 [10] 10 10.00 0.2121
# 7 0.50 [3, 4] 4 3.50 0.0000
# (n+1)p 가 정수면 그 값과 그보다 1 작은 값이 공동 최빈이 됩니다
# n=7, p=0.5 에서 (n+1)p = 4 라 k=3 과 k=4 의 확률이 정확히 같습니다:
# P(X=3) = 0.2734375000, P(X=4) = 0.2734375000, 차이 0.00e+00
# 왜도 (1-2p)/sqrt(n p (1-p)) 는 p=0.5 에서 0 이고 n 이 커지면 0 으로 갑니다
# --- 문제 5: 두 방향의 극한 --------------------------------------------
print(" 극한 1: n 이 크고 p 가 작아 lam = n*p 가 고정이면 포아송으로 갑니다")
lam = 2.0
pois = np.array([np.exp(-lam)*lam**k/math.factorial(k) for k in range(6)])
print(" n p P(X=0) P(X=1) P(X=2) 최대오차")
for n4 in [10, 100, 1000, 10000]:
p4 = lam/n4
b = np.array([C(n4, k)*(p4**k)*((1-p4)**(n4-k)) for k in range(6)])
print(" %8d %8.5f %10.6f %10.6f %10.6f %12.2e"
% (n4, p4, b[0], b[1], b[2], np.abs(b - pois).max()))
print(" 포아송 lam=2 : %.6f %.6f %.6f" % (pois[0], pois[1], pois[2]))
print(" 극한 2: n 이 크고 p 가 고정이면 정규분포로 갑니다")
Phi = lambda z: 0.5*(1 + math.erf(z/np.sqrt(2)))
n5, p5 = 100, 0.3
mu, sd = n5*p5, np.sqrt(n5*p5*(1-p5))
print(" k P(X <= k) 정확 (k-mu)/sd 보정 없음 오차 보정 후 오차")
for k in [20, 25, 30, 35, 40]:
exact = sum(C(n5, j)*(p5**j)*((1-p5)**(n5-j)) for j in range(k+1))
naive = Phi((k - mu)/sd)
corr = Phi((k + 0.5 - mu)/sd)
print(" %7d %16.8f %11.4f %15.2e %14.2e"
% (k, exact, (k-mu)/sd, abs(naive - exact), abs(corr - exact)))
print(" mu = %.1f, sd = %.4f 입니다" % (mu, sd))
print(" 중심 근처(k=25, 35)에서는 보정이 오차를 크게 줄입니다")
print(" 꼬리(k=20)에서는 보정이 오히려 조금 나빠집니다. 정규 근사 자체가 꼬리에 약합니다")
# 극한 1: n 이 크고 p 가 작아 lam = n*p 가 고정이면 포아송으로 갑니다
# n p P(X=0) P(X=1) P(X=2) 최대오차
# 10 0.20000 0.107374 0.268435 0.301990 3.13e-02
# 100 0.02000 0.132620 0.270652 0.273414 2.74e-03
# 1000 0.00200 0.135065 0.270670 0.270942 2.71e-04
# 10000 0.00020 0.135308 0.270671 0.270698 2.71e-05
# 포아송 lam=2 : 0.135335 0.270671 0.270671
# 극한 2: n 이 크고 p 가 고정이면 정규분포로 갑니다
# k P(X <= k) 정확 (k-mu)/sd 보정 없음 오차 보정 후 오차
# 20 0.01646285 -2.1822 1.91e-03 2.62e-03
# 25 0.16313010 -1.0911 2.55e-02 7.54e-05
# 30 0.54912360 0.0000 4.91e-02 5.68e-03
# 35 0.88392139 1.0911 2.15e-02 1.05e-03
# 40 0.98750159 2.1822 2.05e-03 1.53e-03
# mu = 30.0, sd = 4.5826 입니다
# 중심 근처(k=25, 35)에서는 보정이 오차를 크게 줄입니다
# 꼬리(k=20)에서는 보정이 오히려 조금 나빠집니다. 정규 근사 자체가 꼬리에 약합니다
문제 4의 마지막 줄이 이 강의에서 가장 조심할 자리입니다. , 에서 과 의 차이가 **정확히 **입니다. 부동소수점 오차조차 없는 완전한 동일이며, 가 정수라 연속 확률의 비가 정확히 이기 때문입니다. 공식을 하나로만 외우면 다른 하나를 놓칩니다.
문제 5의 두 표가 서로 다른 방향을 가리킵니다. 위 표는 이 열 배 늘 때 오차가 열 배 줄어 이고, 아래 표는 을 고정한 채 위치를 바꾸며 중심에서는 보정이 배 이득이고 꼬리에서는 오히려 손해입니다. 근사의 정확도는 하나의 수가 아니라 어디를 보느냐에 달려 있습니다.
정답.
| 기호 | 읽는 법 | 뜻 |
|---|---|---|
| 베르누이 분포 | 값이 과 뿐입니다 | |
| 이항분포 | 성공 횟수의 분포입니다 | |
| \mathbf{1}_ | 지시함수 | 사건이 일어나면 입니다 |
| \binom{n} | 이항계수 | 경로의 개수입니다 |
| 왜도 | skewness | 치우침을 재는 값입니다 |
| 연속성 보정 | continuity correction | 를 더합니다 |
| 초기하분포 | hypergeometric | 비복원 추출의 분포입니다 |
| 유한모집단 보정 | finite population correction | 분산을 줄이는 인자입니다 |
| 과산포 | overdispersion | 이항보다 분산이 큰 상태입니다 |
| 켤레 사전 | conjugate prior | 이항의 켤레는 베타입니다 |
| 호에프딩 부등식 | Hoeffding's inequality | 꼬리의 지수적 상한입니다 |
| 검정력 | power | 참인 차이를 검출할 확률입니다 |
다음 128강에서는 포아송분포와 기하분포를 다룹니다. 이 강의의 문제 5에서 본 포아송 극한을 정면으로 다루고, "드문 사건이 단위 시간에 몇 번 일어나는가"라는 관점을 세웁니다. 그리고 방향을 뒤집어 **"성공이 나올 때까지 몇 번 걸리는가"**를 묻는 기하분포를 봅니다. 121강 문제 4에서 이미 계산했던 그 분포이며, 무기억성이라는 독특한 성질을 갖습니다.