Learning Objectives
- 寫出一個比較問題的虛無假設與對立假設,並正確說明 p 值是什麼、不是什麼
- 用 scipy.stats 做獨立樣本 t 檢定(含 Welch)與成對 t 檢定,並說出各自適用的情況
- 區分型一錯誤與型二錯誤,說出樣本數與效果量如何影響檢定力
- 同時報告效果量與信賴區間,並說明多重比較為什麼會增加「假的顯著」
差 3.7 分,是真的不同還是運氣?
teaching_trial.csv 記錄一個模擬的教學實驗:180 位學生隨機分到 A、B、C 三種教學方式,各 60 人,上課前後各考一次。
進步分數(後測 − 前測)的平均:A 組約 5.0 分、B 組約 8.7 分。
B 組多進步了約 3.7 分。但就算兩種方法完全一樣好,兩組隨機分出來的學生也不會剛好相同,平均難免有差。 假設檢定回答的是:如果兩種方法其實沒有差別,看到 3.7 分這麼大的差距,會不會很常見?
這份資料是程式產生的模擬資料,不是任何學校的真實實驗;裡面的差別是產生資料時設定的。
假設檢定的步驟與 p 值
- 虛無假設(H₀):沒有差別,例如「A、B 兩種方法的母體平均進步分數相同」。
- 對立假設(H₁):有差別,例如「兩者不同」(雙尾)。
- 事先定好顯著水準 α,常用 0.05。
- 從資料算出檢定統計量(這裡是 t 值)與 p 值。
- p < α 就拒絕 H₀,說「差異達統計上顯著」;否則不拒絕 H₀。
p 值的意思:假設虛無假設為真時,得到這麼極端(或更極端)結果的機率。
| p 值不是 | 為什麼 |
|---|---|
| 虛無假設為真的機率 | p 值是在「假設 H₀ 為真」之下算出來的,不能反過來說 H₀ 有多可能 |
| 結果是巧合的機率 | 同上,它是「若只有巧合,看到這種資料的機率」 |
| 效果有多大或多重要 | 樣本很大時,很小的差異也會 p 很小 |
美國統計學會(ASA)在 2016 年發表關於 p 值的聲明(Wasserstein & Lazar, 2016),列出的原則包括:p 值不是假設為真的機率, 也不衡量效果的大小或重要性;不應只依「是否小於某個門檻」下結論;並且要完整報告做過哪些分析。
逐步看:A、B 兩組的獨立樣本 t 檢定
先看三組的進步分數摘要,再比較 B 組與 A 組。除了 t 與 p,也算出平均差的信賴區間與效果量。
顯著不等於重要:效果量與信賴區間
p 值同時受「差距多大」與「樣本多大」影響。只報「p < 0.05」會漏掉最重要的資訊:差了多少?估得多準? 所以結果要一起報:
- 平均差與它的信賴區間:例如「B 組平均多進步 3.7 分(95% CI 0.7~6.7)」,讀者能自己判斷這個差距在實務上有沒有意義。
- 效果量:Cohen's d 把差距換成標準差的倍數,方便比較不同量尺的研究。Cohen(1988)提出 0.2、0.5、0.8 作為小、中、大的參考, 但他也提醒這只是沒有更好依據時的慣例;判斷要回到你的領域與實際情況。
另外兩件常見的誤解:
- 沒有顯著 ≠ 沒有差異:可能只是樣本太小、檢定力不足。這時信賴區間通常很寬,同時包含「沒差」與「差很多」。
- 顯著 ≠ 重要:幾萬人的資料裡,0.3 分的差距也可能顯著,但可能沒有實際意義。
同一群人前後比較:成對 t 檢定
A 組同一批學生考了前測與後測。這兩欄不是兩群獨立的人,而是同一個人量兩次,應該用成對 t 檢定(stats.ttest_rel):
它先算出每個人的「後測 − 前測」,再檢定這些差值的平均是否為 0。同一個人的前後測通常高度相關,成對的設計把「每個人程度不同」這部分變異扣掉了,
所以比獨立樣本檢定更敏銳。
注意:A 組前後測有進步,不代表 A 方法有效。沒有對照組時,進步可能來自練習效果、題目難度不同或時間本身; 這也是為什麼要隨機分組、比較不同方法的進步分數。
逐步看:成對 t 檢定與誤用獨立樣本 t 檢定
兩種錯誤與檢定力
檢定的結論可能出兩種錯:
| H₀ 其實為真(沒有效果) | H₀ 其實不真(有效果) | |
|---|---|---|
| 拒絕 H₀(說有顯著差異) | 型一錯誤(假陽性),機率=α | 正確;機率稱為檢定力 |
| 不拒絕 H₀ | 正確 | 型二錯誤(假陰性),機率=β=1 − 檢定力 |
- α 是你事先接受的型一錯誤率。虛無假設成立時,p 值在 0~1 之間均勻分布,所以 p < 0.05 剛好約 5% 的機會發生。
- 檢定力取決於效果量、樣本數與 α:效果越大、人數越多,越容易偵測到。研究前可以先估算需要多少人。
- 多重比較:每個檢定都有 5% 的假陽性機會,同時做 20 個沒有效果的檢定,至少一個「顯著」的機率是 1 − 0.95²⁰,約 64%。 Bonferroni 校正把每個檢定的門檻改成 α ÷ 檢定數(例如 0.05 ÷ 20=0.0025),讓整體的假陽性率回到約 α,代價是檢定力降低。
逐步看:沒有效果時的 1000 個 p 值
兩組都從同一個母體抽,所以虛無假設一定成立。一次做 1000 個 t 檢定,看 p 值的分布。
實作:B 組與 C 組的進步分數
讀入 teaching_trial.csv,算出進步分數(post − pre),用 Welch t 檢定(equal_var=False)比較 B 組與 C 組。
依序印出三行:平均差(B − C,小數 2 位)、t 值(小數 3 位)、p 值(小數 3 位):
平均差: ...
t: ...
p: ...
做完想一想:p 值很大,能不能說「B、C 兩種方法一樣有效」?
小測驗:p 值與兩種錯誤
比較兩組得到 p=0.03。下面哪一個說法正確?
兩種教學法其實一樣有效,研究卻得到 p < 0.05 並宣稱有差異。這是什麼錯誤?
一個 20 人的小研究得到 p=0.40。最恰當的結論是?
stats.ttest_ind(a, b) 沒有指定其他參數時,做的是哪一種檢定?
同時做 20 個檢定,而每一個其實都沒有效果(α=0.05)。下面哪一個說法正確?
下面程式會印出什麼?
from scipy import stats
res = stats.ttest_ind([1, 2, 3], [4, 5, 6])
print(round(res.statistic, 3))
重點整理
- 假設檢定:先假設沒有差別(H₀),看資料在這個假設下有多不尋常。
- p 值是「假設虛無假設為真時,得到這麼極端或更極端結果的機率」;不是虛無假設為真的機率,也不是效果的大小。
- 兩群不同的人用
ttest_ind(預設equal_var=True;equal_var=False是 Welch);同一個人量兩次用ttest_rel。 - 結果要同時報平均差與信賴區間、效果量(如 Cohen's d),不要只報 p 值。
- 型一錯誤機率=α;檢定力=有效果時偵測到的機率,隨效果量與樣本數增加。
- 沒有顯著不等於沒有差異;顯著不等於重要。
- 同時做很多檢定時,假陽性會累積;Bonferroni 校正把門檻除以檢定數。
- 下一課比較三組以上:為什麼不要兩兩做 t 檢定?用 ANOVA 與事後比較,以及不假設常態的無母數檢定。
參考資料:Wasserstein, R. L., & Lazar, N. A. (2016). The ASA statement on p-values: Context, process, and purpose. The American Statistician, 70(2), 129–133; Cohen, J. (1988). Statistical power analysis for the behavioral sciences (2nd ed.). Lawrence Erlbaum。