何時使用幾何標準差
幾何標準差 (GSD) 適用於乘法性質的資料——如成長率、比率、濃度,或任何對數常態分配的測量值。
以股票報酬為例:先漲 10% 再跌 10% 並不會回到原點(你會剩下原來的 99%)。這種乘法性質的關係需要使用幾何統計量,而非算術統計量。
核心洞察
如果你的資料跨越好幾個數量級、永遠為正值、在一般圖表上呈右偏但在對數尺度上對稱——你就是在處理需要幾何統計的對數常態資料。
認識對數常態資料
當資料取自然對數後遵循常態分配,就稱為對數常態分配。常見的例子包括:
- 股價和長期投資報酬率
- 收入和財富分配
- 氣溶膠和藥品中的粒徑分佈
- 細菌菌落計數和病毒量
- 環境污染物濃度
- 抗體效價和藥物濃度
關鍵特徵:涉及反覆相乘的過程會產生對數常態分配,就像反覆相加會產生常態分配一樣。
公式與計算
幾何標準差
GSD = exp(√[Σ(ln xᵢ - ln x̄ₘ)² / (n-1)])
更簡單的說法:對所有值取自然對數,計算一般的標準差,然後取指數。
1
資料轉換
計算每個值的自然對數:yᵢ = ln(xᵢ)
2
計算平均數
計算對數值的算術平均數:ȳ = Σyᵢ/n
3
計算標準差
計算對數值的標準差:s = √[Σ(yᵢ-ȳ)²/(n-1)]
4
反轉換
取指數得到 GSD:GSD = eˢ
Python
import numpy as np
from scipy import stats
def geometric_sd(data):
"""Calculate geometric standard deviation"""
log_data = np.log(data)
sd_log = np.std(log_data, ddof=1)
return np.exp(sd_log)
def geometric_mean(data):
"""Calculate geometric mean"""
return stats.gmean(data)
# Example: Antibody titers (highly variable, log-normal)
titers = [64, 128, 256, 128, 512, 64, 256]
gm = geometric_mean(titers)
gsd = geometric_sd(titers)
print(f"Geometric Mean: {gm:.1f}")
print(f"Geometric SD: {gsd:.2f}")解讀 GSD 數值
與算術標準差以原始資料的單位表示不同,GSD 是一個乘法因子——一個比率。GSD 為 2.0 表示資料通常以 2 倍的因子變動。
- GSD = 1.0:沒有變異(實務上不可能)
- GSD ≈ 1.2:低變異性(典型 ±20%)
- GSD ≈ 2.0:中等變異性(資料加倍/減半)
- GSD ≈ 3.0:高變異性(跨越一個數量級)
信賴區間
對數常態資料的 95% 範圍大約是:幾何平均數 ÷ GSD² 到 幾何平均數 × GSD²。若 GM=100 且 GSD=2,範圍就是 25 到 400。
實際應用
藥學科學
粒徑分佈(D50、GSD) · 藥物濃度變異性 · 生體可用率研究 · 氣溶膠特性分析
金融與經濟
投資報酬波動性 · 成長率分析 · 所得分配研究 · 資產價格建模
GSD vs 一般標準差
對對數常態資料使用算術標準差會產生誤導性的結果:
範例:病毒量資料
數值:1,000; 5,000; 10,000; 50,000; 100,000 copies/mL
算術平均數 ± 標準差: 33,200 ± 41,424
幾何平均數 × GSD: 10,000 × 4.5 → 範圍:2,222 到 45,000
算術標準差的結果暗示可能出現負值——但病毒量不可能是負的!
務必檢查分配
計算任何離散程度量度之前,先將資料視覺化。如果呈右偏且有長尾,試試取對數轉換。如果轉換後變得對稱,就使用幾何統計量。