이 블로그 검색
Korea Industry Intelligence는 반도체, 이차전지, 석유화학, 건설기계, 제약바이오, 방위산업 등 한국 주요 산업의 구조를 공개 자료로 분석합니다.
추천 가젯
[11.분석 플랫폼] 모델 검정 공부하기 - 다중검정
들어가며
앞의 세 편은 전부 한쌍 페어로 검정을 해보았습니다. 계수 하나, 표 하나, 적중률 하나. 그런데 실무에서 그렇게 하는 사람이 있나요. 없습니다. 세상은 복잡하지요.
변수를 여러 개 넣어 보고, 기간을 이렇게도 저렇게도 잘라 보고, 모델을 몇 개 돌려 봅니다. 측정을 수십 번 합니다.
오늘은 그 다수의 변수를 측정할 때 무슨 일이 벌어지는지를 봅니다.
결론부터 말씀드리면, 측정을 여러 번 대면 아무것도 없어도 뭔가가 걸립니다. 그리고 그게 걸린 줄 모르고 보고하는 일이 아주 흔합니다.
하나, 오늘 풀 문제
딜 성사에 영향을 주는 변수를 찾고 싶습니다. 후보를 여섯 개 뽑았습니다.
① 업종 ② 거래 규모 ③ PE 참여 여부 ④ 인수 지분율 ⑤ 소재 지역 ⑥ 매출성장률
여섯 개를 각각 검정했더니 이런 p값이 나왔습니다.
업종만 0.05를 밑돌았습니다.
그래서 이렇게 보고합니다. "여섯 변수를 검토한 결과 업종이 유의한 변수로 확인됐습니다."
둘, 스무 명이 복권을 긁으면
유의수준 5%가 무슨 약속이었는지 다시 봅시다.
효과가 없는데도 있다고 잘못 말할 확률을 스무 번에 한 번으로 묶겠다는 뜻입니다.
여기서 "스무 번에 한 번"이 문제입니다. 그럼 스무 번 하면 그 한 번이 실제로 나온다는 소리잖아요.
검정 횟수별 · 아무 효과가 없는데도 하나쯤 "발견"할 확률
검정 1회 ▏ 5.0 % 검정 5회 ▓▓▓ 22.6 % 검정 10회 ▓▓▓▓▓ 40.1 % 검정 20회 ▓▓▓▓▓▓▓▓ 64.2 % 검정 50회 ▓▓▓▓▓▓▓▓▓▓▓ 92.3 %
계산은 단순합니다. 한 번에 안 걸릴 확률이 0.95니까, 20번 모두 안 걸릴 확률은 0.95²⁰ = 0.36. 거꾸로 하나라도 걸릴 확률이 64%입니다.
스무 명이 각자 복권을 긁으면 누군가는 당첨됩니다. 그 당첨자를 가리키며 "이 사람은 복권 실력이 있다"고 말하면 안 되겠죠. 스무 명이 긁었으니 당연한 일이니까요.
우리 사례가 정확히 그 구조입니다. 변수 여섯 개가 각자 복권을 긁었고, 그중 하나가 당첨됐습니다. 업종이 특별해서가 아니라 여섯 번 긁었기 때문일 수 있지요.
진짜 아무 관계가 없어도 이렇게 됩니다
실험을 해보면 분명합니다. 성사 여부를 동전 던져서 무작위로 정한 가짜 데이터를 만들고, 여섯 변수로 검정을 돌립니다. 관계가 있을 리가 없죠.
그런데 이 짓을 100번 반복하면, 그중 26번쯤은 여섯 개 중 하나가 0.05를 밑돕니다. (검정끼리 완전히 독립이면 22.6%, 실제로는 조금 더 나옵니다.) 아무것도 없는 데이터에서도 네 번에 한 번꼴로 "발견"이 나오는 겁니다.
m 검정 횟수. 우리 사례에서는 6입니다.
보정 여러 번 검정했다는 사실을 반영해 문턱을 더 엄하게 조정하는 절차.
셋, 문턱을 어떻게 조일 것인가
방법이 두 갈래입니다. 그리고 둘이 막으려는 것이 다릅니다. 이게 핵심이라 먼저 말씀드립니다.
본페로니 훨씬 엄격합니다. "하나라도"와 "비율"의 차이니까요. 그래서 쓰는 곳이 달라집니다.
Bonferroni · 문턱을 검정 수만큼 나눈다
α는 유의수준이니까 보통 0.05를 쓰지요, 95% 기준일 때. 업종 p = 0.03(카이제곱 때 예시) > 0.0083(문턱) → 문턱을 못 넘음, 업종은 유의하지 않다, 귀무가설("업종은 성사와 무관하다")을 기각하지 못한다. 이렇게 해석하게 됩니다.
여섯 번 검정할 거니까 각 검정에 5%를 다 주지 말고 6분의 1씩 나눠 쓰자는 발상입니다. 단순하고 확실합니다.
문제는 검정 수가 늘면 문턱이 가혹해진다는 겁니다. 변수 50개를 검정하면 문턱이 0.001이 됩니다. 이 정도면 진짜 효과도 대부분 같이 없다고 봅니다.
BH(Benjamini-Hochberg) · 순위를 매겨 뒤로 갈수록 봐준다
산식의 m ÷ i가 전부입니다. 1등에게는 검정횟수를 통째로 곱해 Bonferroni만큼 엄격하게 굴고, 순위가 뒤로 갈수록 나누는 순위가 커져 페널티가 가벼워집니다.
왜 뒤쪽을 순위로 나눠서 보냐면, 앞에서 이미 여러 개가 통과했다면 그만큼 진짜 발견이 실재한다는 증거이기 때문입니다.
주사위 여섯 개 던져서 1이 네 개 나오는 것과 같은 상황이에요. 그러니 앞쪽 순위 중에 진짜가 섞여 있다고 보는 게 자연스럽습니다. 다 가짜인데 여러 개가 나란히 작은 p값을 낼 확률은 낮거든요.
문턱을 그림으로 보면
넷, 우리 여섯 개를 실제로 계산해 봅시다
p값을 작은 순서로 세우고 q값을 구합니다.
판정 기준은 q < 0.05 입니다. 가장 좋은 것도 0.180이라 전원 기각입니다.
업종의 p값 0.030이 q값 0.180으로 바뀌었습니다. 여섯 배가 됐죠. 여섯 번 긁었으니 여섯 배 의심하겠다는 뜻입니다.
그래서 아까 그 보고는 이렇게 고쳐야 합니다.
업종의 보정 전 p값이 0.030으로 가장 낮았으나, 여섯 번 검정한 점을 반영하면 우연으로 설명 가능한 수준입니다.
BH가 Bonferroni보다 관대한 경우도 봅시다
위 사례는 둘 다 전원 기각이라 차이가 안 보였습니다. p값이 더 좋게 나온 경우로 바꿔 보겠습니다.
같은 데이터인데 발견 개수가 두 배 차이납니다. 탐색 단계에서 BH를 쓰는 이유가 이겁니다. Bonferroni로 가면 볼 만한 후보까지 다 잘려서, 다음 단계로 가져갈 게 안 남거든요.
6개를 동시에 검정했으므로 다중검정 보정(BH)을 적용했고, 보정 후 4개가 유의한 것으로 확인됐습니다 - 업종, 거래 규모, PE 참여 여부, 인수 지분율. 지역과 매출성장률은 유의하지 않았습니다.
다만 유의하다는 것은 "우연으로 설명되지 않는다"는 뜻이며, 각 변수가 성사에 얼마나 큰 영향을 주는지는 별도로 확인해야 합니다.
FDR False Discovery Rate. 발견했다고 선언한 것들 중 가짜가 차지하는 비율.
FWER 가짜가 하나라도 섞일 확률. Bonferroni가 통제하는 대상입니다.
1종 오류 효과가 없는데 있다고 말하는 실수. 유의수준 α가 묶는 대상입니다.
2종 오류 효과가 있는데 없다고 말하는 실수. 표본이 적을 때 잘 생깁니다.
검정력 진짜 효과가 있을 때 그걸 잡아낼 확률. 1 − 2종 오류 확률입니다.
다섯, 여기서 한계점을 알고 가긴 해야합니다
이게 가장 크고 가장 흔합니다. m을 정직하게 세는 사람이 드물어요.
보고서에 여섯 개를 썼다고 m이 6인 게 아닙니다. 실제로 돌려 본 횟수 전부가 m입니다. 변수를 열다섯 개 넣어 보고 여섯 개만 남겼다면 m은 15입니다. 기간을 3년·5년·10년으로 잘라 봤다면 거기에 3을 곱합니다. 모델을 회귀·부스팅·SVM 세 개 돌려 봤다면 또 3을 곱하고요.
그러면 m이 금세 100을 넘습니다. 즉, 변수 15개 × 기간 3개 × 모델 3개 = 135번. 그런데 보고서에는 "6개 변수를 검토했다"고 적힙니다.
그리고 아무도 그걸 세지 않습니다. 보고서에는 마지막에 살아남은 하나만 적히니까요. 이걸 숨은 다중검정이라고 부릅니다.
여섯 개를 다 돌려 보고 업종이 걸리니까, 보고서에는 "업종이 성사에 영향을 준다는 가설을 검정했다"고 씁니다. 나머지 다섯 개는 안 쓰고요.
이렇게 쓰면 읽는 사람은 m=1로 이해합니다. p=0.030이 그대로 유효해 보이죠. 여섯 번 긁었다는 사실이 지워지면 보정할 방법 자체가 사라집니다.
③편의 단측·양측 함정과 같은 구조입니다. 결과를 본 뒤에 규칙을 바꾸는 것. 다만 이쪽이 훨씬 발견하기 어렵습니다. 안 쓴 다섯 개는 흔적이 안 남으니까요.
이런 다중검정의 보정이 공짜는 아닙니다. 문턱을 조이면 진짜 효과를 놓칠 확률이 올라갑니다. 이걸 검정력이 떨어진다고 말합니다.
Bonferroni로 변수 50개를 검정하면 문턱이 0.001입니다. 웬만한 진짜 효과도 이 문턱은 못 넘어요. 가짜를 막으려다 진짜까지 막는 겁니다.
그래서 확인 단계에서는 Bonferroni, 탐색 단계에서는 BH를 씁니다. 탐색은 후보를 추리는 자리라 가짜가 몇 개 섞여도 다음 단계에서 걸러지거든요.
잠깐, 1종 오류와 2종 오류
여기까지 오면서 두 가지 실수 케이스에 대해 계속 이야기했습니다. 이름을 한번 붙여보지요.
1종 오류는 없는 걸 있다고 말하는 것입니다. 유의수준 5%가 묶는 게 정확히 이겁니다. 그리고 오늘 글 전체가 이 이야기예요. 스무 번 검정하면 64% 확률로 헛것이 걸린다는 것, 그게 1종 오류가 쌓이는 현상입니다.
2종 오류는 있는 걸 없다고 말하는 것입니다. ②편에서 "표본 50건으로는 24%p 차이도 못 잡는다"고 했던 게 이거고요. 차이는 실재하는데 자가 못 재서 놓친 겁니다.
그래서 보정은 공짜가 아닙니다. 가짜를 막는 대가로 진짜를 놓칠 위험을 사는 거예요.
여섯, 플랫폼에서 실제로 걸렸습니다
저평가 팩터 여섯 개를 Fama-MacBeth 회귀로 동시에 검정한 적이 있습니다. 개별 p값은 0.03까지 내려갔습니다.
Fama-MacBeth 주식 수익률을 설명하는 요인을 찾을 때 쓰는 회귀 방법입니다. 만든 사람 두 명(Fama, MacBeth)의 이름을 그대로 붙인거지요. 그래서 기억을 잘 못합니다 -_- 근데 잘 나가는 방식이지요.
결국 뭘 하려는 거냐면 이런 질문에 답하려는 겁니다. PBR이 낮은 종목이 정말로 수익률이 높은가?
그냥 회귀를 돌리면 왜 안 되냐면, 문제가 하나 있습니다. 같은 달에는 종목들이 다 같이 움직입니다. 시장이 좋은 달에는 PBR이 높든 낮든 대부분 오르거든요. 이걸 무시하고 전 종목·전 기간을 한 통에 넣고 돌리면, "그 달 시장이 어땠나"가 답을 만들어 버립니다.
그래서 두 단계로 나눕니다.
1단계에서 시장 효과가 사라집니다. 한 달 안에서만 비교하니까요. 그 달이 좋았든 나빴든, 그 안에서 PBR 낮은 종목이 더 올랐는지만 봅니다.
2단계가 우리가 아는 t검정입니다. 계수 240개를 하나의 표본으로 놓고 "평균이 0이냐"를 묻는 거죠. 그래서 t=−2.65 같은 값이 나옵니다.
자 이렇게 동시검정을 진행해 보면,
보정 전 숫자만 보면 하나는 살아남을 것 같았습니다. 보정하니 여섯 개 전부 날아갔습니다.
반면 패널 고정효과 회귀는 달랐습니다. 이건 같은 대상을 여러 시점에 걸쳐 관측한 데이터를 다루는 회귀입니다. 이름을 두 토막으로 떼면 이렇습니다.
패널 — 데이터 모양입니다.
이런식으로 기업 × 연도로 격자가 짜인 데이터셋인데, 한 시점만 보면 횡단면, 한 기업만 보면 시계열인데, 둘 다 있는 게 패널입니다.
고정효과는 이 데이터의 문제를 푸는 방법입니다. 기업마다 타고난 차이가 있습니다. 브랜드, 경영진, 업종 특성 같은 것들이요. 이게 측정이 안 되는데 수익률에는 영향을 줍니다. 그래서 이번 케이스에는 그냥 회귀를 돌리면 이 차이가 PBR 계수에 섞여 들어갑니다.
고정효과는 이걸 기업마다 자기 평균을 빼서 없앱니다.
이제 비교가 기업 안에서만 일어납니다. 삼성전자가 자기 평소보다 PBR이 높았던 해에 수익률이 어땠나. 삼성과 현대를 비교하는 게 아니라요. 기업의 타고난 차이는 평균에 다 흡수돼 사라집니다.
즉, 패널 고정효과 회귀 BH 보정 후 q < 0.001 → 통과
Fama-MacBeth 회귀(월별 횡단면 회귀 후 계수 평균 검정)에서는 팩터 6개를 동시에 검정했으며, 다중검정 보정 후 유의한 팩터가 확인되지 않았습니다. 보정 전 최소 p값이 0.030이었으나 보정 후 q값은 0.177이었습니다.
패널 고정효과 회귀(기업 고유 특성을 통제)에서는 보정 후에도 q < 0.001로 유의성이 유지됐습니다.
다만 두 방법은 서로 다른 요인을 통제하며, 패널 회귀는 관측 수가 커 통계량이 크게 나오는 경향이 있습니다. 표준오차를 기업·연도 클러스터로 보정한 뒤에도 결과가 유지되는지 확인이 필요합니다.
이게 보정을 하는 진짜 이유입니다. 결과를 깎아내리려는 게 아니라, 살아남은 것을 믿을 수 있게 만들려는 것이에요. 보정 없이 통과한 여섯 개보다, 보정하고도 통과한 하나가 훨씬 설득력이 있습니다.
정리하면
넷째 줄이 추가됐는데, 앞의 셋과 성격이 다릅니다. 다중검정 보정은 데이터를 재는 자가 아니라 검정 결과를 재는 자거든요.
그래서 이 자는 앞의 세 자 뒤에 옵니다. t검정을 여러 번 했으면 그 결과를, 이항검정을 여러 번 했으면 그 결과를 다시 재는 겁니다. 자를 재는 자예요.
다음 편은 표준오차 보정입니다. 오늘은 검정을 여러 번 해서 문제가 생겼는데, 다음 편은 한 번만 했는데도 눈금이 잘못 그려져 있는 경우입니다.
③편에서 5,000건을 월별로 다시 묶었던 이야기, 같은 달에 속한 예측들의 성적이 서로 닮는다는 그게 왜 필요했는지를 제대로 다룹니다. 가장 지루하긴 한데 가장 자주 결론을 바꾸는 케이스입니다.
이걸 말해도 의사결정자들이 이해하지 못할텐데 이렇게까지 해야하나? 이 질문이 저도 딜레마입니다. 그래도 그거 왜 그럽니까? 라고 물어볼 때, 대답할 줄 알면 기부니가 좋습니다.
작성: 2026. 8. 이알렉산드로
댓글
댓글 쓰기