163강부터 166강까지가 수치 변수를 다뤘습니다. 이제 범주 변수를 다룹니다.
평균도 분산도 쓸 수 없습니다. 158강 문제 3에서 본 것처럼 명목 척도에는 크다 작다가 없으므로, 세는 것 말고 할 수 있는 일이 없습니다.
그래서 요약이 표가 됩니다.
| 하는 일 | 도구 |
|---|---|
| 두 범주를 교차해 셉니다 | 분할표 |
| 차이를 하나의 수로 만듭니다 | 위험차, 위험비, 승산비 |
| 관계가 있는지 봅니다 | 카이제곱, 크라메르 |
| 합쳐도 되는지 봅니다 | 심슨의 역설, 축약가능성 |
둘째 줄이 이 강의에서 가장 많이 틀리는 곳입니다. 세 척도가 같은 표에서 나오는데 값이 다르고 뜻이 다릅니다. 검산에서 기저 위험이 일 때 위험비는 인데 승산비는 입니다.
그리고 셋째 줄이 164강과 이어집니다. 카이제곱은 표를 배로 늘리면 배가 되므로 관계의 세기가 아니라 증거의 양을 잽니다.
문제. 광고 노출과 구매를 교차한 표가 있습니다.
(1) 세 가지 비율을 구하고 각각 무엇을 묻는지 쓰세요.
(2) 자료 수집 방식이 어느 비율을 뜻 있게 만드는지 판정하세요.
생각의 실마리. 표의 한 칸을 무엇으로 나누느냐에 따라 다른 비율이 나옵니다. 나누는 방법이 세 가지이므로 비율도 세 가지입니다.
풀이. (1) 표는 다음과 같습니다.
| 구매 | 비구매 | 합 | |
|---|---|---|---|
| 광고 봄 | |||
| 광고 안 봄 | |||
| 합 |
| 비율의 종류 | 광고 봄 | 광고 안 봄 | 무엇을 묻는가 |
|---|---|---|---|
| 행 비율 | 각 줄에서 산 비율 | ||
| 열 비율 | 산 사람 중 각 줄인 비율 | ||
| 전체 비율 | 전체 중 구매 칸의 비율 |
세 값이 전부 다릅니다.
둘을 섞는 것이 가장 흔한 실수입니다. 123강 조건부확률에서 조건의 방향이 뒤집히면 다른 값이라고 한 것이 그대로 나타납니다.
광고 효과를 묻는다면 행 비율입니다. 대 입니다.
(2) 그런데 어느 비율을 볼 수 있는지가 자료 수집 방식에 달려 있습니다.
| 어떻게 모았는가 | 뜻이 있는 비율 |
|---|---|
| 광고를 본 명과 안 본 명을 정해 놓고 모음 | 행 비율만 |
| 구매자 명과 비구매자 명을 정해 놓고 모음 | 열 비율만 |
| 전체에서 무작위로 명을 모음 | 셋 다 |
정해 놓은 쪽의 비율은 연구자가 만든 것입니다. 구매자 명을 일부러 뽑았다면 전체 구매율 는 자료가 말한 것이 아니라 설계가 정한 것입니다.
이 문제에서 배우는 것. 분할표를 읽기 전에 어떻게 모았는지를 먼저 물어야 합니다. 표만 보면 세 비율이 다 계산되므로, 계산할 수 있다는 것과 뜻이 있다는 것이 다릅니다. 이 구분은 문제 2에서 승산비를 쓰는 이유가 되고, 04단원의 표집 설계 전체가 이 물음의 확장입니다.
바로 확인 1.
확인 1-1. 분할표에서 나오는 세 비율을 쓰세요.
답. 행 비율, 열 비율, 전체 비율이며 각각 다른 질문에 답합니다.
확인 1-2. 검산에서 광고 효과에 해당하는 비율을 쓰세요.
답. 행 비율 과 입니다.
확인 1-3. 결과를 정해 놓고 모은 자료에서 볼 수 없는 비율을 쓰세요.
답. 행 비율이며 그쪽이 설계로 정해졌기 때문입니다.
문제. 두 비율의 차이를 하나의 수로 만듭니다.
(1) 세 척도를 계산하세요.
(2) 기저 위험에 따라 어떻게 달라지는지 구하세요.
(3) 그런데도 승산비를 쓰는 이유를 확인하세요.
생각의 실마리. 과 의 차이를 말하는 방법이 여럿입니다. 빼거나, 나누거나, 승산으로 바꾼 뒤 나눌 수 있습니다. 셋이 다른 값이므로 어느 것을 쓸지 정해야 합니다.
풀이. (1) 검산 결과입니다.
| 척도 | 값 | 뜻 |
|---|---|---|
| 위험차 | 명당 명이 더 삽니다 | |
| 위험비 | 배 더 삽니다 | |
| 승산비 | 승산이 배입니다 |
확률 의 승산은 이고 확률 의 승산은 입니다.
(2) 위험비를 로 고정하고 기저 위험만 바꿔 봅니다.
| 기저 위험 p_ | p_ | 위험차 | 위험비 | 승산비 |
|---|---|---|---|---|
드물면 승산비가 위험비와 거의 같고 흔하면 훨씬 큽니다. 기저 위험 에서 위험비가 인데 승산비는 입니다.
승산비를 위험비처럼 읽으면 효과를 세 배로 부풀리게 됩니다. 흔한 결과를 다루는 연구에서 자주 일어나는 오독입니다.
위험차도 함께 봐야 합니다. 위험비가 여도 기저 위험이 이면 명당 한 명이 더 생길 뿐입니다. 상대적 크기와 절대적 크기는 다른 이야기이며, 둘 다 없으면 판단할 수 없습니다.
(3) 그런데도 승산비를 쓰는 이유가 있습니다.
| 자료를 모은 방식 | 위험비를 낼 수 있는가 | 승산비 |
|---|---|---|
| 노출을 정해 놓고 모음 | 가능 | 가능 |
| 결과를 정해 놓고 모음 | 불가능 | 가능 |
승산비는 표를 어느 방향으로 읽어도 같습니다. 검산에서 행으로 계산한 값과 열로 계산한 값이 둘 다 입니다.
대각선 곱의 비라 행과 열을 바꿔도 같은 식입니다. 문제 1에서 결과를 정해 놓고 모으면 행 비율을 못 쓴다고 했는데, 승산비는 그 경우에도 계산됩니다.
드문 결과를 연구할 때 이것이 결정적입니다. 발생률이 인 질병을 무작위 표본으로 연구하려면 수만 명이 필요한데, 환자와 대조군을 정해 놓고 모으면 수백 명으로 됩니다. 그리고 그렇게 모은 자료에서 승산비는 위험비와 거의 같습니다.
이 문제에서 배우는 것. 척도를 고르는 것은 무엇을 묻는지와 어떻게 모았는지가 함께 정합니다. 승산비는 계산 편의 때문에 쓰는 것이지 그 자체가 알고 싶은 값인 경우는 드뭅니다. 그래서 보고할 때는 승산비와 함께 기저 위험을 적어야 읽는 사람이 위험비나 위험차로 환산할 수 있습니다. 그렇지 않으면 배와 배가 구별되지 않습니다.
바로 확인 2.
확인 2-1. 승산과 승산비를 쓰세요.
답. 승산은 이고 승산비는 두 승산의 비입니다.
확인 2-2. 검산에서 기저 위험 일 때 위험비와 승산비를 쓰세요.
답. 위험비는 이고 승산비는 입니다.
확인 2-3. 결과를 정해 놓고 모은 자료에서 승산비를 쓸 수 있는 이유를 쓰세요.
답. 대각선 곱의 비라 표를 어느 방향으로 읽어도 같기 때문입니다.
문제. 두 범주가 무관한지 봅니다.
(1) 기대도수를 구하고 카이제곱을 계산하세요.
(2) 표를 여러 배로 늘려 카이제곱과 크라메르 를 비교하세요.
생각의 실마리. 두 범주가 무관하다면 한쪽을 알아도 다른 쪽의 비율이 안 바뀝니다. 그러면 각 칸의 도수는 주변 비율의 곱이 되어야 합니다. 실제와 그것을 견주면 됩니다.
풀이. (1) 기대도수는 주변합의 곱을 전체로 나눈 값입니다.
| 칸 | 관측 | 기대 | 차이 | 기여 |
|---|---|---|---|---|
| 광고 봄, 구매 | ||||
| 광고 봄, 비구매 | ||||
| 광고 안 봄, 구매 | ||||
| 광고 안 봄, 비구매 |
네 칸의 차이가 모두 입니다. 표에서 주변합이 고정되면 한 칸이 정해지면 나머지가 다 정해지므로 자유도가 입니다.
기준값 를 크게 넘습니다. 기여를 보면 기대도수가 작은 칸이 더 크게 기여합니다. 같은 차이 인데 분모가 인 칸은 이고 인 칸은 입니다.
(2) 표를 통째로 늘려 봅니다. 비율은 하나도 바뀌지 않습니다.
| 표를 몇 배로 늘리면 | 표본 크기 | 카이제곱 | 크라메르 |
|---|---|---|---|
| 배 | |||
| 배 | |||
| 배 | |||
| 배 |
카이제곱이 정확히 표본 크기에 비례합니다. 관계는 그대로인데 값만 배가 됩니다.
크라메르 는 표본 크기로 나눠 놓아 그대로입니다. 표에서는 상관의 절댓값과 같은 값이 됩니다.
이 문제에서 배우는 것. 검정통계량과 효과 크기를 구분해야 합니다. 164강 문제 4에서 자르크-베라 검정이 표본이 크면 사소한 이탈도 기각한다고 한 것과 같은 구조이며, 카이제곱은 "관계가 없다고 보기 어렵다"는 증거의 양을 재고 **크라메르 가 "얼마나 강한가"**를 잽니다. 표본이 만이면 인 약한 관계에도 카이제곱이 이 나오는데, 그 숫자를 세기로 읽으면 안 됩니다.
바로 확인 3.
확인 3-1. 기대도수를 구하는 식을 쓰세요.
답. 행 합과 열 합의 곱을 전체로 나눕니다.
확인 3-2. 검산에서 표를 배 늘렸을 때 두 값의 변화를 쓰세요.
답. 카이제곱은 에서 이 되고 크라메르 는 로 그대로입니다.
확인 3-3. 크라메르 의 식을 쓰세요.
답. 입니다.
문제. 두 집단을 합칠 때 생기는 일을 봅니다.
(1) 부서별로는 여자의 합격률이 높은데 합치면 남자가 높은 표를 만드세요.
(2) 원인을 찾으세요.
(3) 교란이 없어도 승산비가 달라지는 것을 보이세요.
생각의 실마리. 165강 심화 4에서 집단의 크기가 다르면 집단 안의 관계와 합친 관계가 다를 수 있다고 했습니다. 분할표에서 그것이 어떻게 나타나는지 봅니다.
풀이. (1) 두 부서의 합격률입니다.
| 부서 | 남 지원 | 남 합격률 | 여 지원 | 여 합격률 |
|---|---|---|---|---|
| 부서 A | ||||
| 부서 B | ||||
| 합계 |
부서마다 여자의 합격률이 높은데 합치면 남자가 높습니다.
(2) 원인은 지원한 부서가 다르다는 데 있습니다.
| 부서 | 전체 합격률 | 남자 지원 | 여자 지원 |
|---|---|---|---|
| 부서 A | |||
| 부서 B |
남자는 합격률 높은 부서에, 여자는 낮은 부서에 몰려 지원했습니다. 합계 합격률은 각 부서 합격률의 가중평균인데 가중치가 서로 다릅니다.
부서가 교란변수입니다. 부서가 성별과도 연결되고 합격률과도 연결되므로, 부서를 무시하고 합치면 부서의 효과가 성별의 효과로 보입니다.
(3) 그런데 승산비에는 교란이 없어도 같은 일이 일어납니다.
를 동전으로 정해 와 완전히 무관하게 두고, 조건부 승산비가 정확히 이 되도록 만들었습니다.
| 무엇을 보는가 | 승산비 |
|---|---|
| 인 사람만 | |
| 인 사람만 | |
| 를 무시하고 합침 |
조건부는 둘 다 인데 합치면 입니다.
교란이 아닙니다. 가 와 무관하므로 교란의 정의를 만족하지 않는데도 값이 달라집니다. 이것을 비축약성이라 부릅니다.
원인은 비선형입니다. 승산비는 로짓이라는 비선형 변환 위에서 정의되므로, 조건부 값들의 평균이 평균의 조건부 값과 다릅니다. 132강 젠센과 같은 뿌리입니다.
위험차와 위험비에는 이 일이 없습니다. 둘은 확률의 선형 함수라 교란이 없으면 합쳐도 값이 유지됩니다.
이 문제에서 배우는 것. 분할표를 합칠 때는 두 가지를 물어야 합니다. 첫째는 합쳐도 되는가이며 교란변수가 있으면 안 됩니다. 둘째는 합치면 같은 값이 나오는가이며 승산비는 교란이 없어도 아닙니다. 그래서 여러 연구의 승산비를 합칠 때 특별한 방법이 필요하고, 조정한 승산비와 조정하지 않은 승산비가 다르다고 해서 그것만으로 교란이 있다고 말할 수 없습니다.
바로 확인 4.
확인 4-1. 검산에서 심슨의 역설이 나타난 수치를 쓰세요.
답. 부서별로 과 인데 합계는 로 뒤집힙니다.
확인 4-2. 그 원인을 쓰세요.
답. 남녀가 합격률이 다른 부서에 서로 다르게 몰려 지원했기 때문입니다.
확인 4-3. 승산비의 비축약성을 검산 값으로 쓰세요.
답. 조건부가 둘 다 인데 합치면 이며 교란이 없는데도 그렇습니다.
문제. 표본이 적거나 범주가 많을 때의 문제를 봅니다.
(1) 인 칸이 있을 때 승산비를 구하세요.
(2) 범주가 많아지면 칸이 얼마나 비는지 구하세요.
(3) 비율 여러 개를 함께 볼 때의 문제를 확인하세요.
생각의 실마리. 분할표는 나누는 연산이 많습니다. 비율도 승산도 승산비도 전부 나눗셈이므로, 분모가 이 되는 순간 전부 무너집니다.
풀이. (1) 처치군에서 실패가 하나도 없는 경우입니다.
| 칸 | 성공 | 실패 |
|---|---|---|
| 처치 | ||
| 대조 |
분모가 이라 무한이 됩니다. 네 칸에 씩 더하면 이 나오며 홀데인-앤스컴 보정이라 부릅니다.
보정은 답을 만들어 내는 것이 아닙니다. 자료가 말할 수 있는 것은 "처치군에서 실패를 못 봤다"뿐이고, 이라는 숫자는 보정 규칙이 만든 것입니다. 대신 을 더하면 다른 값이 나옵니다. 표본이 작다는 사실을 함께 적어야 합니다.
(2) 범주가 많아지면 칸이 빠르게 빕니다. 표본 개입니다.
| 범주 수 | 칸 수 | 칸당 평균 표본 | 한 칸이 빌 확률 | 빈 칸의 기댓값 |
|---|---|---|---|---|
범주가 개면 칸당 개뿐이고 빈 칸이 개 넘게 생깁니다. 161강 문제 2에서 변수가 늘면 완전한 행이 줄어든 것과 같은 종류의 문제입니다.
(3) 드문 범주는 묶거나 평활합니다.
| 범주 | 관측 수 | 그냥 비율 | 라플라스 평활 |
|---|---|---|---|
관측이 인 범주에 비율 을 주면 그 범주가 불가능하다고 말하는 셈입니다. 평활은 이라는 작은 값을 주어 드물지만 가능하다고 말합니다.
그리고 비율 여러 개를 한꺼번에 보면 구간이 넓어져야 합니다.
| 동시에 보는 비율 수 | 각각의 신뢰수준 | 전체가 다 맞을 확률 |
|---|---|---|
개를 각각 퍼센트로 만들면 전부 맞을 확률이 입니다. 152강 다중비교와 같은 문제이며, 범주가 많으면 반드시 걸립니다.
이 문제에서 배우는 것. 범주형 자료의 어려움은 대부분 표본이 흩어지는 데서 옵니다. 수치 자료는 개면 어떤 요약값도 잘 추정되는데, 범주가 개면 같은 개가 칸당 개로 흩어집니다. 그래서 범주형에서는 범주를 묶는 결정이 분석의 큰 부분을 차지하며, 그 결정이 결과를 바꿉니다. 161강 심화 5의 민감도 분석과 사전 등록이 여기서도 필요합니다.
바로 확인 5.
확인 5-1. 인 칸이 있을 때의 처리와 그 한계를 쓰세요.
답. 네 칸에 씩 더하는 보정을 쓰며 값은 규칙이 만든 것이라 표본이 작다는 사실을 함께 적습니다.
확인 5-2. 검산에서 범주 개일 때 빈 칸의 기댓값을 쓰세요.
답. 개이며 칸당 평균 표본이 개뿐입니다.
확인 5-3. 라플라스 평활의 식과 목적을 쓰세요.
답. 이며 관측되지 않은 범주를 불가능하다고 말하지 않기 위해서입니다.
| 비율 | 무엇으로 나누는가 | 언제 뜻이 있는가 |
|---|---|---|
| 행 비율 | 행 합 | 노출을 정해 놓고 모았을 때 |
| 열 비율 | 열 합 | 결과를 정해 놓고 모았을 때 |
| 전체 비율 | 전체 | 무작위로 모았을 때 |
| 효과 척도 | 식 | 성질 |
|---|---|---|
| 위험차 | p_{1}-p_ | 절대적 크기, 합쳐집니다 |
| 위험비 | p_{1}/p_ | 상대적 크기, 합쳐집니다 |
| 승산비 | 방향에 무관, 합쳐지지 않습니다 |
| 관계의 척도 | 표본이 커지면 |
|---|---|
| 카이제곱 | 비례해 커집니다 |
| 크라메르 | 그대로입니다 |
| 자주 하는 실수 | 바로잡기 |
|---|---|
| 행 비율과 열 비율을 섞습니다 | 조건의 방향이 다릅니다 |
| 설계가 정한 비율을 결과로 읽습니다 | 자료가 말한 것이 아닙니다 |
| 승산비를 위험비처럼 읽습니다 | 흔한 결과에서 세 배까지 부풉니다 |
| 승산비만 적고 기저 위험을 안 적습니다 | 환산할 수 없습니다 |
| 카이제곱 값을 세기로 읽습니다 | 표본 크기에 비례합니다 |
| 집단을 확인 없이 합칩니다 | 심슨의 역설이 있습니다 |
| 인 칸을 보정하고 그냥 보고합니다 | 보정 규칙이 만든 값입니다 |
문제 6. 분할표에서 나오는 세 비율을 쓰세요.
답. 행 비율, 열 비율, 전체 비율입니다.
문제 7. 검산에서 행 비율과 열 비율을 쓰세요.
답. 행은 과 이고 열은 와 입니다.
문제 8. 결과를 정해 놓고 모은 자료에서 못 쓰는 비율을 쓰세요.
답. 행 비율이며 그쪽이 설계로 정해졌기 때문입니다.
문제 9. 승산과 승산비를 식으로 쓰세요.
답. 승산은 이고 승산비는 두 승산의 비인 입니다.
문제 10. 검산에서 기저 위험 일 때 위험비와 승산비를 쓰세요.
답. 위험비 , 승산비 입니다.
문제 11. 드문 결과에서 승산비가 위험비에 가까워지는 이유를 쓰세요.
답. 가 작으면 이기 때문입니다.
문제 12. 승산비를 결과 기준 표집에서도 쓸 수 있는 이유를 쓰세요.
답. 대각선 곱의 비라 표를 어느 방향으로 읽어도 같기 때문입니다.
문제 13. 기대도수의 식과 검산의 카이제곱 값을 쓰세요.
답. 행 합과 열 합의 곱을 전체로 나누며 카이제곱은 입니다.
문제 14. 검산에서 표를 배 늘렸을 때 두 값을 쓰세요.
답. 카이제곱 , 크라메르 입니다.
문제 15. 검산의 심슨의 역설 수치를 쓰세요.
답. 부서별로 여자가 높은데 합계는 와 로 남자가 높습니다.
문제 16. 승산비의 비축약성을 검산 값으로 쓰세요.
답. 조건부가 둘 다 인데 합치면 입니다.
문제 17. 인 칸의 보정과 그 한계를 쓰세요.
답. 네 칸에 씩 더해 을 얻으며 그 값은 규칙이 만든 것입니다.
문제 18. 검산에서 범주 개일 때 칸당 표본과 빈 칸을 쓰세요.
답. 칸당 개이고 빈 칸의 기댓값이 개입니다.
심화 1. 층별로 승산비를 합치는 방법을 정리하세요.
문제 4에서 그냥 합치면 안 된다는 것을 보았습니다. 층을 유지한 채 합치는 방법이 있습니다.
맨텔-헨첼 추정량이며 층마다의 정보를 무게로 삼아 합칩니다.
| 방법 | 성격 |
|---|---|
| 그냥 합침 | 교란과 비축약성이 함께 들어옵니다 |
| 맨텔-헨첼 | 층을 유지하고 무게를 줍니다 |
| 로지스틱 회귀 | 층을 변수로 넣습니다 |
층마다 승산비가 다르면 합치면 안 됩니다. 이것을 상호작용이라 하며, 하나의 수로 요약하는 것 자체가 틀린 요약입니다. 층별 값이 와 이면 평균을 내는 것이 아무 뜻이 없습니다.
그래서 순서가 정해집니다. 먼저 층별 승산비가 비슷한지 보고, 비슷하면 합치고, 다르면 층별로 따로 보고합니다. 동질성 검정이 그 판정에 쓰이지만, 164강 문제 4의 문제가 그대로 있어 층이 작으면 힘이 없습니다.
심화 2. 비율의 신뢰구간을 정리하세요.
비율 하나의 구간도 간단하지 않습니다.
이 익숙한 식이 극단에서 무너집니다. 이면 구간이 한 점 이 되어 불확실성이 없다고 말합니다.
| 방법 | 성격 |
|---|---|
| 발트 구간 | 위 식이며 극단에서 무너집니다 |
| 윌슨 구간 | 항상 안이고 극단에서도 작동합니다 |
| 클로퍼-피어슨 | 보수적이며 구간이 넓습니다 |
| 제프리스 | 베타 사전분포를 쓴 베이즈 구간입니다 |
윌슨 구간이 기본값으로 권장됩니다. 발트 구간은 이름난 문제가 있어, 이고 이면 실제 포함률이 퍼센트에 한참 못 미칩니다.
을 관측했을 때의 상한이 유용합니다. 번 시도해 한 번도 안 나왔다면 참 비율의 퍼센트 상한이 대략 입니다. 번 시도해 사고가 없었다면 사고율이 퍼센트보다 낮다고 말할 수 있으며, 이라고 말할 수는 없습니다. 문제 5의 평활과 같은 정신입니다.
심화 3. 순서가 있는 범주를 정리하세요.
158강 문제 3의 순서 척도가 분할표에 들어오면 선택이 생깁니다.
| 다루는 방식 | 잃는 것 |
|---|---|
| 명목으로 봄 | 순서 정보를 버립니다 |
| 점수를 매겨 수치로 봄 | 간격이 같다고 가정합니다 |
| 순위 기반 검정 | 간격 정보를 버립니다 |
둘째 줄의 가정이 결과를 바꿉니다. 만족도 다섯 단계에 를 주는 것과 을 주는 것이 다른 답을 냅니다.
순서를 쓰면 검정력이 오릅니다. 일반 카이제곱은 자유도가 인데, **경향이 있다는 대립가설로 좁히면 자유도가 **이 되어 훨씬 예민해집니다.
대신 방향을 미리 정해야 합니다. 자료를 보고 경향의 방향을 정하면 162강 문제 2의 누출과 같은 구조가 됩니다.
누적 승산비가 순서형의 표준 도구입니다. " 이하 대 초과"의 승산비가 모든 에서 같다고 두는 것이며, 그 가정 자체를 확인해야 합니다.
심화 4. 범주가 아주 많은 변수를 정리하세요.
문제 5에서 범주 개면 칸당 개라고 했습니다. 실무에서는 훨씬 심합니다. 우편번호, 상품 코드, 사용자 아이디는 범주가 수만 개입니다.
| 방법 | 내용 |
|---|---|
| 빈도로 자르기 | 드문 범주를 기타로 묶습니다 |
| 목표값 부호화 | 범주별 결과 평균으로 바꿉니다 |
| 해시 부호화 | 고정된 개수의 칸으로 해시합니다 |
| 임베딩 | 낮은 차원의 벡터로 학습합니다 |
둘째 줄이 가장 강력하고 가장 위험합니다. 범주를 그 범주의 목표값 평균으로 바꾸면 정보가 잘 담기는데, 그 평균을 전체 자료로 계산하면 162강 문제 2의 누출입니다.
표본이 적은 범주에서 특히 심합니다. 어떤 범주에 자료가 한 건뿐이면 그 범주의 평균은 그 건의 목표값 자체이므로, 목표값을 특징으로 넣은 것이 됩니다.
대책은 두 가지를 겹쳐 씁니다. 훈련부 안에서도 교차로 나눠 계산하고, 문제 5의 평활을 씌워 표본이 적은 범주를 전체 평균 쪽으로 당깁니다.
첫째 줄의 기준도 자료에서 정하면 안 됩니다. 어떤 범주를 기타로 묶을지는 훈련부에서 정하고 저장해야 하며, 162강 문제 4의 적합과 적용의 분리가 그대로 적용됩니다.
심화 5. 분할표의 정확검정을 정리하세요.
문제 3의 카이제곱은 근사입니다. 기대도수가 작으면 근사가 나쁩니다.
흔히 쓰는 기준은 모든 기대도수가 이상이어야 한다는 것인데, 문제 5의 인 칸이 있는 표는 당연히 그렇지 않습니다.
피셔의 정확검정이 대안입니다. 주변합을 고정하고 초기하분포로 확률을 직접 계산하므로 근사가 없습니다.
| 성질 | 내용 |
|---|---|
| 근사가 없음 | 정확한 확률입니다 |
| 보수적 | 실제 종 오류가 목표보다 작습니다 |
| 계산량 | 표가 크면 무거워집니다 |
둘째 줄이 논쟁거리입니다. 이산분포라 정확히 를 맞출 수 없어 검정이 필요 이상으로 엄격해지며, 그만큼 검정력을 잃습니다. 주변합을 고정하는 것이 옳으냐는 물음도 오래된 논쟁입니다.
표가 크면 몬테카를로로 근사합니다. 주변합을 유지한 채 표를 무작위로 만들어 통계량의 분포를 얻는 방식이며, 157강의 발상과 같습니다.
심화 6. 이 강의가 어디에 쓰이는지 정리하세요.
| 분야 | 쓰임 | 이어지는 강의 |
|---|---|---|
| 시각화 | 막대그림과 모자이크 그림 | 169강 |
| 조사 설계 | 응답을 범주로 받습니다 | 176강 |
| 관측 자료 | 심슨과 교란 | 177강 |
| 분류 모형 | 혼동행렬이 분할표입니다 | S9 |
넷째 줄이 뒤에서 계속 나옵니다. 분류기의 성능을 재는 혼동행렬이 정확히 분할표이며, 정밀도와 재현율이 문제 1의 열 비율과 행 비율입니다.
| 지표 | 분할표에서 |
|---|---|
| 재현율 | 실제 양성 중 맞힌 비율 |
| 정밀도 | 예측 양성 중 맞은 비율 |
둘이 다른 이유가 문제 1의 이야기 그대로입니다. 조건의 방향이 다르며, 한쪽만 보고 성능을 말하면 안 됩니다. 그리고 기저 비율이 낮으면 정밀도가 낮게 나오는데, 그것은 모형이 나빠서가 아니라 문제 2에서 본 기저 위험의 문제입니다.
정답.
| 기호 | 읽는 법 | 뜻 |
|---|---|---|
| 분할표 | contingency table | 두 범주를 교차해 센 표입니다 |
| 위험차 | risk difference | 두 비율의 차입니다 |
| 위험비 | risk ratio | 두 비율의 비입니다 |
| 승산 | odds | 입니다 |
| 승산비 | odds ratio | 두 승산의 비이며 입니다 |
| 기대도수 | expected count | 무관할 때 기대되는 칸의 수입니다 |
| \chi^ | 카이제곱 | 관측과 기대의 차이를 모은 값입니다 |
| 크라메르 | Cramer's V | 표본 크기로 나눈 연관성의 세기입니다 |
| 비축약성 | non-collapsibility | 합치면 값이 달라지는 성질입니다 |
| 맨텔-헨첼 | Mantel-Haenszel | 층을 유지한 채 승산비를 합칩니다 |
| 홀데인-앤스컴 보정 | Haldane-Anscombe | 네 칸에 씩 더합니다 |
| 라플라스 평활 | Laplace smoothing | 각 범주에 을 더합니다 |
| 윌슨 구간 | Wilson interval | 극단에서도 작동하는 비율 구간입니다 |
| 피셔의 정확검정 | Fisher's exact test | 초기하분포로 정확히 계산합니다 |
| 목표값 부호화 | target encoding | 범주를 결과 평균으로 바꿉니다 |
여기서 02단원 기술통계가 끝납니다. 163강에서 중심과 퍼짐을 세우고, 164강에서 모양을 재고, 165강에서 순위로 옮기고, 166강에서 두 변수를 잇고, 167강에서 범주를 다뤘습니다.
다섯 강의가 하나의 결론으로 모입니다.
163강의 앤스컴 자료, 164강의 상한에 눌린 첨도, 165강의 다섯 수가 같은 세 자료, 166강의 퍼센트가 만든 상관, 167강의 뒤집히는 합격률이 전부 같은 이야기였습니다.
다음은 03단원 탐색과 시각화입니다. 요약이 놓치는 것을 보는 방법이며, 이 단원에서 다섯 번 반복한 "그림을 봐야 합니다"의 그 그림을 다룹니다. 168강이 시각화의 문법을 세우고, 169강부터 172강까지 분포와 관계를 보는 그림과 잘못된 그래프를 가려내는 법으로 이어집니다.
import numpy as np
rng = np.random.default_rng(20260904)
def pw(s, n):
k = n - sum(2 if ord(c) > 0x2FFF else 1 for c in str(s))
return str(s) + " " * max(k, 0)
def rw(s, n):
k = n - sum(2 if ord(c) > 0x2FFF else 1 for c in str(s))
return " " * max(k, 0) + str(s)
# --- 문제 1: 분할표를 어떻게 읽는가 -------------------------------------
print(" 두 범주를 교차해 세면 분할표가 됩니다")
T = np.array([[180.0, 820.0], [100.0, 900.0]])
rows = ["광고 봄", "광고 안 봄"]
cols = ["구매", "비구매"]
print(" %s %s %s %s" % (pw("", 12), rw("구매", 10), rw("비구매", 10), rw("합", 10)))
for i in range(2):
print(" %s %10.0f %10.0f %10.0f" % (pw(rows[i], 12), T[i, 0], T[i, 1], T[i].sum()))
print(" %s %10.0f %10.0f %10.0f" % (pw("합", 12), T[:, 0].sum(), T[:, 1].sum(), T.sum()))
print(" 같은 표에서 세 가지 비율을 뽑을 수 있고 답하는 질문이 다릅니다")
print(" %s %s %s %s" % (pw("비율의 종류", 14), rw("광고 봄", 12),
rw("광고 안 봄", 12), "무엇을 묻는가"))
print(" %s %12.4f %12.4f %s"
% (pw("행 비율", 14), T[0, 0] / T[0].sum(), T[1, 0] / T[1].sum(),
"각 줄에서 산 비율"))
print(" %s %12.4f %12.4f %s"
% (pw("열 비율", 14), T[0, 0] / T[:, 0].sum(), T[1, 0] / T[:, 0].sum(),
"산 사람 중 각 줄인 비율"))
print(" %s %12.4f %12.4f %s"
% (pw("전체 비율", 14), T[0, 0] / T.sum(), T[1, 0] / T.sum(),
"전체 중 구매 칸의 비율"))
print(" 세 값이 전부 다릅니다. 어느 것을 볼지는 무엇을 묻는지가 정합니다")
print(" 광고 효과를 묻는다면 행 비율입니다. 0.1800 대 0.1000 입니다")
print(" 자료를 어떻게 모았는지가 볼 수 있는 비율을 정하기도 합니다")
print(" 광고를 본 1000 명과 안 본 1000 명을 정해 놓고 모았다면 행 비율만 뜻이 있습니다")
print(" 구매자 280 명과 비구매자 1720 명을 정해 놓고 모았다면 열 비율만 뜻이 있습니다")
print(" 정해 놓은 쪽의 비율은 연구자가 만든 것이라 자료가 말한 것이 아닙니다")
# --- 문제 2: 효과를 무엇으로 재는가 -------------------------------------
print(" 두 비율의 차이를 재는 방법이 셋입니다")
p1 = T[0, 0] / T[0].sum()
p0 = T[1, 0] / T[1].sum()
rd = p1 - p0
rr = p1 / p0
orv = (p1 / (1 - p1)) / (p0 / (1 - p0))
print(" %s %s %s" % (pw("척도", 12), rw("값", 12), "뜻"))
print(" %s %12.4f %s" % (pw("위험차", 12), rd, "100 명당 8 명이 더 삽니다"))
print(" %s %12.4f %s" % (pw("위험비", 12), rr, "1.8 배 더 삽니다"))
print(" %s %12.4f %s" % (pw("승산비", 12), orv, "승산이 1.9756 배입니다"))
print(" 승산은 확률을 그 여집합으로 나눈 값입니다")
print(" 확률 %.2f 의 승산은 %.4f 이고 확률 %.2f 의 승산은 %.4f 입니다"
% (p1, p1 / (1 - p1), p0, p0 / (1 - p0)))
print(" 세 값은 기저 위험에 따라 아주 다르게 움직입니다. 위험비를 2 로 고정합니다")
print(" %s %s %s %s %s" % (pw("기저 위험 p0", 14), rw("p1", 10), rw("위험차", 10),
rw("위험비", 10), rw("승산비", 12)))
for q in [0.001, 0.01, 0.05, 0.2, 0.4]:
q1 = 2 * q
o = (q1 / (1 - q1)) / (q / (1 - q))
print(" %s %10.4f %10.4f %10.4f %12.4f" % (pw("%.3f" % q, 14), q1, q1 - q, 2.0, o))
print(" 드물면 승산비가 위험비와 거의 같고 흔하면 훨씬 큽니다")
print(" 기저 위험 0.4 에서 위험비는 2 인데 승산비는 %.4f 입니다"
% ((0.8 / 0.2) / (0.4 / 0.6)))
print(" 승산비를 위험비처럼 읽으면 효과를 크게 부풀리게 됩니다")
print(" 그런데도 승산비를 쓰는 이유가 있습니다")
print(" %s %s %s" % (pw("자료를 모은 방식", 24), rw("위험비를 낼 수 있는가", 24),
rw("승산비", 12)))
print(" %s %24s %12s" % (pw("노출을 정해 놓고 모음", 24), rw("가능", 24), rw("가능", 12)))
print(" %s %24s %12s" % (pw("결과를 정해 놓고 모음", 24), rw("불가능", 24), rw("가능", 12)))
print(" 승산비는 표를 어느 방향으로 읽어도 같은 값이 나옵니다")
tt = (T[0, 0] * T[1, 1]) / (T[0, 1] * T[1, 0])
oc = ((T[0, 0] / T[:, 0].sum()) / (T[1, 0] / T[:, 0].sum())) / \
((T[0, 1] / T[:, 1].sum()) / (T[1, 1] / T[:, 1].sum()))
print(" 행으로 계산한 승산비 %.6f, 열로 계산한 승산비 %.6f" % (tt, oc))
# --- 문제 3: 관계가 있는지 어떻게 판정하는가 ----------------------------
print(" 두 범주가 무관하다면 각 칸의 기대도수는 주변합의 곱을 전체로 나눈 값입니다")
E = np.outer(T.sum(axis=1), T.sum(axis=0)) / T.sum()
print(" %s %s %s %s %s" % (pw("칸", 20), rw("관측", 10), rw("기대", 10),
rw("차이", 10), rw("기여", 10)))
chi = 0.0
for i in range(2):
for j in range(2):
c = (T[i, j] - E[i, j]) ** 2 / E[i, j]
chi += c
print(" %s %10.0f %10.1f %10.1f %10.4f"
% (pw("%s, %s" % (rows[i], cols[j]), 20), T[i, j], E[i, j],
T[i, j] - E[i, j], c))
print(" 카이제곱은 %.4f 이고 자유도는 1 입니다. 기준값 3.8415 를 넘습니다" % chi)
print(" 그런데 카이제곱은 표본이 커지면 함께 커집니다. 세기를 재는 값이 아닙니다")
print(" %s %s %s %s" % (pw("표를 몇 배로 늘리면", 20), rw("표본 크기", 12),
rw("카이제곱", 12), rw("크라메르 V", 14)))
for m in [1, 2, 10, 100]:
S = T * m
Em = np.outer(S.sum(axis=1), S.sum(axis=0)) / S.sum()
c = float(((S - Em) ** 2 / Em).sum())
v = np.sqrt(c / (S.sum() * min(S.shape[0] - 1, S.shape[1] - 1)))
print(" %s %12.0f %12.4f %14.6f" % (pw("%d 배" % m, 20), S.sum(), c, v))
print(" 비율은 하나도 안 바뀌었는데 카이제곱만 100 배가 됩니다")
print(" 크라메르 V 는 그대로입니다. 표본 크기로 나눠 놓았기 때문입니다")
print(" 164강 문제 4 에서 본 것과 같습니다. 검정통계량은 증거의 세기를 잽니다")
print(" 효과의 크기는 위험차나 크라메르 V 처럼 표본에 안 딸린 값으로 봅니다")
# --- 문제 4: 합치면 뒤집히는 경우 ---------------------------------------
print(" 두 부서의 합격률을 봅니다")
dep = {"부서 A": np.array([[200.0, 200.0], [60.0, 40.0]]),
"부서 B": np.array([[20.0, 80.0], [100.0, 300.0]])}
print(" %s %s %s %s %s" % (pw("부서", 10), rw("남 지원", 10), rw("남 합격률", 12),
rw("여 지원", 10), rw("여 합격률", 12)))
tot = np.zeros((2, 2))
for k, D in dep.items():
tot += D
print(" %s %10.0f %12.4f %10.0f %12.4f"
% (pw(k, 10), D[0].sum(), D[0, 0] / D[0].sum(),
D[1].sum(), D[1, 0] / D[1].sum()))
print(" %s %10.0f %12.4f %10.0f %12.4f"
% (pw("합계", 10), tot[0].sum(), tot[0, 0] / tot[0].sum(),
tot[1].sum(), tot[1, 0] / tot[1].sum()))
print(" 부서마다 여자의 합격률이 높은데 합치면 남자가 높습니다")
print(" 원인은 지원한 부서가 다르다는 데 있습니다")
for k, D in dep.items():
print(" %s 의 전체 합격률은 %.4f 이고 남자 %.0f 명, 여자 %.0f 명이 지원했습니다"
% (k, D[:, 0].sum() / D.sum(), D[0].sum(), D[1].sum()))
print(" 남자는 합격률 높은 부서에, 여자는 낮은 부서에 몰려 지원했습니다")
print(" 승산비는 교란이 없어도 합치면 값이 달라집니다")
n4 = 4000000
zc = (rng.random(n4) < 0.5).astype(float)
xx = (rng.random(n4) < 0.5).astype(float)
lo = -1.0 + np.log(3.0) * xx + 2.0 * zc
py = 1.0 / (1.0 + np.exp(-lo))
yy = (rng.random(n4) < py).astype(float)
print(" z 는 x 와 무관하게 동전으로 정했습니다. 조건부 승산비는 3 으로 두었습니다")
def orat(a, b):
t = np.zeros((2, 2))
for i in (0, 1):
for j in (0, 1):
t[i, j] = float(((a == i) & (b == j)).sum())
return (t[1, 1] * t[0, 0]) / (t[1, 0] * t[0, 1])
print(" %s %s" % (pw("무엇을 보는가", 24), rw("승산비", 12)))
for zv in (0.0, 1.0):
m = zc == zv
print(" %s %12.6f" % (pw("z = %.0f 인 사람만" % zv, 24), orat(xx[m], yy[m])))
print(" %s %12.6f" % (pw("z 를 무시하고 합침", 24), orat(xx, yy)))
print(" 조건부는 둘 다 3 인데 합치면 3 보다 작습니다. 교란이 아닌데도 달라집니다")
print(" 비선형 연결함수를 쓰면 평균을 낸 것이 평균의 값과 다르기 때문입니다")
print(" 132강 젠센과 같은 뿌리입니다. 위험차와 위험비에는 이 일이 없습니다")
# --- 문제 5: 칸이 비면 어떻게 하는가 ------------------------------------
print(" 분할표에 0 인 칸이 하나만 있어도 승산비가 무너집니다")
Z = np.array([[10.0, 0.0], [4.0, 6.0]])
print(" %s %s %s" % (pw("칸", 16), rw("성공", 10), rw("실패", 10)))
for i, nm in enumerate(["처치", "대조"]):
print(" %s %10.0f %10.0f" % (pw(nm, 16), Z[i, 0], Z[i, 1]))
print(" 승산비를 그대로 계산하면 분모가 0 이라 무한이 됩니다")
Zc = Z + 0.5
oc2 = (Zc[0, 0] * Zc[1, 1]) / (Zc[0, 1] * Zc[1, 0])
print(" 네 칸에 0.5 씩 더하면 %.6f 이 됩니다. 홀데인-앤스컴 보정입니다" % oc2)
print(" 보정은 답을 만들어 내는 것이 아니라 답이 없다는 사실을 덮는 것입니다")
print(" 표본이 작다는 사실을 함께 적어야 합니다")
print(" 범주가 많으면 칸마다 표본이 빠르게 줄어듭니다")
print(" 표본 10000 개를 범주 수를 늘려 가며 칸에 나눕니다")
print(" %s %s %s %s %s" % (pw("범주 수", 12), rw("칸 수", 10), rw("칸당 평균 표본", 16),
rw("한 칸이 빌 확률", 18), rw("빈 칸의 기댓값", 16)))
n5 = 10000
for c in [2, 10, 100, 1000]:
cc = c * 2
exp_empty = (1 - 1.0 / cc) ** n5
print(" %s %10d %16.4f %18.6f %16.2f"
% (pw(str(c), 12), cc, n5 / cc, exp_empty, exp_empty * cc))
print(" 범주가 1000 개면 칸당 5 개뿐이고 빈 칸이 13 개 넘게 생깁니다")
print(" 드문 범주는 묶거나 평활합니다")
cnt = np.array([500.0, 300.0, 150.0, 40.0, 8.0, 2.0, 0.0])
print(" %s %s %s %s" % (pw("범주", 10), rw("관측 수", 10), rw("그냥 비율", 12),
rw("라플라스 평활", 16)))
for i, v in enumerate(cnt):
print(" %s %10.0f %12.6f %16.6f"
% (pw("%d" % i, 10), v, v / cnt.sum(), (v + 1) / (cnt.sum() + len(cnt))))
print(" 관측이 0 인 범주에 비율 0 을 주면 그 범주가 불가능하다고 말하는 셈입니다")
print(" 평활은 %.6f 라는 작은 값을 주어 드물지만 가능하다고 말합니다"
% ((0.0 + 1) / (cnt.sum() + len(cnt))))
print(" 비율 여러 개를 한꺼번에 보면 구간이 넓어져야 합니다")
print(" %s %s %s" % (pw("동시에 보는 비율 수", 20), rw("각각의 신뢰수준", 18),
rw("전체가 다 맞을 확률", 22)))
for m in [1, 5, 20, 100]:
print(" %s %18.4f %22.6f" % (pw(str(m), 20), 0.95, 0.95 ** m))
print(" 100 개를 각각 95 퍼센트로 만들면 전부 맞을 확률이 %.4f 로 떨어집니다"
% (0.95 ** 100))
print(" 152강 다중비교와 같은 문제입니다. 범주가 많으면 반드시 걸립니다")
# 두 범주를 교차해 세면 분할표가 됩니다
# 구매 비구매 합
# 광고 봄 180 820 1000
# 광고 안 봄 100 900 1000
# 합 280 1720 2000
# 같은 표에서 세 가지 비율을 뽑을 수 있고 답하는 질문이 다릅니다
# 비율의 종류 광고 봄 광고 안 봄 무엇을 묻는가
# 행 비율 0.1800 0.1000 각 줄에서 산 비율
# 열 비율 0.6429 0.3571 산 사람 중 각 줄인 비율
# 전체 비율 0.0900 0.0500 전체 중 구매 칸의 비율
# 세 값이 전부 다릅니다. 어느 것을 볼지는 무엇을 묻는지가 정합니다
# 광고 효과를 묻는다면 행 비율입니다. 0.1800 대 0.1000 입니다
# 자료를 어떻게 모았는지가 볼 수 있는 비율을 정하기도 합니다
# 광고를 본 1000 명과 안 본 1000 명을 정해 놓고 모았다면 행 비율만 뜻이 있습니다
# 구매자 280 명과 비구매자 1720 명을 정해 놓고 모았다면 열 비율만 뜻이 있습니다
# 정해 놓은 쪽의 비율은 연구자가 만든 것이라 자료가 말한 것이 아닙니다
# 두 비율의 차이를 재는 방법이 셋입니다
# 척도 값 뜻
# 위험차 0.0800 100 명당 8 명이 더 삽니다
# 위험비 1.8000 1.8 배 더 삽니다
# 승산비 1.9756 승산이 1.9756 배입니다
# 승산은 확률을 그 여집합으로 나눈 값입니다
# 확률 0.18 의 승산은 0.2195 이고 확률 0.10 의 승산은 0.1111 입니다
# 세 값은 기저 위험에 따라 아주 다르게 움직입니다. 위험비를 2 로 고정합니다
# 기저 위험 p0 p1 위험차 위험비 승산비
# 0.001 0.0020 0.0010 2.0000 2.0020
# 0.010 0.0200 0.0100 2.0000 2.0204
# 0.050 0.1000 0.0500 2.0000 2.1111
# 0.200 0.4000 0.2000 2.0000 2.6667
# 0.400 0.8000 0.4000 2.0000 6.0000
# 드물면 승산비가 위험비와 거의 같고 흔하면 훨씬 큽니다
# 기저 위험 0.4 에서 위험비는 2 인데 승산비는 6.0000 입니다
# 승산비를 위험비처럼 읽으면 효과를 크게 부풀리게 됩니다
# 그런데도 승산비를 쓰는 이유가 있습니다
# 자료를 모은 방식 위험비를 낼 수 있는가 승산비
# 노출을 정해 놓고 모음 가능 가능
# 결과를 정해 놓고 모음 불가능 가능
# 승산비는 표를 어느 방향으로 읽어도 같은 값이 나옵니다
# 행으로 계산한 승산비 1.975610, 열로 계산한 승산비 1.975610
# 두 범주가 무관하다면 각 칸의 기대도수는 주변합의 곱을 전체로 나눈 값입니다
# 칸 관측 기대 차이 기여
# 광고 봄, 구매 180 140.0 40.0 11.4286
# 광고 봄, 비구매 820 860.0 -40.0 1.8605
# 광고 안 봄, 구매 100 140.0 -40.0 11.4286
# 광고 안 봄, 비구매 900 860.0 40.0 1.8605
# 카이제곱은 26.5781 이고 자유도는 1 입니다. 기준값 3.8415 를 넘습니다
# 그런데 카이제곱은 표본이 커지면 함께 커집니다. 세기를 재는 값이 아닙니다
# 표를 몇 배로 늘리면 표본 크기 카이제곱 크라메르 V
# 1 배 2000 26.5781 0.115278
# 2 배 4000 53.1561 0.115278
# 10 배 20000 265.7807 0.115278
# 100 배 200000 2657.8073 0.115278
# 비율은 하나도 안 바뀌었는데 카이제곱만 100 배가 됩니다
# 크라메르 V 는 그대로입니다. 표본 크기로 나눠 놓았기 때문입니다
# 164강 문제 4 에서 본 것과 같습니다. 검정통계량은 증거의 세기를 잽니다
# 효과의 크기는 위험차나 크라메르 V 처럼 표본에 안 딸린 값으로 봅니다
# 두 부서의 합격률을 봅니다
# 부서 남 지원 남 합격률 여 지원 여 합격률
# 부서 A 400 0.5000 100 0.6000
# 부서 B 100 0.2000 400 0.2500
# 합계 500 0.4400 500 0.3200
# 부서마다 여자의 합격률이 높은데 합치면 남자가 높습니다
# 원인은 지원한 부서가 다르다는 데 있습니다
# 부서 A 의 전체 합격률은 0.5200 이고 남자 400 명, 여자 100 명이 지원했습니다
# 부서 B 의 전체 합격률은 0.2400 이고 남자 100 명, 여자 400 명이 지원했습니다
# 남자는 합격률 높은 부서에, 여자는 낮은 부서에 몰려 지원했습니다
# 승산비는 교란이 없어도 합치면 값이 달라집니다
# z 는 x 와 무관하게 동전으로 정했습니다. 조건부 승산비는 3 으로 두었습니다
# 무엇을 보는가 승산비
# z = 0 인 사람만 2.998389
# z = 1 인 사람만 3.009277
# z 를 무시하고 합침 2.423277
# 조건부는 둘 다 3 인데 합치면 3 보다 작습니다. 교란이 아닌데도 달라집니다
# 비선형 연결함수를 쓰면 평균을 낸 것이 평균의 값과 다르기 때문입니다
# 132강 젠센과 같은 뿌리입니다. 위험차와 위험비에는 이 일이 없습니다
# 분할표에 0 인 칸이 하나만 있어도 승산비가 무너집니다
# 칸 성공 실패
# 처치 10 0
# 대조 4 6
# 승산비를 그대로 계산하면 분모가 0 이라 무한이 됩니다
# 네 칸에 0.5 씩 더하면 30.333333 이 됩니다. 홀데인-앤스컴 보정입니다
# 보정은 답을 만들어 내는 것이 아니라 답이 없다는 사실을 덮는 것입니다
# 표본이 작다는 사실을 함께 적어야 합니다
# 범주가 많으면 칸마다 표본이 빠르게 줄어듭니다
# 표본 10000 개를 범주 수를 늘려 가며 칸에 나눕니다
# 범주 수 칸 수 칸당 평균 표본 한 칸이 빌 확률 빈 칸의 기댓값
# 2 4 2500.0000 0.000000 0.00
# 10 20 500.0000 0.000000 0.00
# 100 200 50.0000 0.000000 0.00
# 1000 2000 5.0000 0.006730 13.46
# 범주가 1000 개면 칸당 5 개뿐이고 빈 칸이 13 개 넘게 생깁니다
# 드문 범주는 묶거나 평활합니다
# 범주 관측 수 그냥 비율 라플라스 평활
# 0 500 0.500000 0.497517
# 1 300 0.300000 0.298908
# 2 150 0.150000 0.149950
# 3 40 0.040000 0.040715
# 4 8 0.008000 0.008937
# 5 2 0.002000 0.002979
# 6 0 0.000000 0.000993
# 관측이 0 인 범주에 비율 0 을 주면 그 범주가 불가능하다고 말하는 셈입니다
# 평활은 0.000993 라는 작은 값을 주어 드물지만 가능하다고 말합니다
# 비율 여러 개를 한꺼번에 보면 구간이 넓어져야 합니다
# 동시에 보는 비율 수 각각의 신뢰수준 전체가 다 맞을 확률
# 1 0.9500 0.950000
# 5 0.9500 0.773781
# 20 0.9500 0.358486
# 100 0.9500 0.005921
# 100 개를 각각 95 퍼센트로 만들면 전부 맞을 확률이 0.0059 로 떨어집니다
# 152강 다중비교와 같은 문제입니다. 범주가 많으면 반드시 걸립니다