玩統計機器學習筆記

線性迴歸與模型選擇Linear Regression & Model Selection

從最小平方法出發,理解線性迴歸的假設、配適度指標與統計推論,學會用 Cp、AIC、BIC 挑選模型,並避開解讀係數時最常見的陷阱。

第 2 章,共 11 章|初版 2019 年 4 月・2026 年 10 月修訂

本章內容
  1. 2.1模型與假設
  2. 2.2模型配適度
  3. 2.3統計推論
  4. 2.4模型選擇
  5. 2.5常見陷阱
  6. 2.6參考資料

線性迴歸是最古老、也最常被低估的模型。它簡單到可以用一行程式配適,卻同時牽涉到估計、檢定、區間推論與模型選擇等統計學的核心問題。許多更複雜的方法,例如正則化、廣義線性模型,甚至神經網路的最後一層,本質上都是在線性迴歸的基礎上延伸出來的。

這一章依序回答四個問題:模型怎麼估計、估計得好不好、結論有多可信、該放進哪些變數。最後整理實務上最容易誤判的幾個陷阱,尤其是「如何解讀迴歸係數」。

2.1模型與假設Model and Assumptions

最小平方估計

多元線性迴歸假設反應變數 yy 與 pp 個預測變數之間的關係為

y=β0+β1x1+⋯+βpxp+ε y = \beta_0 + \beta_1 x_1 + \cdots + \beta_p x_p + \varepsilon

其中 ε\varepsilon 是平均為 0 的誤差項。給定 nn 筆資料,最常用的估計方式是最小平方估計(Least Squares Estimates, LSE):選出讓殘差平方和(Residual Sum of Squares, RSS)最小的係數,

RSS=∑i=1n(yi−y^i)2,β^=arg⁡min⁡βRSS=(X⊤X)−1X⊤y \mathrm{RSS} = \sum_{i=1}^{n} \left( y_i - \hat{y}_i \right)^2, \qquad \hat{\boldsymbol\beta} = \arg\min_{\boldsymbol\beta} \mathrm{RSS} = (\mathbf{X}^\top \mathbf{X})^{-1} \mathbf{X}^\top \mathbf{y}

其中 X\mathbf{X} 是 n×(p+1)n \times (p+1) 的設計矩陣(第一欄全為 1,對應截距)。只有一個預測變數的簡單線性迴歸,解可以寫成熟悉的形式:β^1=∑i(xi−xˉ)(yi−yˉ)/∑i(xi−xˉ)2\hat\beta_1 = \sum_i (x_i - \bar x)(y_i - \bar y) / \sum_i (x_i - \bar x)^2,β^0=yˉ−β^1xˉ\hat\beta_0 = \bar y - \hat\beta_1 \bar x。

RSS 代表模型「沒有解釋到」的變異。對於巢狀模型(nested models),多加入一個變數,最小平方解至少可以把新係數設為 0 而回到原模型,因此 RSS 只會持平或下降,不會上升。這個性質正是後面模型選擇需要額外準則的原因。

最小平方與最大概似

如果進一步假設誤差 εi∼iidN(0,σ2)\varepsilon_i \overset{\text{iid}}{\sim} N(0, \sigma^2),對數概似函數為

log⁡L(β,σ2)=−n2log⁡(2πσ2)−RSS(β)2σ2 \log L(\boldsymbol\beta, \sigma^2) = -\frac{n}{2}\log(2\pi\sigma^2) - \frac{\mathrm{RSS}(\boldsymbol\beta)}{2\sigma^2}

對 β\boldsymbol\beta 而言,最大化概似等同於最小化 RSS,所以此時 LSE 就是最大概似估計(Maximum Likelihood Estimate, MLE)。

四個模型假設

線性迴歸的估計與推論建立在以下假設上。以簡單線性迴歸為例:

假設 數學表述 違反時的影響
線性(linearity) μ(y∣x)=β0+β1x\mu(y \mid x) = \beta_0 + \beta_1 x 係數有偏誤,預測系統性偏離
獨立(independence) 各筆誤差 εi\varepsilon_i 彼此獨立 標準誤低估,區間過窄
常態(normality) y∣x∼N(β0+β1x,σ2)y \mid x \sim N(\beta_0 + \beta_1 x, \sigma^2) 小樣本下 tt、FF 檢定不準確
變異數相同(equal variance) Var⁡(y∣x)=σ2\operatorname{Var}(y \mid x) = \sigma^2 不隨 xx 改變 標準誤錯誤,區間與檢定失準

前兩個假設影響最大:線性錯了,模型本身就錯;獨立性錯了(例如時間序列、同一位客戶的重複量測),所有的標準誤都會過於樂觀。常態性在樣本數大時,因中央極限定理而相對不那麼關鍵。

2.2模型配適度Goodness of Fit

殘差標準誤

殘差標準誤(Residual Standard Error, RSE)估計的是誤差項的標準差 σ\sigma:

RSE=σ^=RSSn−p−1 \mathrm{RSE} = \hat\sigma = \sqrt{\frac{\mathrm{RSS}}{n - p - 1}}

分母是殘差的自由度:nn 筆資料扣掉 pp 個斜率與 1 個截距。簡單線性迴歸時 p=1p = 1,分母為 n−2n - 2。RSE 的單位與 yy 相同,可以直接解讀為「預測值平均大約偏離實際值多少」。

與 RSS 不同,RSE 不是單調的:加入一個幾乎沒有解釋力的變數時,RSS 只下降一點點,分母卻少了 1,RSE 反而可能上升。

決定係數 R2R^2 與調整後 R2R^2

R2=TSS−RSSTSS=1−RSSTSS,TSS=∑i=1n(yi−yˉ)2 R^2 = \frac{\mathrm{TSS} - \mathrm{RSS}}{\mathrm{TSS}} = 1 - \frac{\mathrm{RSS}}{\mathrm{TSS}}, \qquad \mathrm{TSS} = \sum_{i=1}^{n} (y_i - \bar y)^2

R2R^2 是模型解釋的變異佔總變異的比例,介於 0 與 1 之間。在簡單線性迴歸中,R2R^2 恰好等於 xx 與 yy 相關係數的平方;在多元迴歸中,它等於 yy 與 y^\hat y 相關係數的平方。

由於 TSS 與模型無關、RSS 隨變數增加而不增,R2R^2 隨變數增加只會持平或上升。因此不能用 R2R^2 或 RSS 比較變數個數不同的模型,否則永遠會選到最大的模型。調整後 R2R^2(adjusted R2R^2)以自由度修正:

Radj2=1−RSS/(n−p−1)TSS/(n−1) R^2_{\text{adj}} = 1 - \frac{\mathrm{RSS} / (n - p - 1)}{\mathrm{TSS} / (n - 1)}

加入無用的變數會讓 Radj2R^2_{\text{adj}} 下降,所以它可以用來做粗略的模型比較。

FF 檢定

想知道「模型整體是否有解釋力」,檢定的是 H0:β1=⋯=βp=0H_0: \beta_1 = \cdots = \beta_p = 0:

F=(TSS−RSS)/pRSS/(n−p−1) F = \frac{(\mathrm{TSS} - \mathrm{RSS}) / p}{\mathrm{RSS} / (n - p - 1)}

分子是「每個自由度解釋的變異」,分母是「每個自由度未解釋的變異」。注意分子的自由度是 pp,不含截距 β0\beta_0,因為虛無模型與完整模型都有截距。

更一般的偏 FF 檢定(partial FF-test)比較兩個巢狀模型:小模型的殘差平方和為 RSS0\mathrm{RSS}_0,大模型多了 qq 個參數、殘差平方和為 RSS\mathrm{RSS},

F=(RSS0−RSS)/qRSS/(n−p−1) F = \frac{(\mathrm{RSS}_0 - \mathrm{RSS}) / q}{\mathrm{RSS} / (n - p - 1)}

分子是「新增變數多解釋了多少變異」,在 H0H_0 下服從 Fq, n−p−1F_{q,\, n-p-1} 分布。

tt 檢定與 FF 檢定的關係

summary(lm()) 為每個係數報告一個 tt 檢定,檢定的是「在其他變數都在模型中的前提下,這個係數是否為 0」。對單一係數而言,它與 q=1q = 1 的偏 FF 檢定完全等價:t2=Ft^2 = F。

兩者的差別出現在類別變數。一個有 KK 個水準的類別變數會被編碼成 K−1K - 1 個虛擬變數,lm() 的 tt 檢定只告訴我們「每個水準與基準水準是否不同」,結果還會隨基準水準的選擇改變。要回答「這個類別變數整體是否重要」,應該用自由度為 K−1K - 1 的 FF 檢定:

fit  <- lm(y ~ x1 + region, data = df)
summary(fit)        # 每個係數(每個虛擬變數)各自的 t 檢定
car::Anova(fit)     # 每個變數一個 F 檢定,類別變數整體檢定(預設 Type II)
fit0 <- lm(y ~ x1, data = df)
anova(fit0, fit)    # 兩個巢狀模型的偏 F 檢定

2.3統計推論Inference

pp 值的正確意義

pp 值的定義是:假設虛無假設 H0H_0 為真,觀察到「至少和實際觀察結果一樣極端」的檢定統計量的機率。pp 值很小,代表資料與 H0H_0 不太相容。

信賴區間與預測區間

在簡單線性迴歸中,給定新的 x0x_0,點預測為 y^0=β^0+β^1x0\hat y_0 = \hat\beta_0 + \hat\beta_1 x_0。這個點預測可以回答兩個不同的問題:

  • 信賴區間(confidence interval):x=x0x = x_0 時 yy 的平均值 μ(y∣x0)\mu(y \mid x_0) 落在哪裡?它反映的是整條迴歸線估計的不確定性。
  • 預測區間(prediction interval):x=x0x = x_0 的下一筆個別觀察值 y0y_0 落在哪裡?它除了迴歸線的不確定性,還要加上個別資料點本身的隨機誤差。
信賴區間:y^0±tn−2, 0.975⋅σ^1n+(x0−xˉ)2∑i(xi−xˉ)2預測區間:y^0±tn−2, 0.975⋅σ^1+1n+(x0−xˉ)2∑i(xi−xˉ)2 \begin{aligned} \text{信賴區間:} \quad & \hat y_0 \pm t_{n-2,\,0.975} \cdot \hat\sigma \sqrt{\frac{1}{n} + \frac{(x_0 - \bar x)^2}{\sum_{i}(x_i - \bar x)^2}} \\ \text{預測區間:} \quad & \hat y_0 \pm t_{n-2,\,0.975} \cdot \hat\sigma \sqrt{1 + \frac{1}{n} + \frac{(x_0 - \bar x)^2}{\sum_{i}(x_i - \bar x)^2}} \end{aligned}

95% 區間的 tt 分位數在樣本數中等以上時約為 2,所以常見「估計值加減兩倍標準誤」的口訣。預測區間根號內多出的 1,來自新觀察值自己的誤差 ε0\varepsilon_0:預測誤差的期望值為 E[(y0−y^0)2]=σ2+Var⁡(y^0)E[(y_0 - \hat y_0)^2] = \sigma^2 + \operatorname{Var}(\hat y_0)。

比較 信賴區間 預測區間
對象 平均反應 μ(y∣x0)\mu(y \mid x_0) 單一新觀察值 y0y_0
n→∞n \to \infty 時 寬度趨近 0 寬度趨近 ±1.96σ\pm 1.96\sigma
x0x_0 遠離 xˉ\bar x 時 變寬 變寬

兩種區間都在 x0=xˉx_0 = \bar x 時最窄,越往資料範圍的邊緣越寬。這也提醒我們:在資料範圍之外做外插,不確定性遠比直覺上大。

2.4模型選擇Model Selection

當候選變數很多時,需要決定哪些變數該放進模型。前面已經說明,訓練資料上的 RSS 與 R2R^2 一定偏好最大的模型,因此需要其他準則。做法有兩類:

  1. 間接估計測試誤差:在訓練誤差上加一個隨模型大小增加的懲罰項,例如 CpC_p、AIC、BIC、調整後 R2R^2。
  2. 直接估計測試誤差:使用驗證集或交叉驗證,詳見第 5 章。

CpC_p、AIC 與 BIC

設模型含 dd 個預測變數,σ^2\hat\sigma^2 是誤差變異數 σ2=Var⁡(ε)\sigma^2 = \operatorname{Var}(\varepsilon) 的估計值,通常取包含所有變數的完整模型的 RSE2\mathrm{RSE}^2。

Mallows' CpC_p:

Cp=1n(RSS+2dσ^2) C_p = \frac{1}{n}\left( \mathrm{RSS} + 2 d \hat\sigma^2 \right)

訓練 RSS 會低估測試誤差,2dσ^22d\hat\sigma^2 正是用來補償這個低估。若 σ^2\hat\sigma^2 是 σ2\sigma^2 的不偏估計,CpC_p 就是測試均方誤差的不偏估計。選擇 CpC_p 最小的模型。

AIC(Akaike Information Criterion)適用於任何以最大概似法配適的模型,包括邏輯斯迴歸等分類模型:

AIC=−2log⁡L+2d \mathrm{AIC} = -2 \log L + 2d

AIC 的理論基礎是估計模型與真實資料生成分布之間的 Kullback–Leibler 資訊損失。單一的 AIC 值沒有絕對意義,只有比較同一份資料上不同模型的 AIC 差異才有意義。對於誤差為常態的線性模型,AIC 與 CpC_p 成正比,兩者會選出相同的模型。

BIC(Bayesian Information Criterion)由貝氏模型比較推導而來,近似於各模型的後驗機率:

BIC=1n(RSS+log⁡(n) dσ^2) \mathrm{BIC} = \frac{1}{n}\left( \mathrm{RSS} + \log(n) \, d \hat\sigma^2 \right)

一般形式為 −2log⁡L+dlog⁡n-2\log L + d \log n。當 n>7n > 7 時 log⁡n>2\log n > 2,BIC 對每個參數的懲罰比 AIC 與 CpC_p 重,因此傾向選出較小的模型。

準則 每個參數的懲罰 傾向 適用範圍
CpC_p 2σ^22\hat\sigma^2 預測導向 線性迴歸
AIC 22 預測導向 所有概似模型
BIC log⁡n\log n 較小、較精簡的模型 所有概似模型
調整後 R2R^2 透過自由度 較大的模型 線性迴歸

最佳子集選擇與前向逐步選擇

最佳子集選擇(best subset selection)窮舉所有變數組合:

  1. 對每個 k=1,…,pk = 1, \ldots, p,配適全部 (pk)\binom{p}{k} 個含 kk 個變數的模型,保留 RSS 最小者,記為 Mk\mathcal{M}_k。
  2. 在 M0,…,Mp\mathcal{M}_0, \ldots, \mathcal{M}_p 之間,用 CpC_p、BIC、調整後 R2R^2 或交叉驗證選出最終模型。

第 1 步在固定模型大小下比較,用 RSS 沒有問題;第 2 步跨越不同大小,才需要懲罰項。總共要配適 2p2^p 個模型,pp 超過三、四十就不可行。

前向逐步選擇(forward stepwise selection)是貪婪的替代方案:從只有截距的模型開始,每一步在剩下的變數中加入讓 RSS 下降最多的那一個,產生一串巢狀模型,再以 CpC_p 等準則挑選。總共只需配適 1+p(p+1)/21 + p(p+1)/2 個模型。代價是它不保證找到全域最佳:最好的兩變數模型不一定包含最好的單變數模型裡的那個變數。

在 R 中,leaps::regsubsets() 可以一次完成這兩種搜尋;bestglm::bestglm() 則能對廣義線性模型以 AIC、BIC 或交叉驗證做最佳子集選擇。以 ISLR 的 Hitters 資料(19 個預測變數)為例:

library(leaps)
Hitters <- na.omit(ISLR::Hitters)
fit <- regsubsets(Salary ~ ., data = Hitters, nvmax = 19,
                  method = "exhaustive")   # 或 method = "forward"
s <- summary(fit)
which.min(s$cp); which.min(s$bic); which.max(s$adjr2)
coef(fit, which.min(s$bic))                # BIC 選出的模型係數

當 p>np > n

變數個數超過樣本數時,X⊤X\mathbf{X}^\top \mathbf{X} 不可逆,最小平方解有無限多組,而且都能讓訓練資料的 RSS 等於 0。此時 σ^2\hat\sigma^2 無法估計,CpC_p、AIC、BIC 也跟著失效。這種高維度情境需要不同的工具:收縮方法如脊迴歸與 Lasso(見第 3 章)、主成分等降維方法(見第 4 章),並以交叉驗證選擇模型。

2.5常見陷阱Common Pitfalls

遺漏變數與代理變數

在只有少數預測變數的迴歸中,某個變數可能只是代理變數(surrogate / proxy),實際上替一個沒有放進模型的重要變數承擔了效果。例如以冰淇淋銷量預測溺水人數,會得到顯著的正係數,但真正的共同原因是氣溫。

這種現象稱為遺漏變數偏誤(omitted variable bias):若真實模型包含 x1x_1 與 x2x_2,卻只配適 x1x_1,則 β^1\hat\beta_1 的期望值會變成 β1+β2δ\beta_1 + \beta_2 \delta,其中 δ\delta 是 x2x_2 對 x1x_1 迴歸的斜率。只要被遺漏的變數同時影響 yy 又與 x1x_1 相關,係數就會有偏誤。

反向迴歸

迴歸是不對稱的:yy 對 xx 的迴歸最小化的是垂直方向的誤差,xx 對 yy 的迴歸最小化的是水平方向的誤差。兩條迴歸線的斜率分別為 r sy/sxr \, s_y / s_x 與 r sx/syr \, s_x / s_y,除非 ∣r∣=1|r| = 1,否則把其中一條「反解」並不會得到另一條。因此應該依照要預測或解釋的對象決定誰是反應變數:要預測 yy,就配適 lm(y ~ x),不要用 lm(x ~ y) 再反推。

異質變異

異質變異(heteroscedasticity)指誤差變異數隨 xx 或預測值改變。最直接的檢查方式是畫殘差圖:橫軸為配適值 y^\hat y,縱軸為殘差。若殘差呈現漏斗狀,越往右越分散,就是典型的異質變異。

此時 β^\hat{\boldsymbol\beta} 仍然不偏,但標準誤、信賴區間與 pp 值都不可靠。常見的處理方式包括:對 yy 做轉換(如 log⁡y\log y 或 y\sqrt{y})、使用加權最小平方法(weighted least squares),或改用異質變異穩健標準誤(heteroscedasticity-consistent standard errors)。

殘差圖也能順便檢查非線性:若殘差呈現 U 字型等系統性的形狀,表示線性假設不成立。

常態性檢查

以殘差的常態 Q-Q 圖檢查常態假設:點大致落在對角線上即可。尾端明顯偏離時,小樣本下的 tt、FF 檢定與預測區間都會失準。

如何解讀係數

交互作用與非線性

若 x1x_1 對 yy 的效果取決於 x2x_2 的大小,就需要加入交互作用項(interaction term)x1x2x_1 x_2:

y=β0+β1x1+β2x2+β3x1x2+ε y = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + \beta_3 x_1 x_2 + \varepsilon

此時 x1x_1 的效果是 β1+β3x2\beta_1 + \beta_3 x_2。可以用交互作用圖(interaction plot)初步觀察:各組的線若不平行,代表可能有交互作用。依照階層原則(hierarchical principle),模型中有交互作用項時,應該保留對應的主效果。

預測變數與 yy 之間若有非線性關係,可以先畫兩兩散布圖(pairwise scatter plot)觀察,再加入多項式項或轉換(如 x2x^2、log⁡x\log x)。這樣的模型對參數而言仍是線性的,所以仍可用最小平方法估計。

共線性與 VIF

係數估計量的共變異數矩陣為

Var⁡(β^)=σ2(X⊤X)−1 \operatorname{Var}(\hat{\boldsymbol\beta}) = \sigma^2 (\mathbf{X}^\top \mathbf{X})^{-1}

當部分預測變數高度相關,X⊤X\mathbf{X}^\top \mathbf{X} 接近奇異矩陣,它的反矩陣中對角線元素會變得很大,對應係數的標準誤 se⁡(β^j)\operatorname{se}(\hat\beta_j) 跟著膨脹。具體而言,在含截距的模型中

Var⁡(β^j)=σ2(1−Rj2)∑i(xij−xˉj)2 \operatorname{Var}(\hat\beta_j) = \frac{\sigma^2}{(1 - R_j^2) \sum_{i} (x_{ij} - \bar x_j)^2}

其中 Rj2R_j^2 是以其他所有預測變數對 xjx_j 迴歸得到的 R2R^2。分母中的 1/(1−Rj2)1/(1 - R_j^2) 稱為變異數膨脹因子(Variance Inflation Factor, VIF):

VIFj=11−Rj2 \mathrm{VIF}_j = \frac{1}{1 - R_j^2}

VIF 等於 1 表示 xjx_j 與其他變數完全不相關;經驗上 VIF 超過 5 或 10 就值得注意。共線性不會讓預測變差,卻會讓個別係數極不穩定、正負號甚至可能反轉。處理方式包括移除或合併高度相關的變數、改用脊迴歸(見第 3 章),或先做主成分分析。

2.6參考資料References

  • James, Witten, Hastie & Tibshirani, An Introduction to Statistical Learning(ISLR),Springer, 2013,第 3、6 章。
  • Hastie, Tibshirani & Friedman, The Elements of Statistical Learning(ESL),2nd ed., Springer, 2009,第 3、7 章。
  • Fox, Applied Regression Analysis and Generalized Linear Models, 3rd ed., SAGE, 2016。
  • Mallows, "Some Comments on CpC_p", Technometrics, 1973。
  • Akaike, "A New Look at the Statistical Model Identification", IEEE Transactions on Automatic Control, 1974。
  • Schwarz, "Estimating the Dimension of a Model", The Annals of Statistics, 1978。
  • Wasserstein & Lazar, "The ASA Statement on p-Values: Context, Process, and Purpose", The American Statistician, 2016。