RNA-seq differential expression

DEG는 유전자마다 묻는
작은 통계 실험입니다

RNA-seq에서 DEG를 계산한다는 말은 단순히 평균 count를 비교한다는 뜻이 아닙니다. sequencing depth, 유전자별 평균-분산 관계, biological replicate, batch, cell type, donor 구조를 모델 안에 넣고, “이 조건 효과가 우연으로 설명되는가”를 유전자마다 묻는 과정입니다.

1. count matrixgenes × samples, raw reads or UMIs
2. normalizationlibrary size, composition, GC or batch
3. statistical modelcondition coefficient + uncertainty
first principles

처음 배울 때 잡아야 할 네 가지

DEG 분석의 핵심은 “차이”가 아니라 “차이를 믿을 근거”입니다. count가 많은지, replicate가 충분한지, cell이 아니라 donor가 독립 단위인지, batch가 조건과 섞였는지가 결과를 바꿉니다.

1

count는 정규분포가 아닙니다

RNA-seq count는 0 이상의 정수이고, 평균이 커지면 분산도 커집니다. 그래서 t-test보다 Poisson 또는 negative binomial 계열 모델이 자연스럽습니다.

2

replicate는 샘플입니다

같은 donor에서 나온 세포 2,000개는 donor 2,000명이 아닙니다. 통계적으로 독립인 단위가 무엇인지 먼저 정해야 합니다.

3

logFC는 효과 크기입니다

p-value는 “믿을 수 있는가”를 묻고, log2 fold change는 “얼마나 달라졌는가”를 말합니다. 둘을 분리해서 읽어야 합니다.

4

FDR은 목록의 오류율입니다

2만 개 유전자를 동시에 검사하면 작은 p-value가 우연히 많이 생깁니다. Benjamini-Hochberg 보정은 발견 목록 안의 false discovery 비율을 제어합니다.

math with intuition

수식은 “어떤 오차를 인정하는가”를 적는 언어입니다

같은 평균 차이라도 실험 설계와 분산 구조가 다르면 결론이 달라집니다. 아래 수식은 DEG 방법들이 공유하는 최소 골격입니다.

1. RNA-seq count model

Kg,s ~ NB(μg,s, αg)
Var(Kg,s) = μg,s + αgμg,s2

Poisson은 분산이 평균과 같다고 봅니다. 실제 RNA-seq은 biological variability 때문에 분산이 더 큽니다. 이 초과분산을 α가 담당합니다.

2. normalization과 design matrix

μg,s = sizeFactors × qg,s
log(qg,s) = β0g + β1gconditions + β2gbatchs

size factor는 “샘플마다 컵 크기가 다르다”는 문제를 보정합니다. design matrix는 조건, batch, sex, age처럼 함께 고려할 변수를 표로 적는 방식입니다.

3. pseudobulk aggregation

Yg,d,c = ∑cell i in donor d, cell type c Kg,i
Yg,d,c ~ NB(μg,d,c, αg,c)

세포를 바로 독립 샘플로 쓰지 않고, donor와 cell type별로 raw count를 합칩니다. 그 다음 donor 단위 count matrix에 bulk RNA-seq 방법을 적용합니다.

4. Wald statistic과 p-value

zg = estimate(β1g) / SE(β1g)
pg = 2 × Pr(|Z| ≥ |zg|)

조건 효과가 추정 오차에 비해 충분히 큰지 보는 비율입니다. 같은 logFC라도 replicate가 많고 분산이 작으면 z가 커집니다.

5. Benjamini-Hochberg FDR

p(1) ≤ p(2) ≤ ... ≤ p(m)
q(i) = minj≥i m × p(j) / j

유전자 하나가 아니라 발견 목록 전체를 다루는 보정입니다. q=0.05인 목록은 “그 목록 중 약 5% 이하가 false discovery가 되도록” 설계된 기준입니다.

6. shrinkage의 직관

noisy LFC → borrow information across genes → stable LFC
low count gene: strong shrinkage
high count gene: weak shrinkage

DESeq2의 핵심은 “유전자 하나만 보지 말고 전체 유전자의 평균-분산 패턴에서 배운다”입니다. 낮은 count에서 과장된 fold change를 줄여 ranking을 안정화합니다.

interactive simulator

replicate, dispersion, effect size가 DEG 목록을 어떻게 바꾸는가

아래 시뮬레이터는 180개 유전자를 만들고, 일부 유전자에 실제 조건 효과를 넣습니다. 점 하나가 유전자 하나입니다. 위로 올라갈수록 p-value가 작고, 좌우로 멀어질수록 logFC가 큽니다.

Volcano sketch q < 0.05, |log2FC| > 0.5
true positive false positive not called
single-cell differential expression

pseudobulk는 세포를 버리는 방법이 아니라, 독립 단위를 되찾는 방법입니다

단일세포 데이터에서 DEG를 할 때 가장 흔한 함정은 cell을 replicate처럼 쓰는 것입니다. pseudobulk는 donor별 cell type count를 합쳐 donor 간 변이를 모델링합니다.

naive cell-level

cell 10,000개를 N=10,000으로 세기

p-value가 지나치게 작아집니다. 같은 donor에서 나온 세포들은 batch, genotype, environment, sample handling을 공유하므로 완전히 독립이 아닙니다.

pseudobulk

donor × cell type별 raw count 합산

sample 수는 donor 수로 돌아갑니다. count는 커져서 dropout 노이즈가 줄고, bulk RNA-seq에서 검증된 DESeq2, edgeR, limma-voom을 쓸 수 있습니다.

mixed model

복잡한 반복 측정과 nested design

donor, batch, subject, time point가 겹칠 때는 random effect나 dreamlet, muscat 같은 다층 모델이 필요할 수 있습니다. 핵심은 cell 수보다 실험 단위입니다.

같은 데이터, 다른 독립 단위 한 gene 예시
method choices

상황별로 다른 질문, 다른 방법

DEG 분석법은 “좋은 방법 하나”로 끝나지 않습니다. count data, small n, zero inflation, cell type stratification, repeated donor design 중 무엇이 문제인지에 따라 선택지가 달라집니다.

raw counts

TPM, FPKM, CPM만으로 test하지 않습니다. DESeq2와 edgeR은 raw count와 library size 정보를 필요로 합니다.

filter low counts

거의 관측되지 않는 유전자는 multiple testing 부담만 늘립니다. filtering 기준은 test statistic과 독립적이어야 합니다.

normalize

median-of-ratios, TMM, upper quartile, cqn처럼 library composition과 bias를 줄입니다.

fit GLM

condition, batch, sex, age를 design matrix에 넣고 negative binomial 또는 voom-linear model을 적합합니다.

FDR + effect

q-value, shrunken logFC, MA plot, sample QC를 함께 읽습니다.

cell type first

전체 세포를 한 번에 비교하면 cell type composition 차이와 within-cell-type expression 차이가 섞입니다.

donor matters

case cell 5,000개와 control cell 5,000개라도 donor가 2명씩이면 통계적 N은 4에 가깝습니다.

MAST/Wilcoxon caution

cell-level 방법은 marker detection에는 유용하지만 cohort-level condition DE에서는 pseudo-replication을 조심해야 합니다.

composition vs expression

질환에서 cell type 비율이 바뀐 것인지, 같은 cell type 안의 expression이 바뀐 것인지 분리합니다.

validation

DEG 목록은 pathway, spatial, protein, perturbation, independent cohort로 한 번 더 확인합니다.

aggregate raw counts

cell type × donor × condition 단위로 count를 합산합니다. 평균보다 합산이 bulk model과 잘 맞습니다.

minimum cells

각 donor-cell type 조합에 cell이 너무 적으면 제외하거나 rare cell type 분석으로 분리합니다.

bulk methods

DESeq2, edgeR QL, limma-voom은 pseudobulk count matrix에 자연스럽게 적용됩니다.

multi-level

time, tissue, repeated sampling, family structure가 있으면 mixed model이나 duplicateCorrelation 계열을 검토합니다.

report N clearly

cell 수와 donor 수를 모두 보고합니다. 결론을 지탱하는 N은 donor 수입니다.

confounding check

case가 batch 1, control이 batch 2에 몰리면 통계 모델로 완전히 구할 수 없습니다. 설계 단계에서 섞어야 합니다.

known covariates

batch, RIN, sex, age, PMI, ancestry, sequencing lane은 design matrix에 넣습니다.

latent factors

SVA, RUV, PCA covariate는 숨은 기술 요인을 줄이지만, biology와 겹치면 실제 신호도 줄일 수 있습니다.

QC plots

PCA, sample distance, library size, percent mitochondrial, detected genes를 condition과 batch 색으로 봅니다.

interpret conditionally

covariate-adjusted DEG는 “그 covariate를 고정했을 때의 조건 효과”입니다.

source atlas

DEG와 pseudobulk를 읽기 위한 문헌 지도

아래 항목은 방법론, 실험 설계, single-cell 분석, perturbation/atlas 적용 논문을 함께 묶은 학습 지도입니다. 링크는 제목 기반 Google Scholar 검색으로 연결됩니다.

glossary

초보자가 자주 헷갈리는 말

biological replicate서로 다른 개체, donor, 독립 배양처럼 biological variability를 대표하는 단위입니다.
technical replicate같은 biological sample을 여러 번 측정한 것입니다. sequencing noise는 보지만 생물학적 변이는 대표하지 못합니다.
dispersioncount 분산이 평균보다 얼마나 더 큰지 나타내는 값입니다. 클수록 같은 평균 차이도 덜 확실합니다.
size factor샘플별 library size와 composition 차이를 보정하는 배율입니다.
log2FC조건 B가 A보다 2배 높으면 1, 절반이면 -1입니다. 방향과 크기를 함께 말합니다.
p-value조건 효과가 없다고 가정했을 때, 지금만큼 극단적인 결과가 나올 확률입니다.
q-value여러 유전자 동시 검정 후의 FDR 기준 값입니다. 발견 목록의 오류율을 다룹니다.
pseudo-replication독립이 아닌 관측치를 독립 replicate처럼 세는 오류입니다. single-cell DEG에서 특히 중요합니다.