148강부터 150강까지 점추정을 다뤘습니다. 자료를 넣으면 수 하나가 나옵니다.
이 숫자만으로는 아무 결정도 할 수 없습니다. 표본이 개였는지 개였는지, 오차가 인지 인지 알 수 없기 때문입니다. 148강 심화 5의 다섯째 줄이 그 경고였습니다.
추정값과 불확실성을 함께 보고하는 것이 신뢰구간이며, 05단원의 분포 이론이 여기서 실무 도구가 됩니다.
| 재료 | 어디서 왔는가 |
|---|---|
| 표본평균의 정규성 | 143강 중심극한정리 |
| 분포 | 145강 |
| 부트스트랩 | 147강 몬테카를로 |
| 델타 방법 | 143강 문제 5 |
| 합집합 상한 | 146강 문제 4 |
그리고 150강에서 미뤄 둔 해석의 차이를 여기서 정면으로 다룹니다. "참값이 이 구간에 있을 확률이 "라는 문장이 왜 틀렸는지, 그럼에도 왜 계속 그렇게 읽히는지가 문제 1의 주제입니다.
문제. 정규 표본 에서 구간을 만 번 만듭니다.
(1) 실제 포함률을 재세요.
(2) 정규 분위수를 쓰면 어떻게 되는지 보세요.
(3) 구간 하나를 두고 확률을 말할 수 있는지 판정하세요.
생각의 실마리. 구간의 양 끝이 자료에서 계산되므로 확률변수입니다. 참값 는 고정된 수입니다. 무엇이 흔들리는지가 해석을 정합니다.
풀이. (1)(2) 검산 결과입니다.
| 항목 | 값 |
|---|---|
| 분위수 | |
| 실제 포함률 | |
| 평균 폭 | |
| 정규 분위수 의 포함률 |
** 분위수를 쓰면 정확히 **이고 정규 분위수를 쓰면 로 떨어집니다. 145강 문제 2에서 본 그대로입니다.
(3) 구간 여덟 개를 직접 봅니다.
| 번호 | 하한 | 상한 | 참값 을 덮는가 |
|---|---|---|---|
| 덮습니다 | |||
| 덮습니다 | |||
| 덮습니다 | |||
| 덮습니다 | |||
| 덮습니다 | |||
| 덮지 않습니다 | |||
| 덮지 않습니다 | |||
| 덮지 않습니다 |
번 구간 은 을 덮지 않습니다. 이 구간에 대해 "참값이 있을 확률 "라고 말하면 틀립니다. 확률이 입니다.
이 문제에서 배우는 것: 확률은 절차에 붙습니다.
신뢰구간의 정의. 절차 가 모든 에 대해
를 만족하면 신뢰수준 의 신뢰구간입니다.
가 아니라 에 대한 확률입니다. 자료를 새로 뽑을 때마다 구간이 달라지고, 그중 가 참값을 덮습니다.
| 무엇이 흔들리는가 | 문장 |
|---|---|
| 구간 | 이 절차로 만든 구간의 가 참값을 덮습니다 |
| 모수 | 참값이 이 구간에 있을 확률이 입니다 |
둘째 줄이 150강의 신용구간의 문장입니다. 빈도주의에서 는 확률변수가 아니므로 그 문장을 쓸 수 없습니다.
자료를 본 뒤에는 확률이 이거나 입니다. 구간이 이미 정해졌고 참값도 이미 정해졌으므로 덮었거나 덮지 않았거나 둘 중 하나입니다.
그럼에도 실무에서 그렇게 읽히는 이유가 있습니다. 150강 심화 4의 베른슈타인-폰 미제스 정리에 따르면 큰 표본에서는 신뢰구간과 신용구간이 거의 같아지며, 그때는 두 해석이 실질적으로 구별되지 않습니다. 문제가 되는 것은 표본이 적거나 사전이 강할 때입니다.
바로 확인 1.
확인 1-1. 신뢰구간의 정의에서 무엇이 확률변수인지 쓰세요.
답. 구간의 양 끝이며 모수는 고정된 수입니다.
확인 1-2. 올바른 해석 문장을 쓰세요.
답. 같은 절차를 반복하면 의 구간이 참값을 덮습니다.
확인 1-3. 정규 분위수를 작은 표본에 쓰면 어떻게 되는지 쓰세요.
답. 검산에서 포함률이 으로 떨어집니다.
문제. 이항 비율의 네 가지 구간을 정확한 이항분포로 채점합니다.
(1) 발트 구간의 포함률을 재세요.
(2) 윌슨과 애그레스티-쿨을 견주세요.
(3) 클로퍼-피어슨을 판정하세요.
생각의 실마리. 가장 흔히 쓰는 식이 입니다. 이면 폭이 이 되는데, 그것이 옳을 리가 없습니다.
풀이. (1)(2)(3) 모의실험이 아니라 이항분포를 정확히 열거해 계산한 결과입니다.
| 발트 | 윌슨 | 애그레스티-쿨 | 클로퍼-피어슨 | ||
|---|---|---|---|---|---|
**발트 구간이 , 에서 **입니다. 명목이 인데 실제로는 세 번에 한 번 이상 빗나갑니다.
**에서도 발트는 **로 회복되지 않습니다. 표본을 늘리는 것만으로 해결되지 않습니다.
이 문제에서 배우는 것: 같은 모수에 여러 구간이 있습니다.
| 방법 | 식 또는 원리 | 성격 |
|---|---|---|
| 발트 | 간단하지만 나쁩니다 | |
| 윌슨 | 점수 통계량을 에 대해 풉니다 | 균형이 좋습니다 |
| 애그레스티-쿨 | 성공과 실패에 씩 더합니다 | 윌슨의 근사입니다 |
| 클로퍼-피어슨 | 이항 꼬리를 정확히 뒤집습니다 | 언제나 이상 |
발트가 나쁜 이유가 둘입니다. 분산에 참값 대신 을 넣었고, 구간이 을 벗어날 수 있습니다. 이면 폭이 이라 관측이 하나도 없었다는 사실을 무시합니다.
윌슨 구간. 을 에 대해 풉니다. 분모에 참값 가 들어가므로 이차방정식이 되며, 그 두 근이 구간의 끝입니다.
애그레스티-쿨이 실무에서 편합니다. 성공에 , 실패에 를 더하고 발트 공식을 쓰면 되며, 150강의 베타 사전을 넣은 것과 같은 계산입니다.
클로퍼-피어슨은 보수적입니다. 포함률이 결코 아래로 내려가지 않지만 대신 가 되기도 합니다.
이산분포라 정확히 를 맞출 수 없습니다. 가 정수 값만 가지므로 포함률이 계단으로 움직이며, 어느 방법도 모든 에서 정확히 일 수 없습니다.
바로 확인 2.
확인 2-1. 발트 구간이 나쁜 두 이유를 쓰세요.
답. 분산에 추정값을 넣고 구간이 을 벗어납니다.
확인 2-2. 애그레스티-쿨의 방법을 쓰세요.
답. 성공과 실패에 각각 를 더하고 발트 공식을 씁니다.
확인 2-3. 클로퍼-피어슨의 성격을 쓰세요.
답. 언제나 명목 이상이지만 보수적입니다.
문제. 지수분포 표본 에서 구간을 만듭니다.
(1) 평균의 구간과 부트스트랩 구간을 견주세요.
(2) 부트스트랩의 두 방식을 비교하세요.
(3) 중앙값의 구간을 만드세요.
생각의 실마리. 구간은 정규성을 가정합니다. 중앙값이나 상관계수에는 쓸 표본분포조차 없습니다.
풀이. (1)(2)(3) 번 시행, 재표본 개입니다.
| 방법 | 포함률 |
|---|---|
| 평균의 구간 | |
| 평균의 부트스트랩 백분위수 | |
| 평균의 부트스트랩 기본법 | |
| 중앙값의 부트스트랩 백분위수 |
셋 다 를 밑돕니다. 지수분포가 오른쪽으로 크게 치우쳐 있고 가 작기 때문이며, 143강 문제 4의 베리-에센이 예고한 그대로입니다.
넷째 줄이 이 문제의 요점입니다. 중앙값의 표본분포는 닫힌 식이 없는데 부트스트랩은 그냥 됩니다. 그리고 포함률이 평균보다 오히려 좋습니다.
이 문제에서 배우는 것: 부트스트랩.
부트스트랩. 표본에서 복원추출로 같은 크기의 재표본을 많이 만들고, 각 재표본에서 통계량을 계산해 그 흩어짐을 표본분포의 근사로 씁니다.
핵심 발상이 하나입니다. 모집단에서 표본을 뽑는 관계를 표본에서 재표본을 뽑는 관계로 흉내 냅니다. 142강 문제 5의 경험분포함수가 참 분포에 가깝다는 사실이 그 근거입니다.
| 방식 | 구간 |
|---|---|
| 백분위수법 | 재표본 통계량의 와 분위수 |
| 기본법 | |
| 스튜던트화 | 재표본마다 통계량을 만들어 씁니다 |
| BCa | 편향과 가속을 보정합니다 |
셋째와 넷째 줄이 더 정확합니다. 143강 심화 4의 에지워스 보정을 자동으로 해내며, 오차가 에서 으로 줄어듭니다.
부트스트랩이 실패하는 자리도 있습니다. 최댓값이나 최솟값처럼 극단에 의존하는 통계량, 꼬리가 무거워 분산이 무한한 경우, 표본이 매우 작은 경우입니다.
최댓값이 대표적입니다. 재표본의 최댓값은 원표본의 최댓값을 넘을 수 없으므로 위쪽 꼬리를 전혀 흉내 내지 못합니다. 148강 문제 1의 가 그 예입니다.
계산이 유일한 대가입니다. 재표본 개면 계산이 배 들지만, 147강에서 본 대로 그 계산이 이론을 대신합니다.
바로 확인 3.
확인 3-1. 부트스트랩의 핵심 발상을 쓰세요.
답. 표본에서 복원추출로 재표본을 만들어 표본분포를 흉내 냅니다.
확인 3-2. 부트스트랩이 이론보다 나은 자리를 쓰세요.
답. 중앙값처럼 표본분포를 모르는 통계량입니다.
확인 3-3. 부트스트랩이 실패하는 예를 쓰세요.
답. 최댓값처럼 극단에 의존하는 통계량입니다.
문제. 지수분포의 비율 를 구간 추정합니다.
(1) 델타 방법으로 직접 구간을 만드세요.
(2) 로그 척도에서 만들어 되돌리세요.
(3) 두 구간의 꼬리를 나눠 비교하세요.
생각의 실마리. 143강 문제 5의 델타 방법이 을 줍니다. 이면 표준오차가 입니다.
풀이. (1)(2)(3) 참 , 입니다.
| 방법 | 포함률 | 평균 폭 |
|---|---|---|
| 직접 델타 구간 | ||
| 로그 변환 구간 |
| 벗어난 방향 | 직접 | 로그 |
|---|---|---|
| 왼쪽 | ||
| 오른쪽 |
총 포함률은 둘 다 근처인데 꼬리의 균형이 정반대입니다. 직접 구간은 왼쪽으로 세 배 더 자주 벗어나고 로그 구간은 오른쪽으로 세 배 더 자주 벗어납니다.
포함률만 보면 두 방법이 비슷해 보입니다. 그런데 한쪽 검정이나 한쪽 결정에 쓰면 결과가 크게 달라집니다.
이 문제에서 배우는 것: 구간은 척도에 의존합니다.
델타 방법으로 만든 구간.
변환 후 되돌리는 방법. 의 구간을 만들고 을 씌웁니다.
구간은 단조변환에 불변입니다. 150강 문제 5에서 사후중앙값이 불변이었던 것과 같은 이유이며, 순서가 보존되기 때문입니다.
| 모수 | 흔히 쓰는 척도 | 이유 |
|---|---|---|
| 비율 | 로짓 | 경계를 벗어나지 않습니다 |
| 분산, 비율 | 로그 | 양수 제약을 지킵니다 |
| 상관계수 | 피셔의 | 분산이 안정됩니다 |
| 위험비, 오즈비 | 로그 | 대칭에 가까워집니다 |
| 생존확률 | 이중로그 | 을 지킵니다 |
셋째 줄의 피셔 변환이 전형입니다. 의 분산이 으로 와 거의 무관해지며, 분산 안정화 변환이라 부릅니다.
어느 척도가 좋은지는 검산으로 확인합니다. 총 포함률이 아니라 양쪽 꼬리를 나눠 봐야 하며, 둘 다 에 가까운 척도가 좋습니다.
149강의 불변성과 짝을 이룹니다. 최대우도추정은 변환에 불변이고 구간도 변환에 불변이므로, 좋은 척도에서 계산하고 되돌리는 것이 언제나 유효합니다.
바로 확인 4.
확인 4-1. 델타 방법으로 만든 구간의 반폭을 쓰세요.
답. 입니다.
확인 4-2. 구간이 변환에 불변인 이유를 쓰세요.
답. 단조변환이 순서를 보존하기 때문입니다.
확인 4-3. 구간을 채점할 때 총 포함률 말고 무엇을 보는지 쓰세요.
답. 양쪽 꼬리로 벗어나는 비율을 나눠 봅니다.
문제. 독립인 구간을 개 만듭니다.
(1) 모두 참값을 덮을 확률을 재세요.
(2) 이론값과 견주세요.
(3) 본페로니 보정의 효과와 대가를 계산하세요.
생각의 실마리. 각 구간이 여도 하나라도 빗나갈 확률은 에 따라 커집니다. 146강 문제 4에서 본 문제가 구간에서도 나타납니다.
풀이. (1)(2)(3) , 만 번 시행입니다.
| 모두 덮을 확률 수치 | 이론 0.95^ | 본페로니 적용 후 | 본페로니 분위수 | |
|---|---|---|---|---|
**이면 모두 맞을 확률이 **입니다. 개 구간을 보고하면 거의 확실히 몇 개는 틀립니다.
본페로니를 적용하면 로 회복됩니다. 대가는 분위수가 에서 으로 커지는 것이며, 구간 폭이 배가 됩니다.
이 문제에서 배우는 것: 동시 신뢰수준.
본페로니 보정. 개 구간을 각각 신뢰수준 으로 만들면 동시 신뢰수준이 이상입니다.
증명이 합집합 상한 한 줄입니다.
122강의 부울 부등식이며 146강 문제 4에서 이미 썼습니다.
| 방법 | 통제하는 양 | 특징 |
|---|---|---|
| 보정 없음 | 개별 오류율 | 이 크면 무너집니다 |
| 본페로니 | 집단별 오류율 | 간단하고 보수적입니다 |
| 시닥 | 집단별 오류율 | 독립일 때 조금 낫습니다 |
| 홀름 | 집단별 오류율 | 본페로니보다 강력합니다 |
| 벤야미니-호흐베르크 | 거짓발견율 | 훨씬 덜 보수적입니다 |
다섯째 줄이 실무의 표준이 되었습니다. "틀린 것이 하나도 없어야 한다"가 아니라 **"발견한 것 중 틀린 비율을 통제한다"**로 목표를 바꾸면 훨씬 많은 것을 찾을 수 있습니다. 유전체 분석처럼 이 수만인 상황에서 본페로니는 아무것도 찾지 못합니다.
이 무엇인지 정직하게 세야 합니다. 실제로 보고한 구간만이 아니라 들여다본 모든 것이 입니다.
이것이 가장 자주 어기는 규칙입니다. 여러 하위집단을 훑어보고 그중 유의한 것만 보고하면 이 훨씬 큽니다. 146강 심화 6의 A/B 테스트 순차 모니터링도 같은 문제이며, 시점의 개수가 이 됩니다.
바로 확인 5.
확인 5-1. 개 독립 구간이 모두 맞을 확률을 쓰세요.
답. 입니다.
확인 5-2. 본페로니 보정과 그 근거를 쓰세요.
답. 각 구간을 으로 만들며 합집합 상한이 근거입니다.
확인 5-3. 을 셀 때 무엇을 포함해야 하는지 쓰세요.
답. 보고한 것만이 아니라 들여다본 모든 것입니다.
| 대상 | 구간 |
|---|---|
| 정규 평균, 모름 | \bar{X}\pm t_{n-1,1-\alpha/2}S/\sqrt |
| 정규 평균, 앎 | \bar{X}\pm z_{1-\alpha/2}\sigma/\sqrt |
| 정규 분산 | |
| 비율(발트) | |
| 비율(애그레스티-쿨) | 성공과 실패에 씩 더한 뒤 발트 |
| 매끄러운 함수 | g(\bar{X})\pm z\lvert g'\rvert S/\sqrt |
| 이론이 없을 때 | 부트스트랩 |
| 개 동시 | 각각 |
| 비율 구간의 채점 | 포함률 |
|---|---|
| 발트 | |
| 윌슨 | |
| 애그레스티-쿨 | |
| 클로퍼-피어슨 |
| 부트스트랩 방식 | 성격 |
|---|---|
| 백분위수법 | 가장 단순합니다 |
| 기본법 | 축을 뒤집습니다 |
| 스튜던트화 | 더 정확합니다 |
| BCa | 편향과 가속을 보정합니다 |
| 자주 하는 실수 | 바로잡기 |
|---|---|
| "참값이 있을 확률 "라 읽습니다 | 확률은 절차에 붙습니다 |
| 작은 표본에 정규 분위수를 씁니다 | 분위수를 씁니다 |
| 비율에 발트 구간을 씁니다 | 가 작으면 까지 떨어집니다 |
| 부트스트랩을 최댓값에 씁니다 | 극단은 흉내 내지 못합니다 |
| 총 포함률만 봅니다 | 양쪽 꼬리를 나눠 봅니다 |
| 여러 구간을 보정 없이 보고합니다 | 이면 만 모두 맞습니다 |
| 을 보고한 개수로 셉니다 | 들여다본 모든 것을 셉니다 |
문제 6. 신뢰구간의 정의를 쓰세요.
답. 절차가 만든 구간이 참값을 덮을 확률이 입니다.
문제 7. 무엇이 확률변수인지 쓰세요.
답. 구간의 양 끝이며 모수는 고정된 수입니다.
문제 8. 올바른 해석 문장을 쓰세요.
답. 같은 절차를 반복하면 의 구간이 참값을 덮습니다.
문제 9. 에서 정규 분위수를 쓸 때의 포함률을 쓰세요.
답. 검산에서 입니다.
문제 10. 발트 구간이 나쁜 두 이유를 쓰세요.
답. 분산에 추정값을 넣고 구간이 을 벗어납니다.
문제 11. , 에서 발트 구간의 포함률을 쓰세요.
답. 입니다.
문제 12. 애그레스티-쿨 구간의 만드는 법을 쓰세요.
답. 성공과 실패에 각각 를 더하고 발트 공식을 씁니다.
문제 13. 부트스트랩의 핵심 발상을 쓰세요.
답. 표본에서 복원추출로 재표본을 만들어 표본분포를 흉내 냅니다.
문제 14. 부트스트랩이 실패하는 예를 쓰세요.
답. 최댓값처럼 극단에 의존하는 통계량입니다.
문제 15. 델타 방법으로 만든 구간의 반폭을 쓰세요.
답. 입니다.
문제 16. 구간이 변환에 불변인 이유를 쓰세요.
답. 단조변환이 순서를 보존하기 때문입니다.
문제 17. 개 독립 구간이 모두 맞을 확률과 의 값을 쓰세요.
답. 이며 에서 약 입니다.
문제 18. 본페로니 보정과 그 대가를 쓰세요.
답. 각 구간을 으로 만들며 에서 분위수가 에서 이 됩니다.
심화 1. 신뢰구간을 만드는 세 가지 원리를 정리하세요.
구간은 우연히 만들어지지 않습니다.
| 원리 | 방법 | 예 |
|---|---|---|
| 축추정량 | 분포가 와 무관한 양을 찾습니다 | 통계량 |
| 검정 뒤집기 | 기각하지 않는 를 모읍니다 | 윌슨, 클로퍼-피어슨 |
| 점근 정규성 | 최대우도추정의 극한분포 | 델타 방법 |
둘째 줄이 가장 일반적입니다. 152강에서 볼 검정과 구간은 같은 것의 두 얼굴이며, 유의수준 검정에서 기각되지 않는 모수값을 모으면 신뢰수준 구간이 됩니다.
첫째 줄이 정확한 구간을 줍니다. 의 분포가 와 에 전혀 의존하지 않으므로 그 분위수로 부등식을 뒤집을 수 있습니다. 144강의 독립성이 그 전제입니다.
셋째 줄이 가장 널리 쓰입니다. 149강의 점근 정규성 덕분에 어떤 모형이든 을 쓸 수 있지만, 작은 표본에서는 포함률이 떨어집니다.
심화 2. 구간의 좋고 나쁨을 무엇으로 재는지 정리하세요.
| 기준 | 내용 |
|---|---|
| 포함률 | 명목값에 얼마나 가까운가 |
| 꼬리 균형 | 양쪽으로 벗어나는 비율이 같은가 |
| 기대 폭 | 같은 포함률이면 좁을수록 좋습니다 |
| 안정성 | 자료가 조금 변할 때 크게 흔들리지 않는가 |
| 경계 존중 | 모수공간을 벗어나지 않는가 |
| 계산 비용 | 닫힌 식인가 반복인가 |
셋째 줄에 정리가 있습니다. 같은 포함률을 갖는 구간 중 기대 폭이 가장 작은 것을 찾는 문제는 최강력 검정을 찾는 문제와 같습니다. 152강의 네이만-피어슨 보조정리가 답을 줍니다.
둘째 줄이 문제 4의 교훈입니다. 총 포함률이 같아도 꼬리 균형이 다르면 한쪽 결정에서 결과가 달라집니다.
다섯째 줄이 발트 구간의 결함입니다. 비율의 구간이 음수가 되면 그 자체로 잘못된 답이며, 로짓 척도나 윌슨 구간이 이 문제를 없앱니다.
심화 3. 부트스트랩의 이론적 근거와 한계를 정리하세요.
부트스트랩의 원리. 참 분포 에 대한 의 분포를 경험분포 에 대한 의 분포로 근사합니다.
142강 문제 5의 글리벤코-칸텔리가 근거입니다. 이 로 균등수렴하므로 그 위에서 계산한 표본분포도 참 표본분포에 가까워집니다.
| 정확도 | 방식 | 조건 |
|---|---|---|
| 백분위수법 | 통계량이 점근 정규 | |
| 스튜던트화, BCa | 에지워스 전개가 유효 | |
| 실패 | 최댓값, 무한 분산 | 통계량이 매끄럽지 않음 |
| 수정 필요 | 시계열, 군집 | 블록 부트스트랩 |
넷째 줄이 실무에서 중요합니다. 종속 자료에 보통 부트스트랩을 쓰면 자기상관을 깨뜨려 표준오차를 과소평가합니다. 142강 심화 2의 유효 표본 크기 문제가 그대로 나타나며, 연속한 블록을 통째로 뽑아야 합니다.
셋째 줄의 실패가 구조적입니다. 재표본의 최댓값이 원표본의 최댓값을 넘을 수 없으므로 위쪽 꼬리의 분포를 아예 만들지 못합니다. 이런 경우 개만 뽑는 -out-of- 부트스트랩이나 부분표본법을 씁니다.
심화 4. 신뢰구간과 신용구간이 언제 다른지 정리하세요.
| 상황 | 두 구간의 관계 |
|---|---|
| 큰 표본, 매끄러운 모형 | 거의 같습니다 |
| 작은 표본 | 사전이 결과를 좌우합니다 |
| 경계 근처의 모수 | 크게 다릅니다 |
| 모수가 많음 | 베이즈가 자동으로 축소합니다 |
| 비고유 사전 | 신용구간이 없을 수 있습니다 |
첫째 줄이 베른슈타인-폰 미제스 정리입니다. 사후분포가 으로 수렴하므로 두 구간이 같은 곳에 놓입니다.
셋째 줄이 실무의 함정입니다. 비율이 에 가깝거나 분산 성분이 에 가까우면 빈도주의 구간이 이상해지며, 약한 사전을 쓴 신용구간이 훨씬 자연스럽습니다.
넷째 줄이 150강 심화 2의 계층모형입니다. 여러 집단의 평균을 함께 추정할 때 베이즈 신용구간은 자동으로 좁아지고 전체 평균 쪽으로 당겨집니다.
두 구간의 포함률을 서로의 기준으로 채점할 수 있습니다. 신용구간이 빈도주의 포함률 를 갖는지 확인하는 것이 표준 진단 절차이며, 크게 어긋나면 사전이 문제입니다.
심화 5. 신뢰구간을 잘못 쓰는 자리를 정리하세요.
| 실수 | 결과 |
|---|---|
| 구간 하나에 확률을 말합니다 | 해석이 틀립니다 |
| 두 구간이 겹치면 차이가 없다고 봅니다 | 검정력이 낮아집니다 |
| 자료를 보고 멈출 시점을 정합니다 | 포함률이 명목보다 낮아집니다 |
| 여러 하위집단을 훑고 하나만 보고합니다 | 다중 비교를 숨깁니다 |
| 모형 기반 표준오차를 그대로 씁니다 | 149강 문제 5의 오설정 |
| 종속 자료에 독립 공식을 씁니다 | 폭을 과소평가합니다 |
| 폭이 좁으면 정확하다고 봅니다 | 편향은 폭에 안 나타납니다 |
둘째 줄이 매우 흔합니다. 두 집단의 구간이 겹쳐도 차이의 구간은 을 배제할 수 있습니다. 차이를 알고 싶으면 차이의 구간을 직접 만들어야 합니다.
일곱째 줄이 가장 조용합니다. 구간의 폭은 분산만 반영하며 편향은 전혀 보이지 않습니다. 표본이 편향되어 있으면 아주 좁은 구간이 참값에서 멀리 떨어진 채로 나옵니다. 142강 심화 5의 생존 편향이 그 예입니다.
셋째 줄이 146강 심화 6과 같습니다. 유의해질 때까지 자료를 더 모으는 방식은 명목 신뢰수준을 무너뜨리며, 언제나 유효한 구간이나 사전에 정한 표본 크기가 필요합니다.
심화 6. 기계학습에서 구간이 쓰이는 자리를 정리하세요.
| 자리 | 어떤 구간 | 관련 강의 |
|---|---|---|
| 검증 정확도의 오차 막대 | 비율의 윌슨 구간 | 209강 |
| 시드 반복 실험의 보고 | 구간 또는 부트스트랩 | 209강 |
| 모델 비교 | 차이의 구간, 다중 비교 보정 | 212강 |
| A/B 테스트 | 비율 차이의 구간 | 152강 |
| 예측 구간 | 등각 예측 | 214강 |
| 베이즈 신경망 | 신용구간 | 245강 |
| 밴딧의 신뢰 상한 | 호에프딩 구간 | 278강 |
| 인과 효과 추정 | 부트스트랩, 샌드위치 | 177강 |
첫째 줄이 논문에서 가장 자주 빠집니다. 검증 정확도 를 보고하면서 구간을 쓰지 않으면, 검증 자료가 개일 때 폭이 라는 사실이 숨습니다. 모델 사이의 차이는 잡음일 수 있습니다.
다섯째 줄이 최근의 도구입니다. 등각 예측은 분포 가정 없이 유한 표본에서 정확한 예측 구간을 주며, 교환가능성만 요구합니다. 이 강의의 어느 방법보다 가정이 약합니다.
셋째 줄이 문제 5와 직결됩니다. 벤치마크 개에서 모델 두 개를 비교하면 이며, 보정 없이 "우리 모델이 개에서 이겼다"고 하면 우연일 수 있습니다.
정답.
| 기호 | 읽는 법 | 뜻 |
|---|---|---|
| 신뢰수준 | 절차의 성공 비율입니다 | |
| t_ | 분위수 | 자유도 의 분위수입니다 |
| 포함률 | coverage | 실제로 참값을 덮은 비율입니다 |
| 발트 구간 | Wald interval | 추정값의 표준오차를 그대로 씁니다 |
| 윌슨 구간 | Wilson interval | 점수 통계량을 뒤집습니다 |
| 애그레스티-쿨 | Agresti-Coull | 성공과 실패에 씩 더합니다 |
| 클로퍼-피어슨 | Clopper-Pearson | 이항 꼬리를 정확히 뒤집습니다 |
| 부트스트랩 | bootstrap | 재표본으로 표본분포를 흉내 냅니다 |
| BCa | bias-corrected accelerated | 편향과 가속을 보정합니다 |
| 축추정량 | pivotal quantity | 분포가 모수와 무관한 양입니다 |
| 피셔의 | Fisher z-transform | 상관계수의 분산 안정화입니다 |
| 본페로니 | Bonferroni | 유의수준을 으로 나눕니다 |
| 거짓발견율 | false discovery rate | 발견 중 틀린 비율입니다 |
| 등각 예측 | conformal prediction | 분포 가정 없는 예측 구간입니다 |
다음은 152강 가설검정입니다. 심화 1의 둘째 줄이 예고한 대로 검정과 구간은 같은 것의 두 얼굴입니다.
152강은 결정의 언어로 이 관계를 다시 씁니다. 두 종류의 오류를 나누고, 네이만-피어슨 보조정리로 최강력 검정을 찾으며, 값이 무엇이고 무엇이 아닌지를 분명히 합니다.
문제 5의 다중 비교가 152강에서 본격적으로 다뤄집니다. 거짓발견율 통제가 왜 필요하고 어떻게 작동하는지, 그리고 145강 문제 5에서 본 검정의 붕괴가 검정의 언어로 무엇을 뜻하는지를 밝힙니다.
import numpy as np
rng = np.random.default_rng(20260819)
zg = (np.arange(240001) - 120000) * 1e-4 # 표준정규 분포함수를 격자 누적으로 만듭니다
phig = np.exp(-zg * zg / 2) / np.sqrt(2 * np.pi)
cdfg = (np.cumsum(phig) - 0.5 * phig) * 1e-4
cdfg = cdfg - cdfg[120000] + 0.5
gp = (np.arange(1, 100000) + 0.5) / 100000.0
def gamma_half(k):
if k % 2 == 0:
r = 1.0
for j in range(1, k // 2):
r *= j
return r
r = np.sqrt(np.pi)
for j in range((k - 1) // 2):
r *= (0.5 + j)
return r
def tq(k, q, N=800000, L=400.0):
x = (np.arange(N) + 0.5) * (2 * L / N) - L
c = gamma_half(k + 1) / (np.sqrt(k * np.pi) * gamma_half(k))
d = c * (1 + x * x / k) ** (-(k + 1) / 2.0)
cum = (np.cumsum(d) - 0.5 * d) * (2 * L / N)
cum = cum + (1 - cum[-1]) / 2
return float(np.interp(q, cum, x))
def beta_q(a, b, q):
lg = (a - 1) * np.log(gp) + (b - 1) * np.log(1 - gp)
w = np.exp(lg - lg.max())
w = w / w.sum()
return float(gp[np.searchsorted(np.cumsum(w), q)])
z975 = float(np.interp(0.975, cdfg, zg))
# --- 문제 1: 신뢰구간은 무엇을 보장하는가 -------------------------------
print(" 정규 표본 n = 10 에서 t 구간을 20 만 번 만들어 봅니다. 참 평균은 0 입니다")
n1, M = 10, 200000
X = rng.normal(0, 1, size=(M, n1))
mb = X.mean(1)
se = X.std(1, ddof=1) / np.sqrt(n1)
t975 = tq(n1 - 1, 0.975)
lo, hi = mb - t975 * se, mb + t975 * se
print(" t 분위수 %.6f, 실제 포함률 %.6f, 평균 폭 %.6f"
% (t975, float(((lo <= 0) & (0 <= hi)).mean()), float((hi - lo).mean())))
print(" 정규 분위수 %.6f 를 쓰면 포함률 %.6f 로 떨어집니다"
% (z975, float(((mb - z975 * se <= 0) & (0 <= mb + z975 * se)).mean())))
ok = (lo <= 0) & (0 <= hi)
sel = list(range(5)) + list(np.where(~ok)[0][:3])
print(" 구간 여덟 개를 직접 봅니다. 각각은 덮거나 덮지 않거나 둘 중 하나입니다")
print(" 번호 하한 상한 참값 0 을 덮는가")
for i in sel:
print(" %11d %11.6f %11.6f %14s"
% (i + 1, lo[i], hi[i], "덮습니다" if ok[i] else "덮지 않습니다"))
print(" 구간 하나를 두고 확률을 말할 수 없습니다. 이미 덮었거나 아니거나입니다")
print(" 확률은 절차에 붙습니다. 같은 절차를 반복하면 95 퍼센트가 덮습니다")
# --- 문제 2: 비율의 신뢰구간 --------------------------------------------
print(" 이항 비율의 네 가지 구간을 정확한 이항분포로 채점합니다")
def coverage(n, p, kind):
pmf = np.array([1.0])
for _ in range(n):
pmf = np.convolve(pmf, np.array([1 - p, p]))
tot = 0.0
for t in range(n + 1):
ph = t / n
if kind == "wald":
h = z975 * np.sqrt(ph * (1 - ph) / n)
a, b = ph - h, ph + h
elif kind == "wilson":
c = z975 * z975 / n
ctr = (ph + c / 2) / (1 + c)
h = z975 * np.sqrt(ph * (1 - ph) / n + c / (4 * n)) / (1 + c)
a, b = ctr - h, ctr + h
elif kind == "ac":
pt = (t + 2.0) / (n + 4.0)
h = z975 * np.sqrt(pt * (1 - pt) / (n + 4.0))
a, b = pt - h, pt + h
else:
a = 0.0 if t == 0 else beta_q(t, n - t + 1, 0.025)
b = 1.0 if t == n else beta_q(t + 1, n - t, 0.975)
if a <= p <= b:
tot += pmf[t]
return tot
print(" p n 발트 윌슨 애그레스티-쿨 클로퍼-피어슨")
for p, n in [(0.05, 20), (0.05, 50), (0.2, 50), (0.5, 50), (0.05, 200)]:
r = [coverage(n, p, k) for k in ["wald", "wilson", "ac", "cp"]]
print(" %9.2f %6d %8.4f %8.4f %12.4f %14.4f" % (p, n, r[0], r[1], r[2], r[3]))
print(" 발트 구간은 p 가 작으면 명목 95 퍼센트에 크게 못 미칩니다")
print(" 윌슨과 애그레스티-쿨은 95 퍼센트 근처를 지키고 클로퍼-피어슨은 보수적입니다")
# --- 문제 3: 모형이 없으면 부트스트랩 -----------------------------------
print(" 지수분포 표본에서 부트스트랩 구간을 만들어 포함률을 잽니다. n = 25 입니다")
n3, T, B = 25, 3000, 800
cov_t, cov_pc, cov_bs = 0, 0, 0
cov_med = 0
med_true = np.log(2.0)
t3 = tq(n3 - 1, 0.975)
for _ in range(T):
x = rng.exponential(1.0, n3)
m_, s_ = float(x.mean()), float(x.std(ddof=1))
if m_ - t3 * s_ / np.sqrt(n3) <= 1.0 <= m_ + t3 * s_ / np.sqrt(n3):
cov_t += 1
idx = rng.integers(0, n3, size=(B, n3))
bs = x[idx]
bm = bs.mean(1)
a, b = np.quantile(bm, 0.025), np.quantile(bm, 0.975)
if a <= 1.0 <= b:
cov_pc += 1
if 2 * m_ - b <= 1.0 <= 2 * m_ - a:
cov_bs += 1
bmed = np.median(bs, axis=1)
if np.quantile(bmed, 0.025) <= med_true <= np.quantile(bmed, 0.975):
cov_med += 1
print(" 평균의 t 구간 포함률 %.4f" % (cov_t / T))
print(" 평균의 부트스트랩 백분위수 포함률 %.4f" % (cov_pc / T))
print(" 평균의 부트스트랩 기본법 포함률 %.4f" % (cov_bs / T))
print(" 중앙값의 부트스트랩 백분위수 포함률 %.4f (참 중앙값 %.6f)"
% (cov_med / T, med_true))
print(" 중앙값에는 쓸 이론 분포가 없는데 부트스트랩은 그냥 됩니다")
print(" 치우친 분포라 평균의 구간 셋이 95 퍼센트를 밑돕니다. n 을 키우면 올라갑니다")
# --- 문제 4: 매끄러운 함수의 구간 ---------------------------------------
print(" 지수분포의 비율 lambda = 1/mu 를 두 방법으로 구간 추정합니다")
n4, T4 = 20, 200000
Y = rng.exponential(1.0 / 1.5, size=(T4, n4))
mb4 = Y.mean(1)
lam = 1.0 / mb4
d1 = lam / np.sqrt(n4)
c1 = ((lam - z975 * d1 <= 1.5) & (1.5 <= lam + z975 * d1))
llo = np.log(lam) - z975 / np.sqrt(n4)
lhi = np.log(lam) + z975 / np.sqrt(n4)
c2 = ((np.exp(llo) <= 1.5) & (1.5 <= np.exp(lhi)))
print(" 직접 델타 구간 포함률 %.6f, 평균 폭 %.6f"
% (float(c1.mean()), float((2 * z975 * d1).mean())))
print(" 로그 변환 구간 포함률 %.6f, 평균 폭 %.6f"
% (float(c2.mean()), float((np.exp(lhi) - np.exp(llo)).mean())))
print(" 왼쪽으로 벗어난 비율 직접 %.6f, 로그 %.6f"
% (float((lam + z975 * d1 < 1.5).mean()), float((np.exp(lhi) < 1.5).mean())))
print(" 오른쪽으로 벗어난 비율 직접 %.6f, 로그 %.6f"
% (float((lam - z975 * d1 > 1.5).mean()), float((np.exp(llo) > 1.5).mean())))
print(" 총 포함률은 둘 다 95 퍼센트 근처인데 꼬리의 균형이 정반대입니다")
print(" 직접 구간은 왼쪽으로, 로그 구간은 오른쪽으로 더 자주 벗어납니다")
print(" 포함률만 보면 안 되고 양쪽 꼬리를 나눠 봐야 합니다")
print(" 구간은 단조변환에 불변이므로 어느 척도에서 만들지가 선택입니다")
# --- 문제 5: 여러 구간을 동시에 ------------------------------------------
print(" 독립인 구간을 m 개 만들면 모두 맞을 확률이 어떻게 되는지 봅니다")
n5, T5 = 15, 40000
t5 = tq(n5 - 1, 0.975)
print(" m 모두 덮을 확률 수치 이론 0.95^m 본페로니 적용 후 본페로니 분위수")
for m in [1, 5, 20, 100]:
Z = rng.normal(0, 1, size=(T5, m, n5))
mm = Z.mean(2)
ss = Z.std(2, ddof=1) / np.sqrt(n5)
all_ok = float((np.abs(mm) <= t5 * ss).all(axis=1).mean())
tb = tq(n5 - 1, 1 - 0.025 / m)
all_b = float((np.abs(mm) <= tb * ss).all(axis=1).mean())
print(" %9d %18.6f %12.6f %16.6f %14.6f"
% (m, all_ok, 0.95 ** m, all_b, tb))
print(" 구간 100 개면 모두 맞을 확률이 1 퍼센트 아래입니다")
print(" 본페로니로 각 구간을 넓히면 동시 신뢰수준이 95 퍼센트로 회복됩니다")
print(" 대가는 폭입니다. m = 100 이면 분위수가 2.14 에서 4.50 으로 커집니다")
# 정규 표본 n = 10 에서 t 구간을 20 만 번 만들어 봅니다. 참 평균은 0 입니다
# t 분위수 2.262157, 실제 포함률 0.950320, 평균 폭 1.391905
# 정규 분위수 1.959964 를 쓰면 포함률 0.918615 로 떨어집니다
# 구간 여덟 개를 직접 봅니다. 각각은 덮거나 덮지 않거나 둘 중 하나입니다
# 번호 하한 상한 참값 0 을 덮는가
# 1 -0.878069 0.416998 덮습니다
# 2 -1.038870 0.639446 덮습니다
# 3 -0.874647 0.326317 덮습니다
# 4 -0.997824 1.288375 덮습니다
# 5 -0.297819 0.909982 덮습니다
# 15 0.072572 0.926007 덮지 않습니다
# 19 -0.961174 -0.170196 덮지 않습니다
# 48 0.253348 1.499739 덮지 않습니다
# 구간 하나를 두고 확률을 말할 수 없습니다. 이미 덮었거나 아니거나입니다
# 확률은 절차에 붙습니다. 같은 절차를 반복하면 95 퍼센트가 덮습니다
# 이항 비율의 네 가지 구간을 정확한 이항분포로 채점합니다
# p n 발트 윌슨 애그레스티-쿨 클로퍼-피어슨
# 0.05 20 0.6389 0.9245 0.9841 0.9841
# 0.05 50 0.9199 0.9622 0.9622 0.9882
# 0.20 50 0.9375 0.9507 0.9507 0.9671
# 0.50 50 0.9351 0.9351 0.9351 0.9672
# 0.05 200 0.9256 0.9672 0.9672 0.9672
# 발트 구간은 p 가 작으면 명목 95 퍼센트에 크게 못 미칩니다
# 윌슨과 애그레스티-쿨은 95 퍼센트 근처를 지키고 클로퍼-피어슨은 보수적입니다
# 지수분포 표본에서 부트스트랩 구간을 만들어 포함률을 잽니다. n = 25 입니다
# 평균의 t 구간 포함률 0.9260
# 평균의 부트스트랩 백분위수 포함률 0.9093
# 평균의 부트스트랩 기본법 포함률 0.8960
# 중앙값의 부트스트랩 백분위수 포함률 0.9390 (참 중앙값 0.693147)
# 중앙값에는 쓸 이론 분포가 없는데 부트스트랩은 그냥 됩니다
# 치우친 분포라 평균의 구간 셋이 95 퍼센트를 밑돕니다. n 을 키우면 올라갑니다
# 지수분포의 비율 lambda = 1/mu 를 두 방법으로 구간 추정합니다
# 직접 델타 구간 포함률 0.953335, 평균 폭 1.384224
# 로그 변환 구간 포함률 0.946020, 평균 폭 1.428963
# 왼쪽으로 벗어난 비율 직접 0.035235, 로그 0.013860
# 오른쪽으로 벗어난 비율 직접 0.011430, 로그 0.040120
# 총 포함률은 둘 다 95 퍼센트 근처인데 꼬리의 균형이 정반대입니다
# 직접 구간은 왼쪽으로, 로그 구간은 오른쪽으로 더 자주 벗어납니다
# 포함률만 보면 안 되고 양쪽 꼬리를 나눠 봐야 합니다
# 구간은 단조변환에 불변이므로 어느 척도에서 만들지가 선택입니다
# 독립인 구간을 m 개 만들면 모두 맞을 확률이 어떻게 되는지 봅니다
# m 모두 덮을 확률 수치 이론 0.95^m 본페로니 적용 후 본페로니 분위수
# 1 0.951025 0.950000 0.951025 2.144787
# 5 0.773250 0.773781 0.949250 2.976843
# 20 0.359275 0.358486 0.949025 3.674594
# 100 0.006150 0.005921 0.952950 4.499155
# 구간 100 개면 모두 맞을 확률이 1 퍼센트 아래입니다
# 본페로니로 각 구간을 넓히면 동시 신뢰수준이 95 퍼센트로 회복됩니다
# 대가는 폭입니다. m = 100 이면 분위수가 2.14 에서 4.50 으로 커집니다