數據縮放 (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

初學者經常混淆歸一化與數據縮放。透過下方互動卡片,清楚掌握兩者在分析流程中的本質差異。

N

歸一化 (Normalization)

  • 主要目標 消除細胞間的測序深度差異。
  • 處理對象「細胞」為單位進行調整。
  • 常用方法 Log-normalization (CPM, TP10K)。
  • 執行順序 先進行
S

縮放 (Scaling)

  • 主要目標 消除基因間的變異範圍差異。
  • 處理對象「基因」為單位進行調整。
  • 常用方法 Z-score 轉換。
  • 執行順序 後進行

數學原理:Z-score

最常用的 Scaling 方法是標準化。對於每一個基因 g,我們對其在所有細胞中的表達量進行以下計算:

z = (x - μ) / σ
x 該基因在某個細胞中的原始(或已歸一化)表達量。
μ 該基因在所有細胞中的表達 平均值
σ 該基因在所有細胞中的表達 標準差

💡 轉換後的結果:

  • 每個基因的平均表達量變為 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 分析中不可或缺的「公平化」步驟。它讓不同表達量級的基因站在同一條起跑線上,確保我們捕捉到的差異是基於基因表達模式的相對變化,而非單純的數量級優勢。