數據縮放 (Scaling) 詳解
在單細胞轉錄組測序分析流程中,數據縮放是銜接預處理與下游統計建模(如 PCA、聚類)的關鍵橋樑。本章節將帶您深入了解其本質。
什麼是 Scaling?
Scaling 是一種線性變換,目的在於調整每個基因在所有細胞中的表達值,使得不同基因之間的表達水平具有可比性。
核心問題: 即使完成歸一化,高表達基因的變異絕對值通常遠大於低表達基因。若不縮放,降維算法(如 PCA)將被少數高表達基因主導,忽略重要的中低表達基因。
三大核心目的
-
1
賦予基因相等的權重
確保每個基因在後續分析中貢獻相同權重,防止特徵被掩蓋。
-
2
標準化數值範圍
將所有基因的表達量轉換到同一量綱(通常是以 0 為中心)。
-
3
消除技術噪聲 (可選)
透過「迴歸分析」,剔除線粒體含量、細胞週期等協變量影響。
互動模擬:為什麼我們需要 Scaling?
本區塊展示了 Scaling 對於方差的影響。請想像有兩個基因:基因 A (高表達,變異極大) 與 基因 B (低表達,變異極小)。點擊按鈕觀察 Scaling 前後的數據分佈變化。
目前視角:未縮放。 注意 X 軸(基因 A)的變異範圍 (0~1000) 遠大於 Y 軸(基因 B)的範圍 (0~20)。若此時進行 PCA,主成分將幾乎完全由基因 A 決定。
概念辨析:Scaling vs. Normalization
初學者經常混淆歸一化與數據縮放。透過下方互動卡片,清楚掌握兩者在分析流程中的本質差異。
歸一化 (Normalization)
- 主要目標 消除細胞間的測序深度差異。
- 處理對象 以「細胞」為單位進行調整。
- 常用方法 Log-normalization (CPM, TP10K)。
- 執行順序 先進行。
縮放 (Scaling)
- 主要目標 消除基因間的變異範圍差異。
- 處理對象 以「基因」為單位進行調整。
- 常用方法 Z-score 轉換。
- 執行順序 後進行。
數學原理:Z-score
最常用的 Scaling 方法是標準化。對於每一個基因 g,我們對其在所有細胞中的表達量進行以下計算:
💡 轉換後的結果:
- 每個基因的平均表達量變為 0。
- 每個基因的方差(Variance)變為 1。
在 Seurat 中的實作
在 R 語言最常用的工具包 `Seurat` 中,這一步驟透過 ScaleData() 函數完成。請點擊切換不同情境的語法。
# 僅對高變異基因 (Highly Variable Genes) 進行縮放, # 以提高計算效率並減少噪聲干擾 pbmc <- ScaleData( object = pbmc, features = VariableFeatures(object = pbmc) )
注意事項與最佳實踐
僅對 HVGs 縮放?
通常建議只對「高變異基因」(HVGs) 進行縮放。這不僅能節省大量的運算時間和內存,還能過濾掉大部分僅含噪聲的低表達基因,使後續 PCA 的結果更具代表性。
數值截斷 (Clipping)
為了防止極端的離群值(Outliers)對縮放結果產生過大影響,ScaleData 默認會將縮放後的 Z-score 限制在一個範圍內(例如 [-10, 10])。這保護了數據分佈的穩定性。
對下游分析的影響
不可跳過此步驟!如果跳過 Scaling,PCA 的前幾個主成分通常只會反映出 UMI 總數或極少數高表達基因的變動,導致聚類結果失去真實的生物學解釋力。
總結:公平的起跑線
Scaling 是 scRNA-seq 分析中不可或缺的「公平化」步驟。它讓不同表達量級的基因站在同一條起跑線上,確保我們捕捉到的差異是基於基因表達模式的相對變化,而非單純的數量級優勢。