19강 / 20강
p값을 손으로 만들기 — 순열검정
공식을 믿지 못하겠다면 섞어 보면 된다
14강에서 z 를 구하고 2 × norm.sf(|z|) 로 p값을 얻었습니다.
이 한 줄에는 큰 가정이 숨어 있어요 — z 가 표준정규분포를 따른다는 가정입니다.
이 가정은 표본이 충분히 크고 조건이 맞을 때 성립합니다. 그런데 우리 자료가 그런지 어떻게 알까요?
직접 만들어 보면 됩니다.
위암은 14강에서 p = 0.87 이었습니다 — 아무것도 없는 자리예요. 귀무가설이 참인 상황을 관찰하기에 좋습니다.
Python
브라우저에서 실행
평균 0.01, 표준편차 0.95, 꼬리 4.5%. 이론값(0, 1, 5%)에 충분히 가깝습니다 — 정규 근사를 써도 되겠다는 증거를 우리 손으로 만든 셈이에요.
Python
브라우저에서 실행
흑색종의 z 는 섞은 1,000번 중 한 번도 나오지 않습니다. 순열 p < 0.001.
Python
브라우저에서 실행
순열검정의 진짜 힘은 여기에 있습니다 — 어떤 절차든 통째로 섞어 넣을 수 있다는 점.
15강의 cutoff hacking 을 기억하세요. 열일곱 자리에서 잘라 보고 가장 좋은 p 를 고르는 절차 말입니다. 그 절차의 p값은 공식으로 구할 수 없어요. 하지만 순열로는 구할 수 있습니다 —
- 라벨을 섞는다
- 섞은 자료에서 열일곱 자리를 다 시험하고 가장 작은 p 를 고른다
- 이것을 1,000번 되풀이해 "최선의 p" 들의 분포를 얻는다
- 우리의 "최선의 p" 가 그 분포에서 얼마나 극단적인지 본다
이렇게 하면 탐색까지 포함한 정직한 p값이 나옵니다. 계산은 오래 걸리지만, 원리는 위에서 한 것과 똑같아요.
🤔 확인 문제
순열검정에서 라벨을 섞는 행위가 만들어 내는 세상은?
해설 라벨을 섞으면 침윤률 그룹과 생존 자료의 연결이 끊어집니다. 남는 것은 생존 자료의 실제 모양뿐이고, 이것이 귀무가설의 세상입니다.
🤔 확인 문제
순열검정을 써야 할 이유로 가장 강한 것은?
해설 정규 근사가 맞는지 확인하는 데도 좋지만, 진짜 힘은 절차 전체를 귀무 세상에서 그대로 되풀이할 수 있다는 점입니다 — 탐색을 포함해서요.