1925 - Fisher 統計方法#
案件摘要#
1925 年,R. A. Fisher 出版《Statistical Methods for Research Workers》,將顯著性檢定、p 值、ANOVA 與實驗設計打包成「研究者工具箱」。這本書被尊為「統計學聖經」,也讓 \(p < 0.05\) 成為百年來最受愛戴與爭議的慣例。
前因 -- 為什麼會有這個案子#
Fisher 自 1919 年起任職於英國的 Rothamsted 農業實驗站(The Laboratory for Agricultural Experimentation,1843 年創立),面對的是現實的難題:
- 農業實驗的田地變異極大:土壤肥力、日照、排水在不同位置都不一樣。
- 實驗成本高,樣本數有限,且天氣不可重複。
- 當時的研究者(生物、農業、醫學)大多不懂數學,需要一本不推公式、直接給方法的實用手冊。
懸案:如何在充滿雜訊、無法完美控制的實驗中,做出可靠的因果結論?
線索與推理 -- 數學式、程式、理論#
線索一:Rothamsted 的實驗困境#
Rothamsted 有長達 70 年的長期田間實驗數據(如 Broadbalk wheat experiment),但田地異質性使得「處理 A 比處理 B 好」的結論常常不可信。Fisher 的破案關鍵是用隨機化把不可控變異轉化為可估計的誤差。
線索二:顯著性檢定與 p 值#
Fisher 在書中正式推廣顯著性檢定流程:
- 設定 H0(如「處理無效應」)。
- 選擇檢定統計量 \(T\) 。
- 在 H0 下計算p 值:
- 若 \(p\) 足夠小,則 H0「顯著不成立」,拒絕 H0。
書中列出 \(t\) 、 \(\chi^2\) 、 \(F\) 分佈的表格,使研究者能直接查表完成檢定——這是統計方法平民化的關鍵一步。
線索三: \(p < 0.05\) 慣例的誕生#
Fisher 在書中寫道(大意):
"…we shall not often be astray if we draw a conventional line at 0.05."
這句話是 \(p < 0.05\) 慣例的直接來源。Fisher 原意是「常用門檻」而非「神聖界線」,但後世將其制度化為學術出版的硬門檻,造成:
- 正面爭議:0.05 是方便的共識語言,易於比較。
- 負面爭議:p-hacking、發表偏誤(publication bias)、可重複性危機(reproducibility crisis)。
- 2016 年 ASA 發表聲明:p 值不應作為唯一的科學結論依據。
線索四:變異數分析(ANOVA)#
ANOVA 將總變異分解為「處理效應」與「隨機誤差」:
檢定統計量為 F 統計量:
其中 \(k\) 為組數、 \(N\) 為總樣本數。這是 Gosset t 檢定的推廣:兩組時 \(F = t^2\) 。
線索五:實驗設計三原則#
Fisher 總結實驗設計的三大支柱:
- 隨機化(randomization):處理隨機分配到實驗單位,使未知干擾因素在期望上抵消。
- 對照(control / replication):設對照組,並重複觀察以估計誤差。
- 區集(blocking):將同質的實驗單位分組,使組內比較更精確(如同一塊田切成幾個小區)。
經典範例:隨機區集設計(Randomized Block Design)與拉丁方格(Latin Square),至今仍是農業與醫學實驗的標準設計。
Python 實作:ANOVA#
import numpy as np
from scipy import stats
import pandas as pd
rng = np.random.default_rng(3)
# 三種肥料的作物產量(隨機區集概念下的單因子 ANOVA)
groups = [rng.normal(50, 5, 20), rng.normal(53, 5, 20), rng.normal(56, 5, 20)]
k, N = len(groups), sum(len(g) for g in groups)
grand = np.concatenate(groups).mean()
ss_between = sum(len(g) * (g.mean() - grand)**2 for g in groups)
ss_within = sum(((g - g.mean())**2).sum() for g in groups)
F = (ss_between / (k-1)) / (ss_within / (N-k))
p = 1 - stats.f.cdf(F, k-1, N-k)
print(f"手算 F = {F:.3f}, p = {p:.4f}")
# scipy 內建
F_s, p_s = stats.f_oneway(*groups)
print(f"scipy F = {F_s:.3f}, p = {p_s:.4f}")
print("顯著" if p_s < 0.05 else "不顯著", "(p < 0.05 慣例)")
# 實驗設計示範:隨機化分配處理
units = np.arange(30)
rng.shuffle(units)
assign = np.array(['A', 'B', 'C'] * 10)
print("隨機化分配:", dict(zip(*[list(units[:9]), list(assign[:9])])))
# 視覺化
df = pd.DataFrame({'yield': np.concatenate(groups),
'fertilizer': np.repeat(['A','B','C'], 20)})
df.boxplot(column='yield', by='fertilizer')
plt.title("One-way ANOVA"); plt.savefig("anova.png", dpi=100)
結案 -- 後果與影響#
- 《Statistical Methods for Research Workers》共出 14 版(1925–1970),譯成多國語言,被譽為 20 世紀最有影響力的統計學書籍,地位等同「統計學聖經」。
- 顯著性檢定 + ANOVA + 實驗設計三件套,成為農業、醫學、心理學、經濟學的標準研究流程。
- 1935 年 Fisher 出版《The Design of Experiments》,進一步發展實驗設計理論(含著名的「女士品茶」實驗)。
- Neyman–Pearson 的「假設檢定理論」(1933)與 Fisher 的顯著性檢定在概念上競爭,但後世教材將兩者混合成今日通行的「NHST」。
- \(p < 0.05\) 慣例造成的可重複性危機,促成 2010 年代後的預註冊(preregistration)、效應量報告與 ASA 聲明(2016)。
- Fisher 的 ANOVA 是日後廣義線性模型、混合效應模型的理論源頭。
關鍵人物與文獻#
- R. A. Fisher (1890–1962):顯著性檢定、ANOVA、實驗設計、p 值慣例的奠基者。
- Jerzy Neyman & Egon Pearson (1933):對立假設與檢定力理論,與 Fisher 長期論戰。
- Rothamsted 農業實驗站:Fisher 1919–1933 年任職處,實驗設計的搖籃。
- Fisher, R. A. (1925). Statistical Methods for Research Workers. Oliver & Boyd.
- Fisher, R. A. (1935). The Design of Experiments. Oliver & Boyd.
- ASA (2016). Statement on Statistical Significance and P-Values. The American Statistician 70.
- Salsburg, D. (2001). The Lady Tasting Tea. (統計史通俗讀物)