실험을 하다 보면 "이것도 한번 돌려볼까"라는 생각이 자연스럽게 든다. 이 강에서는 그 자연스러운 충동이 왜 통계적 결론을 무너뜨리는지, 그리고 여러 번 비교하고도 결론을 지키려면 무엇을 해야 하는지 다룬다.
p-해킹(p-hacking)은 통계적으로 유의한 결과()가 나올 때까지 분석을 반복하거나 바꾸는 행위를 말한다. 데이터 자체를 조작하지 않는다는 점이 핵심이다. 각각의 분석은 그 자체로는 정당해 보인다. 문제는 여러 분석 중 유의하게 나온 것만 골라서 보고하는 데 있다.
9강에서 다룬 p값의 정의를 떠올리면 왜 문제인지 바로 보인다. p값은 "효과가 없다고 가정했을 때, 이 정도 결과가 우연히 나올 확률"이다. 유의수준 0.05는 곧 효과가 전혀 없어도 20번에 1번꼴로 유의하게 나온다는 뜻이다. 검정을 한 번만 하면 이 5%는 감수할 만한 오류율이다. 그러나 검정을 반복하면 이야기가 달라진다.
효과가 전혀 없는 상황에서 서로 독립인 검정을 번 하면, 적어도 하나가 우연히 유의하게 나올 확률은 다음과 같다.
| 검정 횟수 | 하나 이상 유의할 확률 |
|---|---|
| 1 | 5.0% |
| 5 | 22.6% |
| 10 | 40.1% |
| 20 | 64.2% |
| 60 | 95.4% |
20번 비교하면 아무 효과가 없어도 절반 이상의 확률로 "발견"이 나온다. 이것이 다중 비교(multiple comparisons) 문제다. p-해킹은 이 성질을 (대개 악의 없이) 악용하는 셈이다. 유의한 결과가 나올 때까지 뽑기를 계속하고, 당첨된 티켓만 보여주는 것이다.
p-해킹은 노골적인 조작보다 "합리적인 판단"의 얼굴을 하고 나타난다. LLM 실험을 예로 들면 다음과 같은 행동이 모두 여기에 해당한다.
분석 방법 바꾸기. 대응 검정으로 유의하지 않자 비대응 검정으로, 모수 검정이 안 되자 비모수 검정으로 갈아탄다. 결과를 본 뒤에 검정 방법을 고르면, 방법의 수만큼 뽑기를 한 것이다.
하위집단 뒤지기. 전체에서 모델 간 차이가 없자 "혹시 특정 조건에서는?" 하고 쪼개기 시작한다. 초성 줄임말 4지선다 평가라면 2글자 줄임말만, 신조어만, 특정 연도 이후 생긴 표현만, 보기가 긴 문항만처럼 쪼개는 축이 4개면 검정이 4번 늘어난다. 층화 분석 자체는 정당한 설계다(11강). 문제는 결과를 본 뒤에 쪼갤 축을 고르는 것이다.
측정 지표 갈아타기. 정확도로 차이가 없자 부분 점수로, 그래도 안 되면 응답 길이나 확신도(confidence)로 지표를 바꾼다. 지표 하나하나가 검정 하나다.
표본 늘리며 훔쳐보기. 100문항으로 유의하지 않자 50문항을 추가하고 다시 검정한다. 유의해질 때까지 반복한다. 이를 선택적 중단(optional stopping)이라 하며, 유의할 때 멈추는 규칙 자체가 오류율을 부풀린다.
조건 추가하기. 프롬프트를 바꿔서 한 번 더, temperature를 바꿔서 한 번 더, 모델 버전을 바꿔서 한 번 더. "돌려보고 싶어서" 추가한 실험 하나하나가 표의 를 1씩 올린다. 실험 추가 자체가 죄가 아니다. 추가한 모든 실험을 보고하지 않고 잘 나온 것만 보고하는 것이 죄다.
이 형태들의 공통 구조를 갈림길의 정원(garden of forking paths)이라고 부른다. 데이터 전처리, 이상치 제거 기준, 지표 선택, 하위집단 정의처럼 분석에는 수많은 갈림길이 있고, 각 갈림길에서 결과를 보고 방향을 고르면 연구자는 자기도 모르게 유의한 결과 쪽으로 걸어간다. 명시적으로 20번 검정하지 않았어도, 결과를 보고 나서 내린 선택이 하나라도 있으면 보고된 p값은 더 이상 액면 그대로의 의미를 갖지 않는다.
주의: p-해킹은 대부분 사기꾼이 아니라 성실한 연구자가 저지른다. "이 이상치는 빼는 게 맞지", "이 하위집단이 원래 관심사였지"라는 사후 합리화는 본인에게조차 정당하게 느껴진다. 결과를 보고 가설을 지어내는 HARKing(2강)과 함께, 악의 없이 작동하는 자기기만이라는 점이 가장 위험하다.
LLM 실험은 갈림길이 유난히 많은 환경이다. 실험 한 번의 비용이 낮아 조건 추가가 쉽고, 조절할 수 있는 손잡이가 많기 때문이다.
손잡이 하나를 돌릴 때마다 가 올라간다는 감각을 유지하는 것이 실무의 핵심이다.
죽은 연어의 뇌 활동. 신경과학 연구진이 fMRI 다중 비교 문제를 극적으로 보여주기 위해, 죽은 연어를 스캐너에 넣고 사람 사진을 보여주는 과제를 수행시켰다. fMRI는 뇌를 수만 개의 작은 부피 단위(복셀)로 나눠 각각 검정하는데, 보정 없이 분석하자 죽은 연어의 뇌에서 "사회적 상황에 반응하는" 유의한 활성 영역이 검출되었다. 죽은 물고기가 사진을 이해했을 리 없으니, 이는 순전히 다중 비교가 만든 거짓 양성이다. 이 연구는 보정 없는 다중 검정의 위험을 알린 대표 사례로 널리 인용되며, 이후 뇌영상 분야에서 다중 비교 보정이 표준으로 자리잡는 데 기여했다.
코넬대 식품행동연구실 사건. 저명한 식품행동 연구자가 자신의 블로그에, 유의한 결과가 나오지 않은 데이터셋을 대학원생에게 넘기며 "뭔가 나올 때까지" 여러 방식으로 쪼개 분석하게 했고 그 결과 여러 편의 논문이 나왔다는 일화를 자랑스럽게 공개했다. 이 글을 계기로 연구 공동체가 해당 연구실의 논문들을 검증했고, 수많은 통계 불일치가 발견되어 다수의 논문이 철회되었으며 연구자는 결국 사임했다. 본인은 그것을 "데이터를 끝까지 파고드는 성실함"이라 여겼다는 점에서, p-해킹이 악의 없이 일어난다는 것을 보여주는 사례다.
심리학 재현성 프로젝트에서 유의했던 발견의 상당수가 재현에 실패한 배경에도 이런 관행이 있다고 지목된다. 음성 결과가 출판되기 어려운 구조가 p-해킹의 유인을 만든다는 논의는 16강에서 다룬다.
다중 비교 자체는 죄가 아니다. LLM 연구에서는 모델 3개 × 프롬프트 2종을 비교하는 일이 흔하고, 이는 이미 검정 6번이다. 핵심은 모든 비교를 계획하고, 모든 비교를 보고하고, 비교 횟수만큼 보정하는 것이다.
가장 단순한 것은 본페로니 보정(Bonferroni correction)이다. 검정을 번 하면 각 검정의 유의수준을 로 낮춘다. 20번 비교하면 개별 검정은 일 때만 유의로 판정한다. 이렇게 하면 전체에서 거짓 양성이 하나라도 나올 확률(family-wise error rate)이 다시 5% 아래로 내려온다.
본페로니는 보수적이라 검정력(12강)을 크게 깎는다. 비교가 많은 탐색적 분석에서는 거짓 발견율(FDR, false discovery rate)을 통제하는 벤저미니-호흐버그(Benjamini–Hochberg) 절차가 흔히 쓰인다. "유의 판정 중 거짓의 비율"을 통제하는 방식으로, 발견 여러 개를 걸러내는 스크리닝에 적합하다. 어느 쪽이든 중요한 것은 분모 에 실제로 수행한 모든 검정을 넣는 것이다. 안 나온 비교를 빼고 보정하면 보정이 아니다.
두 방식의 성격을 정리하면 다음과 같다.
| 구분 | 본페로니 | 벤저미니-호흐버그 (FDR) |
|---|---|---|
| 통제 대상 | 거짓 양성이 하나라도 나올 확률 | 유의 판정 중 거짓의 비율 |
| 성격 | 보수적, 검정력 손실 큼 | 상대적으로 관대 |
| 적합한 상황 | 비교가 적고 하나하나가 결론인 확증 분석 | 비교가 많고 후속 검증이 따르는 탐색·스크리닝 |
보정을 적용하려면 "함께 보정할 검정의 묶음(family)"을 정해야 하는데, 이 정의 자체가 갈림길이 되기 쉽다. 실용적인 기준은 하나의 결론을 지탱하는 검정들을 한 묶음으로 묶는 것이다. "모델 A가 모델 B보다 초성 줄임말을 잘 이해한다"는 결론을 지표 3개로 확인한다면 그 3개가 한 묶음이다. 반면 서로 다른 가설(이해도 비교와 응답 시간 비교)은 별도 묶음으로 두어도 된다. 중요한 것은 이 묶음 정의 역시 결과를 보기 전에 적어두는 것이다. 결과를 본 뒤 묶음을 좁게 잘라 분모를 줄이는 것은 보정의 얼굴을 한 p-해킹이다.
보정보다 근본적인 해법은 분석의 지위를 둘로 나누는 것이다.
초성 줄임말 4지선다 평가 같은 LLM 실험이라면 절차는 이렇게 된다.
"보정은 검정력만 깎는 손해다." 보정은 오류율을 약속한 수준으로 되돌리는 것이지 벌칙이 아니다. 보정 후 검정력이 부족해서 문제라면, 답은 보정을 생략하는 것이 아니라 비교 수를 줄이거나 표본을 늘리는 것이다(12강). 애초에 비교 목록을 짤 때 "이 비교가 정말 가설에 필요한가"를 묻는 것이 가장 좋은 보정이다.
"탐색 분석은 나쁜 것이다." 아니다. 탐색은 가설을 낳는 정상적인 활동이다. 문제는 탐색에서 나온 결과를 확증인 것처럼 포장하는 것뿐이다. "탐색적 분석이며 새 데이터로 확증이 필요하다"라고 쓰면 아무 문제가 없다.
"p-해킹은 의도적 조작이니 나는 해당 없다." 갈림길의 정원이 보여주듯, 결과를 본 뒤의 선택은 의도 없이도 오류율을 부풀린다. "나는 정직하니까"는 방어책이 되지 못하며, 방어책은 절차(사전 고정, 전수 보고, 보정)뿐이다.
"유의한 결과가 여러 지표에서 나왔으니 확실하다." 지표들이 서로 강하게 상관되어 있으면(예: 정확도와 부분 점수) 여러 지표의 유의성은 독립적인 증거가 아니라 같은 뽑기의 복사본일 수 있다. 지표 수가 아니라 설계의 사전 고정 여부가 신뢰의 근거다.
"보정했으니 결론은 안전하다." 보정은 보고된 검정에 대해서만 작동한다. 서랍 속에 넣어둔 비교, 결과를 보고 버린 갈림길은 분모에 없다. 보정은 정직한 전수 보고와 결합할 때만 의미가 있다.
p-해킹 개념은 자기 실험의 방어뿐 아니라 문헌을 읽는 눈도 바꾼다. 다음 신호가 보이면 결론을 액면 그대로 받아들이기 전에 한 번 더 의심한다.
한 분야의 출판된 p값 분포로 그 분야의 관행을 진단하는 방법론이 따로 연구될 만큼, 이 신호들은 실제로 작동한다. 반대로 사전 등록 링크와 전체 비교 표가 있는 논문은 같은 p값이라도 훨씬 무겁게 읽을 수 있다.
p값의 5%는 검정 한 번에 대한 오류율이며, 비교를 반복하면 우연한 "발견"의 확률은 로 치솟는다. p-해킹은 데이터 조작이 아니라 결과를 본 뒤의 선택(지표·검정·하위집단·중단 시점·조건 추가)과 선택적 보고로 일어나며, 대부분 악의 없이 일어난다. 방어책은 비교 목록의 사전 고정, 탐색과 확증의 구분, 모든 비교의 보고, 그리고 실제 검정 횟수 전체에 대한 다중 비교 보정이다.