2002 Schon 造假#
案發現場#
2000 至 2002 年,貝爾實驗室的德國物理學家揚·亨德里克·舍恩(Jan Hendrik Schön)以近乎瘋狂的速度發表論文:十六篇以上登上《Nature》與《Science》頂刊,主題橫掃半導體物理最熱門的前沿——有機超導體、分子電晶體、單分子層電子元件、「突破矽極限」的新型電晶體。
每一篇都是「劃時代的突破」。有機超導一度被認為可望奪諾貝爾獎;工業界開始規劃分子電子學的投資路線;Schön 被媒體譽為愛因斯坦之後最耀眼的年輕物理學家,諾貝爾獎熱門人選。
他的數據有個令人不安的特徵:太乾淨了。真實的實驗數據總是雜訊斑斑、元件與元件之間參數各異;Schön 的曲線卻光滑、優美、幾乎理論預測般完美。有些同行私下嘀咕「這好得不像真的」,但沒有人有證據——頂刊、貝爾實驗室、共同作者的權威,構成了假象的保護殼。
偵查過程#
2002 年春天,普林斯頓大學的莉迪亞·索恩(Lydia Sohn)與康乃爾大學的保羅·麥尤恩(Paul McEuen)各自獨立注意到同一件怪事:
Schön 的兩篇論文——不同元件、不同實驗、發表在不同期刊——的「噪聲」曲線一模一樣。
噪聲本質上是隨機的:兩次獨立測量的噪聲不可能逐點相同,就像兩次擲骰子不可能擲出同一串數字。但 Schön 把同一組隨機數據複製貼進了不同實驗——連「噪聲」都懶得換。
Sohn 與 McEuen 進行統計比對:把兩篇論文的曲線數位化,計算逐點差值與相關係數——結果發現不同論文的「獨立實驗數據」完全重合。他們將結果寄給《Nature》與貝爾實驗室。
McEuen 留下的名言:「我唯一要做的實驗,就是打開兩個 PDF 檔案,把它們疊在一起。」
貝爾實驗室隨即組成調查委員會(由史丹佛大學的 Malcolm Beasley 領銜),歷時四個月,比對了 25 篇論文:確認至少 16 篇存在資料捏造——數據重用、曲線複製、宣稱做過的實驗根本沒做。共同作者(包括多位知名物理學家)經查無涉造假,但暴露了「共同作者不看原始數據」的學術文化漏洞。Schön 被貝爾實驗室解僱,康斯坦茨大學撤銷其博士學位;貝爾實驗室母公司朗訊同時削減了基礎物理研究部門。
結案報告#
Schön 事件是科學史上由純數學(統計比對)拆穿的造假案,深遠教訓包括:
- 完美是最大的破綻——真實實驗永遠有噪聲、有元件間差異;「太乾淨」的數據本身就是異常信號。這與 N 射線(1903-N射線.md)恰好相反:那裡是肉眼把噪聲讀成訊號,這裡是連噪聲都偽造得不像噪聲。
- 頂刊崇拜是假象的保護殼——《Nature》《Science》的聲譽、貝爾實驗室的金字招牌,讓同行「不好意思」公開質疑。權威讓檢驗延遲了兩年。
- 糾錯門檻可以低到只是「比對檔案」——一旦統計工具成熟、論文全面電子化,跨論文的數據比對變得唾手可得。數位化時代,重複使用同一組隨機數,幾乎必然被算出來。
- 制度隨之進化——事件直接催生了頂刊的原始數據存檔要求、預註冊與開放數據的潮流。造假行為提高了整個迴路的檢驗標準。
類似的圖像比對糾錯,三年後再次上演於黃禹錫幹細胞事件(2005-黃禹錫事件.md)——同一套「比對重複特徵」的偵查模式,成為二十一世紀科學打假的標配。
糾錯分析#
誰拆穿:普林斯頓的 Lydia Sohn 與康乃爾的 Paul McEuen(外來者、獨立持異見者),隨後由貝爾實驗室調查委員會確認。 用什麼工具:統計比對——曲線數位化、逐點差值、相關係數;即「數學⇒實驗」的糾錯通道。 如何拆穿:計算不同論文、不同元件之間「實驗數據」的相關係數,發現相關係數等於 1(完全重合)——獨立測量的噪聲不可能相關到這種程度,證明數據是複製的。這正是用數學檢驗實驗的經典:迴路中的理論與數學工具,反過來拆穿了迴路中造假的實驗。
連回金觀濤的迴路論:Schön 事件展示的是迴路自我糾錯的數學形態——N 射線靠對照實驗(方法論)、皮爾當靠化學與顯微技術,而 Schön 靠的是統計與數據比對。每一次,糾錯的工具都是迴路自身發展出來的;科學的自我糾錯不是道德自律,而是結構必然——只要檢驗工具持續進步,造假與假象的壽命就會越來越短。
證據與工具#
# 用相關係數發現「兩組數據其實是同一組」
# 原理:獨立實驗的噪聲互不相關(相關係數 ≈ 0);
# 造假的「複製數據」相關係數 = 1(完全重合)
import random
random.seed(2002) # 呼應拆穿之年
def corr(x, y):
"""皮爾森相關係數"""
n = len(x)
mx, my = sum(x)/n, sum(y)/n
cov = sum((a-mx)*(b-my) for a, b in zip(x, y))
sx = sum((a-mx)**2 for a in x) ** 0.5
sy = sum((b-my)**2 for b in y) ** 0.5
return cov / (sx * sy)
# 場景 A:誠實的實驗——兩個「不同元件」各自測量,噪聲互相獨立
n = 100
voltage = [i/n for i in range(n)] # 共同的電壓軸
trend = [3.5*v for v in voltage] # 理論趨勢
noise1 = [random.gauss(0, 0.1) for _ in range(n)] # 元件 1 的真實噪聲
noise2 = [random.gauss(0, 0.1) for _ in range(n)] # 元件 2 的真實噪聲
data1 = [t + e1 for t, e1 in zip(trend, noise1)]
data2 = [t + e2 for t, e2 in zip(trend, noise2)]
print("--- 誠實實驗:兩個元件獨立測量 ---")
print(f"數據相關係數 = {corr(data1, data2):.4f}")
print("(趨勢相同所以高相關,但殘差應互不相關)")
residuals1 = [d - t for d, t in zip(data1, trend)]
residuals2 = [d - t for d, t in zip(data2, trend)]
print(f"殘差相關係數 = {corr(residuals1, residuals2):.4f} <- 接近 0 = 噪聲獨立\n")
# 場景 B:Schön 式造假——把同一組「噪聲」複製貼進不同論文
fake_noise = [random.gauss(0, 0.1) for _ in range(n)] # 只產生一次
fake1 = [t + e for t, e in zip(trend, fake_noise)]
fake2 = [t + e for t, e in zip(trend, fake_noise)] # 直接複製!
print("--- 造假實驗:同一組數據複製貼上 ---")
print(f"數據相關係數 = {corr(fake1, fake2):.4f}")
fake_res1 = [d - t for d, t in zip(fake1, trend)]
fake_res2 = [d - t for d, t in zip(fake2, trend)]
print(f"殘差相關係數 = {corr(fake_res1, fake_res2):.4f} <- = 1 = 噪聲也是複製的\n")
# 蒙地卡羅:獨立噪聲的殘差相關係數分布,估「誤報率」
trials = 10000
hits = 0
for _ in range(trials):
r1 = [random.gauss(0, 0.1) for _ in range(n)]
r2 = [random.gauss(0, 0.1) for _ in range(n)]
if abs(corr(r1, r2)) > 0.9: # 相關 > 0.9 即高度可疑
hits += 1
print(f"蒙地卡羅 {trials} 次:獨立噪聲出現 |r| > 0.9 的機率 ≈ {hits/trials:.5%}")
print("結論:獨立實驗幾乎不可能出現完美重合;")
print("So 與 McEuen 做的,就是把兩個 PDF 疊在一起——統計比對拆穿了 16 篇造假。")