바이오인포매틱스

군마다 시료가 셋뿐일 때: t-검정을 limma로 바꾸면서 알게 된 것

3 대 3에서는 Mann-Whitney로 p < 0.05가 나올 수 없고, t-검정은 표준편차 두 배 차이도 절반 넘게 놓칩니다. limma는 보정 통과 목록을 두 배로 늘리지만 거짓 비율을 낮추지는 않습니다. 정답을 아는 가상 실험과 논문 네 편으로 정리했습니다.

·17 min read
#limma#moderated t-test#t-검정#소표본#3 대 3#대사체학#단백체학#fold change#다중검정#검정력

오믹스 실험에서는 군마다 시료 세 개(3 대 3)로 비교하는 일이 흔합니다. 이 글은 그 조건에서 통계가 해 줄 수 있는 것과 못 하는 것, 그리고 저희가 기본 검정을 바꾸면서도 바꾸지 않은 것을 정리했습니다.

근거는 공개된 논문과 가상 데이터로 돌린 시뮬레이션뿐이며, 시뮬레이션 스크립트와 출력은 공개해 두었습니다. 고객 자료는 쓰지 않았습니다. (English version: Three Samples per Group)

저울 세 번 이야기

몸무게를 세 번 쟀더니 60.1, 60.3, 59.9 kg이 나왔다고 해 보겠습니다. 흔들림이 작아 보입니다. 그런데 그 세 번이 우연히 비슷했던 것인지, 정말 이 저울이 늘 그만큼만 흔들리는지는 세 번만으로는 알 수 없습니다. 다음 세 번은 58, 61, 63이 나올 수도 있습니다.

t-검정은 「두 군의 평균 차이」를 「군 안의 흔들림」으로 나눈 값입니다. 시료가 셋이면 그 흔들림을 거의 모르는 채로 나누는 셈입니다. 단백체 통계 논문은 이렇게 적습니다 [1].

"proteins exhibiting a large fold change are often declared non-significant because of a large sample variance, while at the same time small observed fold changes might be declared statistically significant, because of a small sample variance."

크게 변한 것은 놓치고, 조금 변한 것은 우연히 흔들림이 작게 나와 「유의」로 잡힙니다. 3 대 3 실험의 결과표를 읽을 때 먼저 떠올려야 할 사실입니다.

1. 비모수 검정은 처음부터 0.05를 넘을 수 없다

「시료가 적고 분포를 모르니 비모수(Mann-Whitney)로 하자」는 말을 자주 듣습니다. 3 대 3에서는 이 길이 아예 막혀 있습니다.

여섯 개를 셋씩 나누는 방법은 C(6,3) = 20가지뿐입니다. 아무리 깔끔하게 갈려도(한 군이 1·2·3등, 다른 군이 4·5·6등) 양측 p 값은 2/20 = 0.10이 가장 작습니다.

군당 시료나누는 방법나올 수 있는 가장 작은 p (양측)
3200.100
4700.029
52520.008

데이터가 어떻든 p < 0.05는 나오지 않습니다. 3 대 3에서는 t 계열 검정만 쓸 수 있습니다.

2. 검정력: 큰 차이도 절반은 놓친다

3 대 3 양측 t-검정(유의수준 0.05)으로 실제로 있는 차이를 잡아낼 확률입니다. 효과크기 d는 「평균 차이가 군 안 표준편차의 몇 배인가」입니다.

효과크기 d잡아낼 확률
1 (표준편차만큼 차이)16%
246%
378%

평균이 군 안 표준편차의 두 배나 차이 나도 절반 넘게 놓칩니다. 그러니 「유의하지 않았다」를 「차이가 없다」로 읽으면 안 됩니다. 반대로 80% 확률로 잡으려면 군당 시료가 d=1에서 약 17개, d=1.5에서 약 9개 필요합니다.

3. 그래서 p 값만으로 고르지 말라는 권고

MAQC 컨소시엄은 마이크로어레이 데이터로 이 문제를 크게 검토한 뒤 권고를 냈습니다 [2] (굵은 글씨는 강조를 위해 추가).

"Reports of DEG list instability in the literature are often a direct consequence of comparing DEG lists derived from a simple t-statistic when the sample size is small and variability in variance estimation is large. Therefore, the practice of using P alone for gene selection should be discouraged."

"Using FC and P together balances reproducibility, specificity, and sensitivity. Control of specificity and sensitivity can be accomplished with a P criterion, while reproducibility is enhanced with an FC criterion."

"FC-ranking should be used in combination with a non-stringent P threshold to select a DEG list that is reproducible, specific, and sensitive, and a joint rule is recommended as a baseline practice."

많이 쓰는 「p < 0.05 그리고 변화 2배 이상」 같은 기준이 이 권고에 해당합니다.

다만 반론도 있다

배수(FC) 기준을 덧붙이는 방식에는 분명한 약점이 있습니다 [3].

"The disadvantage of an ad-hoc FC criterion is that it does not take into account error variance and therefore offers no statistical confidence about future results."

이 논문(NanoString 연구, 돌연변이 생쥐 6마리 대 대조군 12마리)은 보통 t-검정(p < 0.01)에 1.5배 기준을 붙여 49개를 골랐는데, 그중 20개는 *"in reality most likely not DE"*였다고 보고합니다 [3]. 배수 기준은 거짓을 줄여 주지만, 얼마나 줄였는지는 알려 주지 않습니다.

4. 가상 실험: 정답을 아는 데이터로 직접 재 보기

실제 데이터에서는 무엇이 진짜 차이인지 모릅니다. 그래서 정답을 정해 둔 가상 데이터를 만들어 봤습니다.

  • 대사체 400개 중 40개만 진짜로 변함(2.8배, log2 변화량 ±1.5)
  • 군당 시료 3개, 대사체마다 군 안 표준편차가 다름(로그정규분포, log2 척도 중앙값 0.5)
  • 같은 실험을 500번 반복한 평균, Student t-검정 대 limma(eBayes 기본값)
기준검정고른 수그중 거짓거짓 비율잡은 진짜 (40개 중)
p < 0.05만t-검정46.118.039%28.1
limma51.219.037%32.2
p < 0.05 그리고 2배 이상t-검정33.35.918%27.5
limma42.110.826%31.3
다중검정 보정(BH 5%)t-검정6.90.46%6.5
limma16.10.96%15.1

이 표에서 읽을 것

  1. p 값만으로 고르면 고른 것의 40% 가까이가 우연입니다. 거짓 18개는 「변하지 않는 대사체 360개 × 0.05 = 18개」에서 예상되는 그대로입니다.
  2. 2배 기준을 붙이면 거짓이 18개에서 6개로 줄어듭니다. MAQC 권고가 말한 효과가 가상 데이터에서도 그대로 나옵니다.
  3. limma는 진짜를 더 잡지만(27.5→31.3) 거짓도 늘어납니다(5.9→10.8). 흔들림을 모아서 추정하다 보니, 원래 흔들림이 큰 대사체도 흔들림이 작아 보이게 되고, 그런 대사체가 2배 기준을 우연히 넘기 때문으로 보입니다. 2배 기준과 함께 쓰면 거짓 비율은 오히려 올라갑니다(18%→26%).
  4. 다중검정 보정을 통과하는 수는 limma가 두 배 이상입니다(6.9→16.1). 그러면서도 그 안의 거짓 비율은 6%로 같습니다. 3 대 3 t-검정에서는 보정 후 거의 남지 않는 일이 흔한데, limma를 쓰면 보정을 통과한 목록을 실제로 얻을 수 있습니다.

5. 왜 limma는 보정 후에도 살아남나

t-검정은 대사체 하나하나의 흔들림을 그 대사체의 시료 여섯 개만으로 잽니다. limma는 「대사체들의 흔들림은 대체로 비슷한 범위에 있다」는 점을 이용해, 전체 대사체에서 얻은 정보를 각 대사체의 추정에 조금씩 빌려 줍니다(분산 축소, moderated t). 흔들림을 우연히 아주 작게 잰 대사체가 과하게 유의해지는 일이 줄고, 검정에 쓰는 자유도도 늘어납니다.

단백체 논문은 3 대 3 세포주 비교(단백질 8,625개, FDR 1%)에서 이렇게 보고합니다 [4].

"t test identified a single significant DEP after correction for multiple testing (1% FDR), whereas 21 DEPs were identified using ROTS. DEqMS and Limma generated 201 and 120 DEPs respectively"

같은 논문은 또 하나의 차이를 짚습니다 [4].

"all these methods calculate pooled variances for each protein using all samples in all sample groups, whereas t test use only the samples in the two groups compared."

정답을 아는 단백체 벤치마크로 같은 경향을 직접 잰 글도 있습니다: limma vs DEqMS at small n (영문).

그런데 대사체는 변수가 적다

위 DEqMS 사례는 단백질이 8,625개였습니다. 변수가 적은 패널에서는 분산 축소가 자동으로 이득이 되지 않습니다. 유전자 558개를 잰 Vaes 등의 NanoString 연구에서는, 배수 기준에 대한 limma의 moderated 검정(TREAT)이 같은 p 기준에서 평범한 t 기반 검정보다 오히려 거짓 발견이 많았고, 전체 성능(AUC)은 차이가 없었습니다 [3]. 저자들은 그 이유로 측정값의 노이즈가 크지 않았던 점과 패널이 작은 점을 들며 이렇게 적었습니다 [3].

"some of the gene-wise variances may be shrunk (or blasted) by too large a factor when applying TREAT on our NanoString data, as the hierarchical Bayesian model is expecting a few outlier variances."

대사체는 정량되는 화합물이 수백 개인 경우가 많습니다. 그래서 「limma가 무조건 낫다」고 말할 수 없고, 자기 데이터로 직접 비교해 봐야 합니다. 저희도 바꾸기 전에 그렇게 비교했습니다.

6. 그래서 저희는 이렇게 정했습니다

바꾼 것: 군 비교 검정을 t-검정에서 limma(moderated t, 비교하는 두 군의 시료만 사용)로. 이유는 두 가지입니다.

  1. 다중검정 보정을 통과하는 결과가 생긴다. 3 대 3에서 보정 후 거의 남지 않는 일은 흔한데, limma로 바꾸면 보정을 통과한 목록을 함께 드릴 수 있습니다.
  2. 많이 쓰는 도구도 그쪽으로 가고 있다. MetaboAnalystR 개발판이 2026년 7월에 t-검정 기본값(Ttests.Anal)을 limma로 바꿨습니다(커밋 e028f54). 최신 정식 배포판(v4.2.0)은 아직 일반 t-검정입니다.

바꾸지 않은 것: 「p < 0.05 그리고 2배 이상」 기준. MAQC 권고대로 배수 기준은 거짓을 확실히 줄여 줍니다.

하지 않기로 한 말: 「더 정확해졌다」. 위 가상 실험처럼, 2배 기준과 함께 쓸 때 limma의 거짓 비율은 t-검정보다 낮지 않습니다. 저희가 얻은 것은 「더 많이 찾는 것」과 「보정 통과 목록」이지, 「거짓이 줄어든 것」이 아닙니다.

적용 범위: 새 과제부터. 기본값이 바뀔 때마다 지난 결과를 다시 계산하면 같은 실험의 숫자가 두 벌이 됩니다.

7. 3 대 3 결과를 보고할 때 넣으면 좋은 문장

  • 「군당 3개 시료로 수행한 탐색적 분석입니다. 유의 목록은 후속 검증을 위한 후보입니다.」
  • 「차이가 전혀 없더라도 이 기준을 우연히 통과할 것으로 예상되는 수는 약 ○개입니다.」 (군 라벨을 섞어 다시 계산하면 구할 수 있습니다)
  • 「다중검정 보정(BH) 결과를 함께 표기했습니다.」
  • 「유의하지 않은 항목을 ‘변화 없음’으로 해석하지 마십시오(검정력이 낮습니다).」

마무리

3 대 3 실험에서 가장 큰 통계적 결정은 어떤 검정을 쓰느냐가 아니라 시료를 몇 개 모으느냐입니다. 검정을 바꾸면 목록의 길이는 달라지지만, 셋으로 흔들림을 잴 수 없다는 사실은 그대로입니다. 위에서 인용한 MAQC 권고도 같은 말로 이어집니다: "Sensitivity can also be improved by … increased sample sizes." [2]

그래서 저희는 검정을 바꾸면서도 이 문장을 결과와 함께 드리기로 했습니다. 「이 목록은 후보입니다. 몇 개는 우연일 수 있고, 그게 몇 개쯤인지도 함께 적어 드립니다.」

재현

three_vs_three.R을 돌리면 1·2·4절의 숫자가 약 20초 만에 그대로 나옵니다(R 4.3.3, limma 3.58.1). 가상 실험 조건: 대사체 400개(진짜 변화 40개, log2 ±1.5, 증가·감소 번갈아), 군당 3개, 대사체별 군 안 표준편차는 log2 척도 중앙값 0.5·sdlog 0.6인 로그정규분포, 500회 반복, seed 1.

참고문헌

  1. Kammers K, Cole RN, Tiengwe C, Ruczinski I. Detecting Significant Changes in Protein Abundance. EuPA Open Proteomics 2015;7:11–19. doi:10.1016/j.euprot.2015.02.002
  2. Shi L, Jones WD, Jensen RV, et al. The balance of reproducibility, sensitivity, and specificity of lists of differentially expressed genes in microarray studies. BMC Bioinformatics 2008;9(Suppl 9):S10. doi:10.1186/1471-2105-9-S9-S10
  3. Vaes E, Khan M, Mombaerts P. Statistical analysis of differential gene expression relative to a fold change threshold on NanoString data of mouse odorant receptor genes. BMC Bioinformatics 2014;15:39. doi:10.1186/1471-2105-15-39
  4. Zhu Y, Orre LM, Zhou Tran Y, Mermelekas G, Johansson HJ, Malyutina A, Anders S, Lehtiö J. DEqMS: A Method for Accurate Variance Estimation in Differential Protein Expression Analysis. Molecular & Cellular Proteomics 2020;19:1047–1057. doi:10.1074/mcp.TIR119.001646

인용한 문장은 모두 해당 논문 본문과 글자 그대로 대조했습니다. 인용문 속 굵은 글씨는 강조를 위해 추가한 것입니다.

관련 글