6.4 信賴區間怎麼讀#
本節目標#
- 徹底釐清最常見的誤讀:「95% 是這個區間的機率」是錯的
- 建立正確的敘述:「95% 是這個方法的長期覆蓋率」
- 用區間圖(100 條橫線疊在真值線上)把這件事一次說清
- 列出實務上最常見的十個信賴區間誤讀,並給出正確說法
- 理解「信賴區間」與「機率陳述」的差異,以及 Bayesian 可信區間為什麼長得像
問題:「這個區間有 95% 的機率包含真值」——這句話錯在哪?#
我們幾乎每個做統計的人都聽過(或說過)這句話:
「我們算出的 95% 信賴區間是 \([47.6, 57.9]\) ,所以真值 \(\mu\) 有 95% 的機率落在這個區間裡。」
這句話是錯的。 而且它錯得很微妙,因為聽起來非常合理。
為什麼它錯?#
回到 6.2 節的推導。在我們還沒抽樣之前,母體是固定的、 \(\mu\) 是一個未知的常數。而區間的端點
\(\bar{X} \pm t_{\alpha/2,n-1}\frac{S}{\sqrt{n}}\)
是隨機的(因為 \(\bar{X}\) 和 \(S\) 是隨機的)。所以:
- 在抽樣之前, \(\mu\) 是一個固定的數字。「 \(\mu\) 落在某個隨機區間裡的機率」這種說法本身就不成立——除非我們給 \(\mu\) 一個主觀的先驗分布(那就是 6.4 節最後講的 Bayesian 做法)。
- 在抽樣之後, \(\bar{X}\) 和 \(S\) 已經變成了已知的數字,區間 \([47.6, 57.9]\) 變成了一個固定的區間。此時真值 \(\mu\) 要嘛在裡面、要嘛不在——沒有機率可言。
正確的敘述(Neyman, 1934)#
方法 \(M\) 是「信心水準 95% 的」,意思是:如果反覆使用 \(M\) 抽樣並每次做出一個區間,那麼長期下來,這些區間中有 95% 會包含真值。
主詞是「方法」,不是「這個區間」。 這是本章的全部重點。
用一個類比:
就像擲硬幣。說「這枚硬幣正面朝上的機率是 50%」是對的(因為它還沒擲)。但一旦擲完了、平放在桌上,你說「這枚硬幣正面朝上的機率是 50%」就不對了——它要嘛朝上要嘛朝下,是 0 或 1。信賴區間正是「已擲完的硬幣」。
動手(一):100 個區間畫成一張圖#
與其講道理,不如直接看。
我們做 100 次獨立重複抽樣,每次抽 \(n=30\) 個,算一個 95% \(t\) 區間,然後把 100 個區間全部畫出來。
import math
import rstatistics as r
mu, sigma, n = 50.0, 12.0, 30
B = 100
g = r.set_seed(2026)
print("=== 100 個 95% 信賴區間,看有多少個蓋住真值 μ = 50 ===")
intervals = []
cover = 0
for _ in range(B):
s = g.rnorm(n, mean=mu, sd=sigma)
m = r.mean(s)
se = r.sd(s) / math.sqrt(n)
tc = r.qt(0.975, n - 1)
lo, hi = m - tc * se, m + tc * se
intervals.append((lo, hi))
if lo <= mu <= hi:
cover += 1
print(f"蓋住真值的區間數 = {cover} / {B}(理論約 95)")
print("沒蓋住的區間:")
for i, (lo, hi) in enumerate(intervals):
if not (lo <= mu <= hi):
print(f" 第 {i+1:>3} 個:[{lo:.4f}, {hi:.4f}]")
print()
print("前 10 個區間:")
for i, (lo, hi) in enumerate(intervals[:10]):
print(f" {i+1:>3}: [{lo:.4f}, {hi:.4f}] 寬度 = {hi-lo:.4f}")
widths = [hi - lo for lo, hi in intervals]
print(f"平均寬度 = {r.mean(widths):.4f},最小 = {min(widths):.4f},最大 = {max(widths):.4f}")
輸出(實際執行):
=== 100 個 95% 信賴區間,看有多少個蓋住真值 μ = 50 ===
蓋住真值的區間數 = 92 / 100(理論約 95)
沒蓋住的區間:
第 23 個:[41.0921, 49.3673]
第 40 個:[50.3265, 59.6702]
第 65 個:[43.5183, 49.6617]
第 69 個:[41.7246, 49.5023]
第 79 個:[50.4477, 59.5776]
第 85 個:[51.9980, 59.5510]
第 90 個:[40.6143, 49.6802]
第 97 個:[40.4932, 49.8720]
前 10 個區間:
1: [44.2216, 54.0401] 寬度 = 9.8185
2: [44.7467, 51.7041] 寬度 = 6.9574
3: [45.5316, 55.2888] 寬度 = 9.7572
4: [42.3115, 52.1962] 寬度 = 9.8848
5: [49.0859, 58.0864] 寬度 = 9.0005
6: [46.9244, 53.7976] 寬度 = 6.8733
7: [47.4494, 56.4271] 寬度 = 8.9777
8: [46.6175, 55.9441] 寬度 = 9.3266
9: [48.2249, 55.0251] 寬度 = 6.8002
10: [47.6118, 54.7618] 寬度 = 7.1500
平均寬度 = 8.7382,最小 = 5.2709,最大 = 11.9656
92/100 蓋住了真值。 剩下 8 個沒蓋住——注意它們不是隨機散落在任何地方,而是全都落在同一側:
- 第 23、65、69、90、97 個的上限都小於 50(真值在區間的右邊)——這些是「低估」;
- 第 40、79、85 個的下限都大於 50(真值在區間的左邊)——這些是「高估」。
這正是 6.2 節的直方圖在空間上的對應:抽樣分布是單峰的,所以失敗的區間會聚在兩端,而不會均勻散布。
畫成區間圖#
print()
print("=== 畫區間圖:100 條橫線疊在真值線上 ===")
g3 = r.set_seed(2026)
ivs = []
for _ in range(B):
s = g3.rnorm(n, mean=mu, sd=sigma)
m = r.mean(s)
se = r.sd(s) / math.sqrt(n)
tc = r.qt(0.975, n - 1)
ivs.append((m - tc * se, m + tc * se))
gr = r.Graphics(width=8.0, height=9.0)
gr.plot([35, 65], [0, 0], type="n", xlab="區間端點", ylab="模擬次數", xlim=[35, 65], ylim=[0, B + 2])
x0, y0, x1, y1 = [], [], [], []
rx0, ry0, rx1, ry1 = [], [], [], []
for i, (lo, hi) in enumerate(ivs):
y = i + 1
if lo <= mu <= hi:
x0.append(lo); y0.append(y); x1.append(hi); y1.append(y)
else:
rx0.append(lo); ry0.append(y); rx1.append(hi); ry1.append(y)
gr.segments(x0, y0, x1, y1, col="black", lwd=1)
if rx0:
gr.segments(rx0, ry0, rx1, ry1, col="red", lwd=2)
gr.segments([mu], [0], [mu], [B + 2], col="blue", lwd=2)
gr.text(50, B + 6, f"沒蓋住真值的 {B - cover} 個用紅色標出", adj=0.5)
gr.title(main="100 個 95% 信賴區間(真值 μ = 50,藍線)")
gr.save("img/06.4-ci-coverage.svg")
print("已存 06.4-ci-coverage.svg")
輸出(實際執行):
=== 畫區間圖:100 條橫線疊在真值線上 ===
已存 06.4-ci-coverage.svg
圖形存成 img/06.4-ci-coverage.svg:
怎麼看這張圖:
- 藍線是真值 \(\mu = 50\) 的位置。
- 黑線是 92 個蓋住了真值的區間。
- 紅線是 8 個沒蓋住的區間——可以看到它們全部偏在一側。
這張圖把「95% 是方法的性質」變成了可以一眼看見的東西:如果你把同一套方法再跑一次(再做 100 個區間),紅線的位置會換人,但紅線的「總數」大約維持在 5 個左右。 這正是「95%」的意思——它描述的是長期平均的比例,不是某一次結果。
換信心水準看覆蓋率#
print()
print("=== 換不同 confidence level 看覆蓋率(每次 200 個區間)===")
for cl in (0.80, 0.90, 0.95, 0.99):
g2 = r.set_seed(555)
cov = 0
R = 200
for _ in range(R):
s = g2.rnorm(n, mean=mu, sd=sigma)
m = r.mean(s)
se = r.sd(s) / math.sqrt(n)
tc = r.qt(1 - (1 - cl) / 2, n - 1)
if m - tc * se <= mu <= m + tc * se:
cov += 1
print(f" confidence = {cl:.2f}: 覆蓋 {cov}/{R} = {cov/R:.3f}")
輸出(實際執行):
=== 換不同 confidence level 看覆蓋率(每次 200 個區間)===
confidence = 0.80: 覆蓋 153/200 = 0.765
confidence = 0.90: 覆蓋 174/200 = 0.870
confidence = 0.95: 覆蓋 185/200 = 0.925
confidence = 0.99: 覆蓋 195/200 = 0.975
覆蓋率隨信心水準單調上升:0.765 → 0.870 → 0.925 → 0.975,大致對應 0.80 / 0.90 / 0.95 / 0.99。注意它不是剛好等於名稱上的數字,因為覆蓋率本身是隨機的(200 次重複抽樣的標準誤約 \(\sqrt{0.95 \times 0.05/200} \approx 0.015\) )。
常見誤讀清單#
以下十條是實務上最常見的錯誤理解。每條都給出錯誤說法與正確說法。
誤讀 1:「這個區間有 95% 的機率包含真值」#
- 錯:區間是抽完樣本後算出的固定數字,真值在裡面就是 100%,不在就是 0%。
- 對:「這個方法在長期重複使用下,95% 的區間會包含真值。」
- 進階:如果你真的想要「真值落在這個區間的機率」這種敘述,必須給 \(\mu\) 一個主觀先驗分布(Bayesian 做法),算出「可信區間(credible interval)」。那時的區間確實可以解讀成機率陳述。
誤讀 2:「95% 的資料落在這個區間裡」#
- 錯:信賴區間是關於母體參數的,不是關於個體資料的。
- 對:「這個區間有 95% 的機率(正確說法:方法保證 95%)涵蓋母體平均。」
誤讀 3:「既然區間這麼寬,那個 52.3 的估計值根本沒用」#
- 錯:區間寬不等於估計值沒用。寬度反映的是資料提供的資訊量( \(n\) 小、母體變異大),不是估計程序有錯。
- 對:寬度是誠實的。要變窄只有兩條路:增加 \(n\) ,或接受更高的偏誤風險(例如 6.3 節的 Wilson 區間就比 Wald 寬)。
誤讀 4:「把信心水準從 95% 提到 99%,就能更『保險』」#
- 錯:提高信心水準會讓區間變寬(6.2 節:99% 的寬度是 95% 的 1.31 倍)。寬度變大是代價,不是免費的保險。
- 對:99% 區間的覆蓋率是 99%,但它更寬、更不精確。選 95% 還是 99% 是取捨。
誤讀 5:「覆蓋率是 95%,所以這個區間漏掉真值的機率是 5%——也就是說這個區間是錯的」#
- 錯:覆蓋率是長期平均。單次結果「沒蓋住」不代表區間算錯了。
- 對:在 100 個區間裡,會有約 5 個沒蓋住(本章實測 8 個,因為 100 次抽樣本身有誤差)。
誤讀 6:「 \(p\) 值和信賴區間是兩回事,可以各講各的」#
- 錯:兩者是同一件事的兩種呈現。對 \(H_0: \mu = \mu_0\) 的雙尾檢定在 \(\alpha\) 水準拒絕 \(H_0\) ,等價於 \(\mu_0\) 不在 \(100(1-\alpha)\%\) 的信賴區間裡。
- 對:「95% 信賴區間不包含 0」⟺「 \(t\) 檢定的 \(p\) 值 < 0.05」。這是第 7 章的主題。
誤讀 7:「 \(n\) 很小時, \(t\) 區間和 \(z\) 區間差不多」#
- 錯:6.2 節的 Gamma 母體實驗顯示, \(n=5\) 時 \(z\) 區間覆蓋率只有 0.846, \(t\) 區間有 0.921。
- 對: \(n\) 小時必須用 \(t\) (或更精確的方法), \(t\) 的厚尾正是為此而設計。
誤讀 8:「 \(p\) 值 0.049 和 0.051 基本上沒差」#
- 錯:雖然「顯著與否」的二元結論一樣,但 \(p\) 值是連續的證據強度。
- 對:報告時同時給區間與 \(p\) 值;不要把 \(p\)` 值當成「接近門檻就當沒差異」。
誤讀 9:「多次重複抽樣後取平均,會得到一個更窄的區間」#
- 錯:重複抽樣並平均估計值,得到的是一個更準的點估計,區間寬度取決於最終的有效樣本數(總樣本數),不是重複次數。
- 對:把 \(`n\) 加大才會變窄。
誤讀 10:「 \(z\) 區間比 \(t\) 區間『更嚴格』,因為它假設更少」#
- 錯: \(z\) 區間需要已知 \(\sigma\) ,這在實務上通常不成立; \(t\) 區間用 \(S\) 取代 \(\sigma\) 並自動補償。
- 對: \(t\) 區間的覆蓋率不依賴母體是否為常態(對平均數而言), \(z\) 區間則不然。
動手(二):把「方法 vs 這一次」做成對照#
我們用程式把兩個敘述並排呈現:
print()
print("=== 對照:方法層級 vs 單次結果層級 ===")
g4 = r.set_seed(2026)
ivs = []
for _ in range(B):
s = g4.rnorm(n, mean=mu, sd=sigma)
m = r.mean(s)
se = r.sd(s) / math.sqrt(n)
tc = r.qt(0.975, n - 1)
ivs.append((m - tc * se, m + tc * se))
cov = sum(1 for lo, hi in ivs if lo <= mu <= hi)
print("【方法層級】這個程序反覆使用,長期覆蓋率約 0.95")
print(f" 本次 100 次實測:{cov}/100 = {cov/100:.2f}")
print()
print("【單次結果層級】這一個區間是固定的數字")
lo, hi = ivs[0]
print(f" 第 1 個區間 = [{lo:.4f}, {hi:.4f}]")
print(f" 真值 μ = {mu:.4f} 在這個區間裡嗎?{'在' if lo <= mu <= hi else '不在'}(不是『機率 95%』,是『是』或『不是』)")
print()
print("【結論】95% 描述的是『用這個方法做 100 次,約有 95 次會蓋住』,")
print(" 而不是『這一個區間有 95% 的機率蓋住』。")
輸出(實際執行):
=== 對照:方法層級 vs 單次結果層級 ===
【方法層級】這個程序反覆使用,長期覆蓋率約 0.95
本次 100 次實測:92/100 = 0.92
【單次結果層級】這一個區間是固定的數字
第 1 個區間 = [44.2216, 54.0401]
真值 μ = 50.0000 在這個區間裡嗎?在(不是『機率 95%』,是『是』或『不是』)
【結論】95% 描述的是『用這個方法做 100 次,約有 95 次會蓋住』,
而不是『這一個區間有 95% 的機率蓋住』。
動手(三):Bayesian 可信區間——為什麼「機率」說法在某些框架下成立#
如果我們真的想說「真值落在這個區間裡的機率是 95%」,唯一的做法是給參數一個主觀分布(先驗),然後用貝氏斯定理更新。
若先驗是 \(\mu \sim N(\mu_0, \tau_2)\) ,後驗為:
\(\mu \mid x \sim N\left(\frac{\tau^2}{\tau^2 + \sigma^2/n}\bar{x} + \frac{\sigma^2/n}{\tau^2+\sigma^2/n}\mu_0,\; \frac{\tau^2\sigma^2/n}{\tau^2+\sigma^2/n}\right)\)
這是一個真正的機率分布,所以「 \(\mu\) 落在其中 95% 的機率」是有意義的陳述。這個區間叫可信區間(credible interval)。
用 rstatistics 的常態分布函數就能算:
print()
print("=== Bayesian 可信區間:後驗分布 95% 區間 ===")
# 先驗:mu ~ N(50, 20^2),資料:n=30, x-bar=52.0, s=11.0
tau2 = 20.0 ** 2
sig2 = 11.0 ** 2
nn = 30
xbar = 52.0
post_var = 1.0 / (1.0 / tau2 + nn / sig2)
post_mean = post_var * (50.0 / tau2 + nn * xbar / sig2)
sd_post = math.sqrt(post_var)
lo = post_mean + r.qnorm(0.025) * sd_post
hi = post_mean + r.qnorm(0.975) * sd_post
print(f"先驗:mu ~ N(50, 20^2);資料:n = {nn}, x-bar = {xbar}, s = 11")
print(f"後驗:mu ~ N({post_mean:.4f}, {sd_post:.4f}^2)")
print(f"後驗 95% 可信區間 = [{lo:.4f}, {hi:.4f}]")
print(f"對照:頻率派 95% t 區間 = [{xbar - r.qt(0.975, nn-1)*11.0/math.sqrt(nn):.4f}, {xbar + r.qt(0.975, nn-1)*11.0/math.sqrt(nn):.4f}]")
print("→ 先驗很寬(sd=20)時,後驗區間幾乎由資料決定,兩者接近;")
print(" 先驗很窄(sd=2)時,後驗會被先驗拉回去。")
輸出(實際執行):
=== Bayesian 可信區間:後驗分布 95% 區間 ===
先驗:mu ~ N(50, 20^2);資料:n = 30, x-bar = 52.0, s = 11
後驗:mu ~ N(51.9800, 1.9983^2)
後驗 95% 可信區間 = [48.0635, 55.8966]
對照:頻率派 95% t 區間 = [47.8925, 56.1075]
→ 先驗很寬(sd=20)時,後驗區間幾乎由資料決定,兩者接近;
先驗很窄(sd=2)時,後驗會被先驗拉回去。
注意這裡的一個重要差異:後驗可信區間 [48.0635, 55.8966] 與頻率派區間 [47.8925, 56.1075] 幾乎一樣——因為先驗 \(N(50, 20^2)\) 的標準差 20 遠大於資料提供的資訊( \(s/\sqrt{n} \approx 2\) ),所以後驗幾乎完全由資料決定。
把先驗收窄成 \(N(50, 2^2)\) 就會看到完全不同的結果:
print()
print("=== 先驗寬窄對後驗可信區間的影響 ===")
for tau in (20.0, 10.0, 5.0, 2.0):
tau2 = tau * tau
post_var = 1.0 / (1.0 / tau2 + nn / sig2)
post_mean = post_var * (50.0 / tau2 + nn * xbar / sig2)
sdp = math.sqrt(post_var)
lo = post_mean + r.qnorm(0.025) * sdp
hi = post_mean + r.qnorm(0.975) * sdp
print(f" 先驗 N(50, {tau:g}^2): 後驗 N({post_mean:.4f}, {sdp:.4f}^2),95% 可信區間 = [{lo:.4f}, {hi:.4f}]")
print(" 頻率派 95% t 區間 = [{:.4f}, {:.4f}]".format(
xbar - r.qt(0.975, nn-1)*11.0/math.sqrt(nn), xbar + r.qt(0.975, nn-1)*11.0/math.sqrt(nn)))
輸出(實際執行):
=== 先驗寬窄對後驗可信區間的影響 ===
先驗 N(50, 20^2): 後驗 N(51.9800, 1.9983^2),95% 可信區間 = [48.0635, 55.8966]
先驗 N(50, 10^2): 後驗 N(51.9225, 1.9690^2),95% 可信區間 = [48.0633, 55.7816]
先驗 N(50, 5^2): 後驗 N(51.7222, 1.8636^2),95% 可信區間 = [48.0696, 55.3748]
先驗 N(50, 2^2): 後驗 N(50.9959, 1.4171^2),95% 可信區間 = [48.2183, 53.7734]
頻率派 95% t 區間 = [47.8925, 56.1075]
這組數字說明了兩件重要的事:
- 先驗寬(sd ≥ 5)時,可信區間與頻率派區間幾乎無異——此時資料主導,兩種框架給出相同的實務答案(sd=10 時寬度只差 0.1)。
- 先驗窄(sd=2)時,可信區間被明顯拉窄並往先驗中心 50 靠(上限從 55.90 降到 55.37、53.77),後驗是「資料 + 先驗」的融合。
這印證了本章的核心:兩種框架的區間寬度取決於不同的東西(頻率派取決於抽樣誤差與 \(n\) ;Bayesian 還取決於先驗的資訊量)。
與 R 對照#
R 沒有內建的「信賴區間」函式(它是 t.test 等檢定函式的附屬輸出),但同樣的模擬可以這樣寫:
set.seed(2026)
mu <- 50; sigma <- 12; n <- 30; B <- 100
cat("=== 100 個 95% t 信賴區間 ===\n")
iv <- replicate(B, {
x <- rnorm(n, mu, sigma); m <- mean(x); s <- sd(x)
tt <- qt(0.975, n - 1)
c(m - tt*s/sqrt(n), m + tt*s/sqrt(n))
})
iv <- t(iv)
cover <- sum(iv[,1] <= mu & mu <= iv[,2])
cat(sprintf("蓋住真值的區間數 = %d / %d\n", cover, B))
miss <- which(!(iv[,1] <= mu & mu <= iv[,2]))
for (i in miss) cat(sprintf(" 第 %3d 個:[%.4f, %.4f]\n", i, iv[i,1], iv[i,2]))
cat("\n=== 不同 confidence level 的覆蓋率(每次 200 個)===\n")
set.seed(555)
for (cl in c(0.80, 0.90, 0.95, 0.99)) {
R <- 200; cov <- 0
for (i in 1:R) {
x <- rnorm(n, mu, sigma); m <- mean(x); s <- sd(x)
tt <- qt(1 - (1-cl)/2, n - 1)
if (m - tt*s/sqrt(n) <= mu && mu <= m + tt*s/sqrt(n)) cov <- cov + 1
}
cat(sprintf("confidence = %.2f: 覆蓋 %d/%d = %.3f\n", cl, cov, R, cov/R))
}
cat("\n=== 區間圖 ===\n")
set.seed(2026)
iv2 <- t(replicate(B, {
x <- rnorm(n, mu, sigma); m <- mean(x); s <- sd(x)
tt <- qt(0.975, n - 1)
c(m - tt*s/sqrt(n), m + tt*s/sqrt(n))
}))
pdf("06.4-ci-coverage-r.pdf", width = 8, height = 9)
plot(NA, xlim = c(35, 65), ylim = c(0, B + 2), xlab = "CI endpoints", ylab = "Replication",
main = "100 95% confidence intervals (true mu = 50, blue line)")
for (i in 1:B) {
ok <- iv2[i,1] <= mu && mu <= iv2[i,2]
segments(iv2[i,1], i, iv2[i,2], i, col = if (ok) "black" else "red", lwd = if (ok) 1 else 2)
}
segments(mu, 0, mu, B + 2, col = "blue", lwd = 2)
dev.off()
cat("已存 06.4-ci-coverage-r.pdf\n")
輸出(實際執行):
=== 100 個 95% t 信賴區間 ===
蓋住真值的區間數 = 92 / 100
第 23 個:[41.0921, 49.3673]
第 40 個:[50.3265, 59.6702]
第 65 個:[43.5183, 49.6617]
第 69 個:[41.7246, 49.5023]
第 79 個:[50.4477, 59.5776]
第 85 個:[51.9980, 59.5510]
第 90 個:[40.6143, 49.6802]
第 97 個:[40.4932, 49.8720]
=== 不同 confidence level 的覆蓋率(每次 200 個)===
confidence = 0.80: 覆蓋 153/200 = 0.765
confidence = 0.90: 覆蓋 181/200 = 0.905
confidence = 0.95: 覆蓋 190/200 = 0.950
confidence = 0.99: 覆蓋 200/200 = 1.000
=== 區間圖 ===
null device
1
已存 06.4-ci-coverage-r.pdf
R 的結果與 Python 版幾乎完全一致(set.seed(2026) 在兩邊給出相同的隨機序列,所以 92/100 完全相同,連沒蓋住的 8 個區間編號都一樣)。confidence level 那組因為 set.seed(555) 之後的抽樣順序不同而略有差異,但結論相同。
小結#
- 「95% 是方法的性質,不是這一個區間的性質」——這是本章最重要的一句話。
- 抽完樣本後區間是固定的,真值在裡面就是 100%、不在就是 0%,沒有機率可言;用「硬幣」類比最容易記住。
- 區間圖是最有效的說服工具:100 條線、藍色真值線、紅色是漏掉的 8 條,而且紅線偏在一側。
- 覆蓋率是長期平均,單次結果「沒蓋住」不代表程序有錯;100 次實測 92 次覆蓋完全正常(抽樣誤差約 \(\pm 3\%\) )。
- 想說「有 95% 的機率」就必須用 Bayesian 可信區間——但它的寬度還會受到先驗資訊量的影響。
練習#
- 自己做一張區間圖,但把每個區間畫成不同顏色(用
Graphics的segments加上不同col),並把沒蓋住真值的區間特別標出。比較 95% 與 99% 兩種信心水準的區間圖,直覺感受「寬度」與「覆蓋」的取捨。 (提示:先畫 99% 的版本,會看到紅線幾乎消失。) - 做一個滾動實驗:固定母體,連續做 500 個 95% 區間,每做一個就記錄「到目前為止的累積覆蓋率」,把它畫成折線圖。你會看到它怎麼在 0.95 附近震盪並收斂。 (提示:用
Graphics的lines加上points。) - 驗證「信賴區間與檢定的等價性」:對同一批資料,計算 95% \(t\) 區間,並對一串 \(\mu_0\) 檢查「 \(\mu_0\) 是否在區間內」與「 \(t\) 檢定的 \(p\) 值是否 < 0.05」是否一致。 (提示:用
r.t_test(x, mu=mu0)搭配r.t_test(x).conf_int。) - 討論題:下列三種說法,哪個是對的?為什麼? (a)「這個區間有 95% 的機率包含真值。」 (b)「真值有 95% 的機率在這個區間裡。」 (c)「用這個方法反覆抽樣,約 95% 的區間會包含真值。」 (提示:(c) 是 Neyman 的定義;(a) 和 (b) 都需要先驗才能成立。)
- 討論題:若把「信賴水準 95%」改成「在 100 個區間中至少要有 90 個蓋住真值」,這是更強還更弱的要求?模擬驗證你的判斷。 (提示:這是對有限次重複抽樣的保證,比「長期覆蓋率 95%」嚴格得多,需要用二項分布的尾端來思考。)