8강 / 20강
347 번 검정하면 무슨 일이 생기나
p < 0.05 가 103 개인데 우연 기댓값은 17 개 · BH 로 q값 만들기
p < 0.05 라는 문턱은 검정을 한 번 할 때의 약속입니다. "아무 일도 없는데 이만한 차이가 나올 확률이 5% 이하" 라는 뜻이죠.
그런데 우리는 5강에서 miRNA 347 종을 한꺼번에 검정했습니다. 아무 일도 없었다 해도 347 × 0.05 ≈ 17 개는 저절로 p < 0.05 가 됩니다.
먼저 규모를 봅니다. 103 개 중 17 개쯤은 그냥 우연입니다 — 어느 17 개인지 모를 뿐.
Python
브라우저에서 실행
p값의 히스토그램이 알려 주는 것
아무 일도 없다면 p값은 0과 1 사이에 고르게 퍼집니다. 실제 신호가 섞여 있으면 0 근처에 봉우리가 생깁니다. 그림 한 장으로 "신호가 있긴 있나" 를 볼 수 있습니다.
왼쪽 끝이 기준선보다 얼마나 높은가 — 그 초과분이 진짜 신호의 크기입니다.
Python
브라우저에서 실행
BH 는 세 줄이면 짭니다. 정렬 → 순위로 나누기 → 뒤에서부터 누적 최솟값.
Python
브라우저에서 실행
103 개가 22 개로
p < 0.05 로 103 개였던 목록이 q < 0.05 에서 22 개로 줄었습니다. miR-34b-5p 는 q = 0.010, miR-34c-5p 는 q = 0.046 으로 둘 다 살아남았습니다. 5강에서 본 신호가 다중검정을 견뎌 낸 것입니다.
그런데 같은 계열의 나머지 넷 — miR-34a-5p · miR-449a · miR-449b · miR-449c-5p — 은 문턱 근처에도 못 갑니다. 발현량이 CPM 1~33 로 너무 낮기 때문입니다(4강). 심지어 449c-5p 는 방향이 반대입니다.
같은 씨앗을 가진 여섯 miRNA 가 따로따로 검정을 받으면
둘만 통과하고 넷은 흩어집니다. 그러나 세포 입장에서 이 여섯은 같은 표적을 누르는 한 팀입니다.
그래서 10강에서 계열을 배우고, 14강부터는 검정 단위를 miRNA 하나가 아니라 표적 집합으로 옮기게 됩니다. 그때 힘을 갖는 것은 배수변화가 아니라 발현량으로 가중한 계열 전체의 변화입니다.
🎮 다중검정 실험실
문턱을 옮기면서 목록의 크기와 예상 가짜 개수가 어떻게 변하는지 보세요.
🤔 확인 문제
347 종을 검정했을 때 p < 0.05 인 miRNA 가 103 개 나왔습니다. 이때 옳은 해석은?
해설 기댓값 17 개는 몇 개가 가짜인지는 알려 주지만 어느 것이 가짜인지는 알려 주지 않습니다. 그래서 개수를 지정해 버리는 것이 아니라, BH 처럼 비율을 통제하는 문턱을 씁니다.
🤔 확인 문제
Benjamini-Hochberg 의 q값이 뜻하는 것은?
해설 q = 0.05 는 '이 유전자가 가짜일 확률 5%' 가 아니라 '이 문턱으로 만든 목록 전체에서 가짜가 평균 5%' 라는 뜻입니다. 개별 항목이 아니라 목록에 대한 약속입니다.
🤔 확인 문제
BH 보정을 1,976 종 전체가 아니라 문턱을 통과한 347 종에만 적용해야 하는 이유는?
해설 BH 의 보정 강도는 검정 횟수 n 에 비례합니다. 여섯 표본 전부 0 인 927 종처럼 애초에 검정할 수 없는 행까지 n 에 넣으면 벌만 커지고 얻는 것은 없습니다. 그래서 '거르고 나서 보정한다' 가 순서입니다 — 다만 결과를 보고 거르면 그건 조작입니다.