線性迴歸:從基本模型理解變數關係

ISLP 第 3 章 — 對應講義 03
β̂ = (XᵀX)⁻¹Xᵀy|RSS|SE 與 t 檢定|F 檢定|R² 與 RSE|交互作用|VIF
向下捲動開始互動↓
📌 本頁使用方式(ISLP Ch.3|講義 03)

① 依序閱讀:每節先讀說明;遇到互動元件時,先預測結果,再操作驗證。 ② 對照來源:章節旁標示課本章節與講義主題,正文保留公式、條件與算例;計算細節、完整實作與證明預設收合,可按需要展開。來源標記可查原教材。 ③ 檢查理解:答錯時先看回饋,再回到相關說明;標為延伸的內容可留待第二輪。 ④ 最後翻關鍵詞彙卡自測術語,並用 重點速查與來源查閱。

教科書:An Introduction to Statistical Learning with Applications in Python(ISLP);
進階參考:The Elements of Statistical Learning(ESL)。章節旁的來源標記可點到本頁書目。

CONTENTS · 內容目錄
PROLOGUE · 開場

Advertising 資料要回答的四件事 教科書 · 第 3 章開頭講義 03

桌上只有一張表:200 個市場,每個市場在電視、廣播、報紙上各花了多少錢 (單位:千美元),以及賣掉多少單位的產品(單位:千個)。四欄、200 列,沒有別的。 ISLP 第 3 章開場就從這張表問出七個問題——而回答它們的工具, 全部都是同一個線性模型。

這一頁的順序就是這些問題的順序。先把「一個 x 對一個 y」講到底 (怎麼估、估得準不準、擬合得好不好),再推到「多個 x 一起放進來」, 最後看這個模型什麼時候會壞掉、什麼時候該換工具。線性迴歸是 1805 年的東西, 但它幾乎是所有現代方法的骨架:第 6 章在它上面加懲罰項、第 7 章換掉基底函數、 第 4 章把它套進連結函數。熟悉這一章的模型與推論方法,有助於理解後續章節。

開場先記住這四個問題 ① 廣告預算跟銷售量有關係嗎? 這是「整個模型有沒有用」的問題,靠 F 檢定回答(P04)。
② 關係有多強?靠 RSE 與 R² 回答(P03)。
③ 哪些媒體有關?靠個別係數的 t 檢定與 p 值回答(P02、P04)。
④ 每個媒體的條件關聯多大?靠係數本身與它的信賴區間回答(P02、P04)。
剩下三個問題——預測有多準、關係真的是線性嗎、媒體之間是否有非加法關聯—— 分別落在 P02(預測區間)、P06(殘差圖)、P05(交互作用)。

先看答案。下面這一欄「Advertising 上的答案」全部是課本 §3.4 用實際資料算出來的, 可用來回答這四個問題:

問題用什麼回答在哪一節Advertising 上的答案
① 有關係嗎F 檢定P04F = 570.3,p 值接近 0 → 有
② 有多強RSE、R²P03RSE = 1.69(sales 平均 14.02,約 12% 誤差)、R² = 0.897
③ 哪些媒體個別 t 檢定P02、P04TV t = 32.81、radio t = 21.89、newspaper t = −0.18 → 只有前兩個
④ 條件關聯多大係數與信賴區間P02、P04TV 每千美元約 +46 單位(CI 0.043–0.049)、radio 約 +189(0.172–0.206)、newspaper 的 CI 是 (−0.013, 0.011),含 0
⑤ 預測多準信賴區間 vs 預測區間P02預測區間一定比信賴區間寬
⑥ 真的線性嗎殘差圖P06殘差有結構 → 不完全是
⑦ 有非加法關聯嗎交互作用項P05加入 TV×radio 後 R² 從 89.7% 跳到 96.8%
報紙廣告:加入其他變數後,係數如何改變 單獨看 newspaper, 它跟 sales 的關聯是顯著的(t = 3.30、p = 0.00115)。 可是把 TV 與 radio 一起放進模型,它的係數變成 −0.001、t = −0.18, 完全不顯著。資料相同,但控制的變數不同,係數與檢定結果也會改變。 為什麼?答案在 P04 的 Q&A。這也是老師 FAQ 的第 4 題。
QUIZ · 四個問題各配哪個工具

「三種媒體裡,哪些跟銷售量有關?」這個問題該看哪個統計量?

(A) 多元迴歸裡每一個係數各自的 t 統計量與 p 值
(B) 整個模型的 F 統計量
(C) R²,值愈高就代表愈多媒體有關
PART 01 · 簡單線性迴歸

最小平方法:讓 RSS 最小的那條線 教科書 · 第 3.1.1 節講義 03

先只用一個變數。講義的出發點是一個模型:假設 sales 與 TV 預算的關係是一條直線, 再加上一個誤差項

$$Y = \beta_0 + \beta_1 X + \varepsilon$$

$\beta_0$ 是截距、$\beta_1$ 是斜率,兩個都是未知常數,合稱係數或參數; $\varepsilon$ 是誤差項,收集所有直線沒解釋到的部分。講義用四個字母交代對 $\varepsilon$ 的假設, 合稱 LINE:

四條合起來就是講義寫的 $\varepsilon_i$ i.i.d. $\sim N(0,\sigma^2)$,等價於 給定整組 x 之後各 $Y_i$ 相互獨立,且 $Y_i\mid X=x_i\sim N(\beta_0+\beta_1x_i,\ \sigma^2)$: 每一筆 Y 都是以直線上那一點為中心、寬度固定的常態分布。 這四條假設不會一開始全部用到。下表先標出哪個結果需要哪個假設,讀到 P02 與 P06 時再回來對照。

要得到的結果需要的假設在哪一節
最小平方解 $\hat\beta_0$、$\hat\beta_1$一條都不需要,純代數P01
無偏:$E[\hat\beta_1]=\beta_1$L,加上 $E[\varepsilon\mid X]=0$P02
估計量的變異數 $\mathrm{SE}(\hat\beta_1)^2=\sigma^2/\sum(x_i-\bar x)^2$I 與 E(誤差不相關、同變異)P02
係數的 t 檢定與信賴區間再加 N;n 大時中央極限定理可放寬P02
新觀測的預測區間N 不能放寬:新觀測自己的 ε 要接近常態,樣本再多也平均不掉P02
哪一條壞了、怎麼看出來殘差圖等診斷工具P06

模型寫好了,但 $\beta_0$、$\beta_1$ 不知道。手上有 n 對觀測值 $(x_1, y_1), \dots, (x_n, y_n)$,要挑一條「最靠近」這些點的線。 「靠近」有很多種定義,但幾乎所有人都用同一個:讓殘差平方和最小。 第 i 筆的殘差是 $e_i = y_i - \hat y_i$,於是

$$\mathrm{RSS} = e_1^2 + e_2^2 + \cdots + e_n^2 = \sum_{i=1}^{n} \left(y_i - \hat\beta_0 - \hat\beta_1 x_i\right)^2$$

對 $\hat\beta_0$、$\hat\beta_1$ 各偏微分等於零,解出來就是封閉解——不需要反覆更新參數、 不需要調學習率。這一步只用到代數,上面的 LINE 一條都還沒用到;它們要到 P02 問「這個斜率可信嗎」時才登場:

$$\hat\beta_1 = \frac{\sum_{i=1}^{n}(x_i-\bar x)(y_i-\bar y)} {\sum_{i=1}^{n}(x_i-\bar x)^2}, \qquad \hat\beta_0 = \bar y - \hat\beta_1 \bar x$$

第二式順便告訴你一件事:最小平方線一定通過 $(\bar x, \bar y)$。

斜率是個別資料點斜率的加權平均

講義把第一式多寫了一步:把分子的 $(x_i-\bar x)(y_i-\bar y)$ 拆成 $(x_i-\bar x)^2$ 乘上一個比值。

$$\hat\beta_1 = \frac{\sum_{i=1}^{n}(x_i-\bar x)^2\,\dfrac{y_i-\bar y}{x_i-\bar x}} {\sum_{i=1}^{n}(x_i-\bar x)^2} = \sum_{i=1}^{n} w_i\, s_i,\qquad w_i=\frac{(x_i-\bar x)^2}{\sum_{j}(x_j-\bar x)^2},\quad s_i=\frac{y_i-\bar y}{x_i-\bar x}$$

$s_i$ 是「從中心點 $(\bar x,\bar y)$ 連到第 i 個資料點」這條線的斜率,每個點各有一條; $w_i$ 非負、加總為 1,所以最小平方斜率就是這 n 條個別斜率的加權平均。 權重是 $(x_i-\bar x)^2$ 佔總和的比例:x 離平均越遠的點,權重越大; 剛好落在 $x_i=\bar x$ 的點權重是 0,它的 $s_i$ 沒有定義,求和時直接略去這些項(或把該項定為 0), 因為它對斜率完全沒有發言權。 這解釋了兩件事:為什麼拖動最右邊的點斜率動得特別厲害(下面的元件可以試), 以及 P06 的槓桿值為什麼長成 $h_i = 1/n + w_i$ 這個樣子。

尺度與標準化不改變擬合值

講義在同一頁補了一句:x 的尺度不影響 $\hat y$ 的估計。 換單位、減掉平均、除以標準差,這些都是線性重新參數化 $x'=(x-c)/s$;代進公式,斜率與截距跟著換算

$$\hat\beta_1' = s\,\hat\beta_1,\qquad \hat\beta_0' = \hat\beta_0 + c\,\hat\beta_1,$$

但每一筆的 $\hat y_i$、殘差、RSS、R²、RSE 一個都不變;$s\gt0$ 時斜率的 SE 同比例放大, 斜率的 t 統計量也不變(下一節結尾的標準誤 QUIZ 會再考一次換單位)。 會變的是截距:平移 c 之後 $\hat\beta_0'$ 代表另一個位置的平均,它的 t 檢定問的是另一個問題。 所以在多元迴歸裡不能拿係數大小比較變數重要性;P05 的收合盒會談中心化如何改變截距與交互作用主效應的意義。 對 y 做線性變換 $y'=ay+b$ 同理,擬合值變成 $\hat y'=a\hat y+b$。

證明:線性重新參數化不改變擬合值

令 $x_i'=(x_i-c)/s$,$s\ne0$。則 $\bar x'=(\bar x-c)/s$、$x_i'-\bar x'=(x_i-\bar x)/s$,代入最小平方解:

$$\hat\beta_1'=\frac{\sum_i (x_i'-\bar x')(y_i-\bar y)}{\sum_i (x_i'-\bar x')^2} =\frac{\frac1s\sum_i (x_i-\bar x)(y_i-\bar y)}{\frac1{s^2}\sum_i (x_i-\bar x)^2}=s\,\hat\beta_1,\qquad \hat\beta_0'=\bar y-\hat\beta_1'\bar x'=\bar y-\hat\beta_1(\bar x-c)=\hat\beta_0+c\,\hat\beta_1.$$

於是 $\hat\beta_0'+\hat\beta_1'x_i'=\hat\beta_0+c\hat\beta_1+s\hat\beta_1\cdot\frac{x_i-c}{s}=\hat\beta_0+\hat\beta_1x_i=\hat y_i$。 擬合值逐筆相同,殘差、RSS、TSS、R² 與 RSE 因此相同。 標準誤 $\mathrm{SE}(\hat\beta_1')=\hat\sigma/\sqrt{\sum(x_i'-\bar x')^2}=|s|\,\mathrm{SE}(\hat\beta_1)$,與係數同比例放大; $s\gt0$ 時斜率的 t 統計量不變,$s\lt0$ 時只換正負號。截距的 t 統計量一般會變,因為 $\hat\beta_0'=\hat\beta_0+c\hat\beta_1$ 檢定的是另一個位置的平均。

矩陣版更短:任何可逆的線性重新參數化 $X'=XA$(A 可逆)有相同欄空間, 擬合值 $\hat y=X(X^TX)^{-1}X^Ty$ 只依賴欄空間,故不變;係數換成 $\hat\beta'=A^{-1}\hat\beta$。 對 y 作 $y'=ay+b$ 時,含截距的模型把 b 吸進截距欄,得 $\hat y'=a\hat y+b$。

拖動下面元件中的任何一個點,係數、RSS、R² 全部即時重算。 先預測「把最右邊那個點往上拖,斜率會怎麼變」,再動手驗證。

可拖動的觀測值最小平方線殘差(要平方後相加)展開 RSS 計算細節可調整的試探線
›拖動任何一個藍點,係數與 RSS 會即時重算。灰紫色虛線是殘差。
概念示意
即時最小平方解
$\hat\beta_0$(截距)—
$\hat\beta_1$(斜率)—
RSS—
RSE—
R²—
$\mathrm{{SE}}(\hat\beta_1)$—
$t=\hat\beta_1/\mathrm{{SE}}(\hat\beta_1)$—
怎麼玩
用滑鼠或手指直接把點拖走。三件事值得試:
① 把某一點往上下拖 → 看 RSS 怎麼跳;
② 把最右邊那點上下拖 → 斜率動得比拖中間的點厲害得多:它離 $\bar x$ 最遠、權重 $w_i$ 最大,這也是 P06「高槓桿點」的預告;
③ 把所有點排成一條線 → RSS 趨近 0、R² 趨近 1。
對照課本 ISLP 圖 3.1
ISLP 圖 3.1 是同一件事的 Advertising 版本:sales 對 TV 的最小平方線是 $\hat\beta_0 = 7.03$、$\hat\beta_1 = 0.0475$。斜率的意思是「TV 預算多花 1000 美元,平均多賣約 47.5 單位」。
計算細節:RSS 參數曲面與最小平方解

接著把同一件事換個角度看。上面那張圖的橫軸是 x、縱軸是 y; 下面這張圖的兩個軸都是參數:橫軸 β₀、縱軸 β₁, 每一個點代表「一組候選的係數」,等高線代表「這組係數的 RSS 有多大」。 這就是老師 FAQ 裡問的誤差曲面(error surface):

$$\mathrm{RSS}(\beta_0, \beta_1) = \mathrm{RSS}_{\min} + n(\beta_0-\hat\beta_0)^2 + 2\left(\textstyle\sum_i x_i\right)(\beta_0-\hat\beta_0)(\beta_1-\hat\beta_1) + \left(\textstyle\sum_i x_i^2\right)(\beta_1-\hat\beta_1)^2$$

這條式子精確描述 RSS,推導只用到最小平方解的兩個性質 $\sum e_i = 0$ 與 $\sum e_i x_i = 0$。它是 β 的二次式, 當 x 不全相同時,誤差曲面是一個碗、等高線是同心橢圓、最小點唯一。 下面的等高線就是照這條式子畫的,而且會跟著上面那張圖的點一起變。

›橘點在碗底時 RSS 最小。推滑桿讓它離開,看 RSS 上升多少倍。
β₀ 偏移0.00
β₁ 偏移0.00
概念示意
目前的參數點
β₀—
β₁—
RSS—
RSS / RSS 最小值—
最小點 $(\hat\beta_0, \hat\beta_1)$—
怎麼看這張圖
紅點是最小平方解(碗底),橢圓上的標籤是 RSS 相對於最小值的倍數。推滑桿讓橘點離開碗底,看它跨過幾條等高線,同時上面那張圖會出現一條綠色虛線,那就是這組係數畫出來的線。橢圓是斜的:β₀ 猜大一點時 β₁ 要猜小一點才補得回來,這就是 $\hat\beta_0$ 與 $\hat\beta_1$ 負相關的意思。
課本的版本 ISLP 圖 3.2
ISLP 圖 3.2 用 Advertising 的 sales~TV 畫同一張圖:最小點在 $\hat\beta_0 = 7.0326$、$\hat\beta_1 = 0.0475$,RSS 最小值 = 2102.53。課本畫的等高線標了 2.11、2.15、2.2、2.3、2.5、3(單位是千),對應的就是這裡的倍數。
觀念釐清
Q:誤差曲面(error surface)到底是什麼?為什麼線性迴歸不用梯度下降?

把損失函數看成參數的函數,畫出來就是誤差曲面。座標軸是參數 β₀ 與 β₁,曲面的高度是這組參數在資料 x 與 y 上得到的 RSS。等高線上的每一點 RSS 相同,最佳化就是從某個起點往下走到最低點。

線性迴歸的 RSS 是 β 的凸二次函數。上面那條精確式子就是證據,所以它只有一個最低點,而且對 β 微分等於零後是一組線性方程(正規方程 $X^\top X\beta = X^\top y$)。既然線性方程有封閉解 $\hat\beta = (X^\top X)^{-1}X^\top y$,就沒有必要用梯度下降一步一步爬。

那什麼時候才需要反覆更新參數?① 損失函數不是二次式(邏輯斯迴歸、SVM、神經網路);② n 或 p 太大,$X^\top X$ 這個 $(p+1) \times (p+1)$ 矩陣算不動或存不下;③ 加了不可微的懲罰項(lasso,第 6 章)。這時候才輪到梯度下降、牛頓法、座標下降上場。

Q:迴歸裡的 X 到底是隨機變數還是常數?

看情境,而且兩種寫法的結論幾乎一樣。

實驗設計裡 x 是我們自己設定的(施肥 0、5、10 公斤),把它當常數很自然,模型寫成 $Y \sim N(\beta_0+\beta_1 X,\ \sigma^2)$。觀察性研究裡 x 是跟著樣本一起抽到的(某個市場剛好花了 230.1 千美元),它本來就是隨機的,這時模型要寫成條件分佈 $Y \mid X \sim N(\beta_0+\beta_1 X,\ \sigma^2)$。

為什麼結論一樣?因為我們關心的一直是條件期望 $E[Y \mid X]$——在均方誤差下它就是最好的預測。所有的推論(SE、t、F)都是「固定住觀測到的那組 x」之後做的,也就是條件在 X 上。所以課本裡 SE 的公式長得跟「x 是常數」一樣,這些式子都以觀測到的 x 為條件;在隨機設計中,x 本身仍是隨機的。

差別會在哪裡冒出來?當你想推廣到「新的 x 分佈」時。訓練資料的 x 集中在 0–300,硬要拿去預測 x = 1000 的市場,模型沒有任何資訊支撐。這叫外推(extrapolation),跟 x 是不是隨機無關,但正是因為 x 有它自己的分佈,這件事才需要被提醒。

證明:最小平方解、殘差正交與 RSS 曲面

對 $L=\sum_i(y_i-b_0-b_1x_i)^2$ 微分,得到 $\sum_i(y_i-b_0-b_1x_i)=0$ 與 $\sum_ix_i(y_i-b_0-b_1x_i)=0$。第一式給 $b_0=\bar y-b_1\bar x$;代回第二式並利用中心化和為零:

$$b_1\sum_i(x_i-\bar x)^2=\sum_i(x_i-\bar x)(y_i-\bar y).$$

只要 x 不全相同,分母為正,就得到正文斜率與截距。矩陣版令 X 含截距欄,梯度為 $-2X^T(y-Xb)$,所以 $X^TX\hat\beta=X^Ty$。X 滿欄秩時 $X^TX$ 正定,唯一解為 $(X^TX)^{-1}X^Ty$。

令 $e=y-X\hat\beta$,normal equations 給 $X^Te=0$,故對任意 $d=b-\hat\beta$:

$$\|y-Xb\|^2=\|e-Xd\|^2=\|e\|^2+d^TX^TXd.$$

交叉項為零,因此最小值確在 $d=0$;展開二維二次型便是正文 RSS 等高線公式。若 X 不滿秩,擬合值仍是 y 在欄空間的唯一投影,但係數未必唯一,不能直接取逆矩陣。

完整實作:手動建模型矩陣 → sm.OLS → summarize

講義完整實作:建立並擬合 OLS 模型

講義 03 · 手動建模型矩陣 → sm.OLS → summarize
X = pd.DataFrame({'intercept': np.ones(Boston.shape[0]), 'lstat': Boston['lstat']}) X[:4] y = Boston['medv'] model = sm.OLS(y, X) # Intercept is not included https://www.statsmodels.org/stable/generated/statsmodels.regression.linear_model.OLS.html results = model.fit() summarize(results)
預期輸出
              coef  std err       t  P>|t|
intercept  34.5538    0.563  61.415    0.0
lstat      -0.9500    0.039 -24.528    0.0

lab 用 Boston 的 medv(房價中位數)對 lstat(低社經地位家庭百分比)示範。注意兩件事:① sm.OLS() 不會自己加截距,所以要手動放一欄全是 1 的 intercept;② sm.OLS() 只是指定模型,真正擬合的是 .fit()。斜率 −0.95 的意思是「lstat 每高 1 個百分點,medv 平均低 0.95 千美元」。

來源:Ch03-linreg-lab-zh.ipynb
QUIZ · 最小平方法

把資料裡某一個點沿著垂直方向往上移動,最小平方線一定會怎麼變?

(A) 只有截距會變,斜率不變
(B) 線不會變,因為最小平方法對單一個點不敏感
(C) 整條線會往那個點的方向轉/移,而且那個點離 $\bar x$ 愈遠、影響愈大
延伸閱讀:固定設計與隨機解釋變數

解釋變數一定要是隨機變數嗎?

實驗可由研究者固定輸入值,例如指定不同施肥量;觀察資料的輸入則可以是隨機抽到的。 兩種情況都可分析。對隨機 X,先給定實際觀察到的 X,使用 $E(\varepsilon\mid X)=0$ 及條件共變異數假設推導。 稱 X 為「independent variable」不代表各個解釋變數互相獨立,也不代表 Y 與 X 獨立。

常態線性模型的誤差可獨立同分布,但各筆 Y 的平均隨 x 改變,所以 Y 通常不是同分布。 在固定 σ 的 Gaussian 概似中,最大化係數概似等價於最小化 RSS;若連 σ 也估計,完整對數概似仍須保留 $-n\log\sigma$ 項。

PART 02 · 係數的不確定性

SE、信賴區間與 t 檢定:這個斜率可信嗎 教科書 · 第 3.1.2 節、3.2.2講義 03

$\hat\beta_1 = 0.0475$ 這個數字,可信嗎?先弄清楚在問什麼。P01 的模型說真實世界裡有一條看不到的 母體迴歸線(population regression line)

$$Y = \beta_0 + \beta_1 X + \varepsilon$$

標準誤與區間還不熟時,可先複習 S4 的標準誤與 信賴區間。

我們只有一份樣本,用它算出來的是最小平方線;換一份樣本,就會得到另一條。 把「換樣本」這件事想成可以重複做很多次:每一次都得到一個 $\hat\beta_1$,這些值排成的分布叫做 抽樣分布(sampling distribution)。估計量是樣本的函數,樣本會變,估計量就有自己的分布; 下面元件下方的直方圖畫的就是它。抽樣分布回答兩個問題:中心在哪裡(有沒有偏)、散得多開(估得準不準)。

中心先講。$\hat\beta_1$ 可以整理成 y 的線性組合:

$$\hat\beta_1=\sum_{i=1}^{n}c_i\,y_i,\qquad c_i=\frac{x_i-\bar x}{S_{xx}},\quad S_{xx}=\sum_{j=1}^{n}(x_j-\bar x)^2$$

係數 $c_i$ 只跟 x 有關,而且 $\sum_i c_i=0$、$\sum_i c_ix_i=1$。 把 $y_i=\beta_0+\beta_1x_i+\varepsilon_i$ 代進去,$\beta_0$ 那一項被 $\sum c_i=0$ 消掉、 $\beta_1$ 那一項被 $\sum c_ix_i=1$ 留下,得到 $\hat\beta_1=\beta_1+\sum_i c_i\varepsilon_i$。 在 LINE 的線性假設加上 $E[\varepsilon\mid X]=0$ 下,最小平方估計無偏: 抽樣分布的中心就在 $\beta_1$。不過單獨一條線仍可能偏離母體迴歸線不少,而我們手上就只有一條。

散得多開?這就是標準誤(standard error)要量的東西,也就是抽樣分布的標準差。 由 $\hat\beta_1-\beta_1=\sum_i c_i\varepsilon_i$,用 I 與 E(誤差不相關、同變異 $\sigma^2$)算變異數, $\mathrm{Var}(\hat\beta_1)=\sigma^2\sum_i c_i^2=\sigma^2/S_{xx}$:

$$\mathrm{SE}(\hat\beta_1)^2 = \frac{\sigma^2}{\sum_{i=1}^{n}(x_i-\bar x)^2}, \qquad \mathrm{SE}(\hat\beta_0)^2 = \sigma^2\left[\frac{1}{n} + \frac{\bar x^2}{\sum_{i=1}^{n}(x_i-\bar x)^2}\right]$$

第一條式子把「什麼會讓斜率估得準」講完了: 雜訊 σ² 小、樣本多、x 散得開。σ² 通常不知道, 就用殘差算出的 RSE² 估計(下一節會定義 RSE)。下面的示意圖讓你觀察重複抽樣時,估計出的迴歸線如何改變, 下方的直方圖就是 $\hat\beta_1$ 的抽樣分布:

圖表需要連網載入 Chart.js。此圖是 β̂₁ 的抽樣分布:重複抽樣時斜率估計值的散布,標準誤就是它的標準差。
›按「抽一次」觀察估計的變動,或多次抽樣查看斜率分布。
概念示意
抽樣示意 示意
已畫出的迴歸線0
為什麼要看這張圖 ISLP 圖 3.3 右
SE 描述重複抽樣時,估計出的係數會散開多少。你手上只有一條線,永遠不知道它偏了多少;但公式可以告訴你「換一份訓練資料,估計會如何變動」。每條線代表一次重新抽樣後的估計;下圖把這些斜率排成直方圖,就是抽樣分布,它的中心在母體斜率、寬度由 SE 決定。
計算細節:斜率估計是 y 的線性組合,所以服從常態

P01 的 N 假設到這裡才派上用場。若 $\varepsilon_i$ 獨立且服從 $N(0,\sigma^2)$,則每個 $y_i$ 是獨立的常態變數, 而獨立常態變數的線性組合仍是常態。所以

$$\hat\beta_1=\sum_i c_i\,y_i\ \sim\ N\!\left(\beta_1,\ \frac{\sigma^2}{S_{xx}}\right),\qquad \frac{\hat\beta_1-\beta_1}{\sigma/\sqrt{S_{xx}}}\sim N(0,1).$$

這就是 $\hat\beta_1$ 抽樣分布的完整形狀,不只是中心與標準差。母體 σ 不知道,換成殘差算出的 RSE 之後, 分母多了一個獨立的 $\sqrt{\chi^2_{n-2}/(n-2)}$:常態模型下 $\mathrm{RSS}/\sigma^2$ 服從 $\chi^2_{n-2}$ 且與 $\hat\beta$ 獨立 (矩陣版證明見下方「係數共變異數與 CI/PI」),比值變成自由度 n−2 的 t 分布:

$$\frac{\hat\beta_1-\beta_1}{\mathrm{SE}(\hat\beta_1)}\sim t_{n-2},\qquad \mathrm{SE}(\hat\beta_1)=\frac{\mathrm{RSE}}{\sqrt{S_{xx}}}.$$

信賴區間就是把這句話反過來讀:這個比值有 95% 的機率落在 $\pm t_{0.975,\,n-2}$ 之間,整理成 $\beta_1$ 的範圍,得到

$$\hat\beta_1\pm t_{0.975,\,n-2}\,\mathrm{SE}(\hat\beta_1).$$

n 超過約 30 之後 $t_{0.975,\,n-2}$ 已經接近 1.96,所以講義直接寫成 $\hat\beta_1\pm2\,\mathrm{SE}(\hat\beta_1)$。 t 檢定則是把 $\beta_1=0$ 代進同一個比值:$t=\hat\beta_1/\mathrm{SE}(\hat\beta_1)$ 讀作「$\hat\beta_1$ 離 0 有幾個標準誤」, $H_0$ 成立時它服從 $t_{n-2}$,所以 |t| 超過 2 左右就落在 5% 的尾巴外。 沒有常態假設時,這個比值在大樣本下仍近似常態(中央極限定理),小樣本則沒有精確的 t 分布。

有了 SE,兩個標準工具就出來了。95% 信賴區間:

$$\hat\beta_1 \pm t_{0.975,\,n-2} \cdot \mathrm{SE}(\hat\beta_1) \;\approx\; \hat\beta_1 \pm 2\,\mathrm{SE}(\hat\beta_1)$$

以及假設檢定。虛無假設 $H_0: \beta_1 = 0$(X 與 Y 沒有關係)對上 $H_a: \beta_1 \neq 0$,檢定統計量是

$$t = \frac{\hat\beta_1 - 0}{\mathrm{SE}(\hat\beta_1)}$$

它衡量「$\hat\beta_1$ 離 0 有幾個標準誤」。$H_0$ 成立時 t 服從自由度 n − 2 的 t 分佈(為什麼是 t 分布,見上方收合的「線性組合」推導), n 大於約 30 之後跟標準常態幾乎一樣,所以 |t| 超過大約 2 就對應 5% 的顯著水準。 p 值是「假設 $H_0$ 為真,看到這麼極端或更極端的 t 的機率」。 注意它不是「$H_0$ 為真的機率」。

Advertising 的三個單變數迴歸係數SEtp 值出處
sales ~ TV 的截距7.03260.457815.36< 0.0001表 3.1
sales ~ TV 的 TV0.04750.002717.67< 0.0001表 3.1
sales ~ radio 的 radio0.20250.02049.92< 0.0001表 3.3 上
sales ~ newspaper 的 newspaper0.05470.01663.300.00115表 3.3 下

三個單獨看都顯著——包含 newspaper。 P04 會比較這一列在多元迴歸中的變化。課本的 β₀ 信賴區間是 [6.130, 7.935]、 β₁ 是 [0.042, 0.053]:「完全不打廣告時,銷售量平均落在 6130 到 7935 單位之間」。

信賴區間與預測區間:兩個問題、兩種寬度

同一個 $x_0$,模型給出同一個點估計 $\hat y_0=\hat\beta_0+\hat\beta_1x_0$,但它可以回答兩個不同的問題:

講義的簡單迴歸公式把差別寫得很清楚,兩式只差根號裡多了一個 1 (講義把上尾臨界值記成 $t_{\alpha/2}$,本頁統一寫成累積分位數 $t_{1-\alpha/2,\,n-2}$,是同一個正數):

$$\text{CI}:\ \hat y_0\pm t_{1-\alpha/2,\,n-2}\,\hat\sigma\sqrt{\frac1n+\frac{(x_0-\bar x)^2}{S_{xx}}},\qquad \text{PI}:\ \hat y_0\pm t_{1-\alpha/2,\,n-2}\,\hat\sigma\sqrt{1+\frac1n+\frac{(x_0-\bar x)^2}{S_{xx}}}$$
信賴區間(CI)預測區間(PI)
回答的問題$X=x_0$ 時 Y 的平均在哪裡一個新個體的 Y 在哪裡
包含的不確定性只有估計 f 的誤差(可縮減)估計 f 的誤差+個體自己的 ε(不可縮減)
寬度較窄;在 $\bar x$ 最窄,往兩側張開一定較寬;同樣在 $\bar x$ 最窄
n 變大時縮到 0:平均可以估到任意準不會縮到 0:最窄也約 $\pm2\sigma$

用教材的數字對照。lab 用 Boston 的 medv 對 lstat, 在 lstat = 10 這一點預測值是 25.05, CI 是 (24.47, 25.63),PI 是 (12.83, 37.28),程式在下方「完整實作」。 課本的 Advertising 版本:TV 花 100,000 美元、radio 花 20,000 美元時預測銷售 11,256 單位, CI 是 [10,985, 11,528],PI 是 [7,930, 14,580]。兩個區間中心相同,PI 寬了好幾倍, 因為市場與市場之間的 ε 遠比「平均線估不準」大得多。下面的示意元件讓你調 n 與 σ, 看兩條帶各自怎麼變:

信賴區間(平均反應)預測區間(新觀測)最小平方線
›推 n 的滑桿:CI 帶會變窄,PI 帶幾乎不變。
n40
σ2.5
概念示意
在 x 的平均這一點
n—
RSE(估計的 σ)—
CI 半寬—
PI 半寬—
PI 半寬 ÷ CI 半寬—
怎麼看這張圖
深藍帶是 CI、淡綠帶是 PI,兩條都在 $\bar x$ 最窄、往兩側張開。
① 把 n 拉大:CI 明顯變窄,PI 幾乎不動,因為個體的 ε 不會因為樣本多而變小;
② 把 σ 拉大:兩條都變寬,但 PI 寬得多;
③ 按「重抽一次」:換一份樣本,線與帶都會動,這就是 P02 開頭的抽樣變動。
對照教材 講義 03
講義的兩條公式只差根號裡的 1;課本 Advertising 的 CI [10,985, 11,528] 與 PI [7,930, 14,580] 中心同為 11,256。
完整實作:print(results.summary()):一次看完 SE、t、p、信賴區間、F、R²

講義完整實作:完整摘要與兩種區間

講義 03 · print(results.summary()):一次看完 SE、t、p、信賴區間、F、R²
print(results.summary())

完整結果可在原課程 Lab 查閱。

來源:Ch03-linreg-lab-zh.ipynb
講義 03 · 信賴區間 vs 預測區間
new_df = pd.DataFrame({'lstat':[5, 10, 15]}) newX = design.transform(new_df) newX new_predictions = results.get_prediction(newX) new_predictions.predicted_mean new_predictions.conf_int(alpha=0.05) new_predictions.conf_int(obs=True, alpha=0.05)
預期輸出
array([[17.56567478, 42.04151344],
       [12.82762635, 37.27906833],
       [ 8.0777421 , 32.52845905]])

在 lstat = 10 這一點,預測值都是 25.05,但:信賴區間 (24.47, 25.63) 問的是「所有 lstat = 10 的社區,平均 medv 是多少」;預測區間 (12.83, 37.28) 問的是「某一個 lstat = 10 的社區,medv 是多少」。後者寬得多,因為它還要算進個別觀測值自己的隨機誤差 ε。conf_int(obs=True) 就是切換這兩者的開關。

來源:Ch03-linreg-lab-zh.ipynb

本節的 t 推論與兩種區間,用的正是 P01 列出的 LINE 假設(線性條件平均、獨立常態且同變異的誤差),再加上滿欄秩與正殘差自由度;只有計算最小平方係數本身不需要常態假設。

QUIZ · 標準誤

同一份資料,你把預測變數 x 的單位從「元」換成「千元」(也就是全部除以 1000)。$\hat\beta_1$ 與它的 t 統計量會怎麼變?

(A) $\hat\beta_1$ 變成 1000 倍,SE 不變,所以 t 也變成 1000 倍
(B) 兩個都不變,因為線性迴歸對單位免疫
(C) $\hat\beta_1$ 變成 1000 倍,$\mathrm{{SE}}(\hat\beta_1)$ 也變成 1000 倍,t 完全不變
延伸閱讀:用 bootstrap 建立曲線區間

用 bootstrap 建立迴歸曲線的信賴區間

若觀測對 $(x_i,y_i)$ 是獨立同分佈,可有放回地抽 n 對資料,重新擬合迴歸,並在同一組固定 x 網格預測。 重複 B 次後,在每個網格點取預測分佈的 2.5% 與 97.5% 分位數,就得到逐點的近似 95% percentile 信賴區間。 它描述平均反應曲線的估計不確定性,沒有自動包含新觀測的誤差,也不是整條曲線同時被涵蓋的 95% 保證。 固定設計或有時間相依的資料須另選適合的重抽方式;自助法的抽樣單位要配合研究設計。 重抽樣章進一步說明標準誤、信賴區間與預測區間的差別。

計算細節:係數共變異數與 CI/PI

公式的條件與平均反應/新觀測

以下給定滿欄秩 X,包含截距及 p 個預測變數,n>p+1;誤差條件平均為零、共變異數為 $\sigma^2I$。係數共變異數為 $\sigma^2(X^TX)^{-1}$。再加常態誤差,才有有限樣本精確 t 與 F 分布。

$$s^2=\frac{\mathrm{RSS}}{n-p-1},\quad \widehat{SE}(\hat\beta_j)=s\sqrt{[(X^TX)^{-1}]_{jj}}.$$

新輸入向量 $x_0$ 包含開頭的 1,令 $h_0=x_0^T(X^TX)^{-1}x_0$。在上述常態模型下:

$$\text{平均反應 CI}:\quad x_0^T\hat\beta\pm t_{1-\alpha/2,n-p-1}s\sqrt{h_0},$$ $$\text{獨立新觀測 PI}:\quad x_0^T\hat\beta\pm t_{1-\alpha/2,n-p-1}s\sqrt{1+h_0}.$$

兩個區間的中心相同;預測一個新觀測還要包含它本身的雜訊。

證明:係數變異、自由度與兩種區間

代入 $y=X\beta+\varepsilon$,有 $\hat\beta-\beta=(X^TX)^{-1}X^T\varepsilon$,所以期望為零、共變異數為 $\sigma^2(X^TX)^{-1}$。簡單迴歸中令 $S_{xx}=\sum_i(x_i-\bar x)^2$,可得 $\hat\beta_1-\beta_1=\sum_i(x_i-\bar x)\varepsilon_i/S_{xx}$,變異數為 $\sigma^2/S_{xx}$;截距的變異數為 $\sigma^2(1/n+\bar x^2/S_{xx})$。

帽子矩陣 $H=X(X^TX)^{-1}X^T$ 對稱且冪等,秩為 p+1。殘差為 $(I-H)\varepsilon$,故 $E[\mathrm{RSS}]=\sigma^2\operatorname{tr}(I-H)=(n-p-1)\sigma^2$。常態誤差經正交座標變換後,RSS 除以 $\sigma^2$ 是 n−p−1 個獨立標準常態平方和;投影 H 與 I−H 的座標獨立。因此標準常態係數誤差除以獨立的 $\sqrt{\chi^2_\nu/\nu}$,得到 t 分布。

$x_0^T(\hat\beta-\beta)$ 的變異數為 $\sigma^2h_0$。對新觀測 $Y_0=x_0^T\beta+\varepsilon_0$,獨立的 $\varepsilon_0$ 再增加 $\sigma^2$,預測誤差變異成為 $\sigma^2(1+h_0)$。分別用 s 取代 σ 並套 t 分位數,便得到兩種區間。

PART 03 · 模型準確度

RSE 與 R²:擬合得好不好 教科書 · 第 3.1.3 節講義 03

檢定過關(「有關係」)之後,下一個問題是「擬合得多好」。 兩個常用的量,一個有單位、一個沒有。

殘差標準誤(residual standard error)估的是誤差標準差 σ, 單位跟 y 一樣:

$$\mathrm{RSE} = \sqrt{\frac{\mathrm{RSS}}{n-p-1}} \qquad(\text{簡單線性迴歸的 } p = 1,\ \text{分母是 } n-2)$$

Advertising 用三個媒體的模型 RSE = 1.69,而 sales 的平均是 14.02—— 相對誤差大約 12%。這個「12%」用銷售量的尺度呈現誤差大小。

R² 把它換成無單位的比例。先定義總平方和 $\mathrm{TSS} = \sum(y_i - \bar y)^2$(完全不看 x、只用 $\bar y$ 猜的誤差),則

$$R^2 = \frac{\mathrm{TSS} - \mathrm{RSS}}{\mathrm{TSS}} = 1 - \frac{\mathrm{RSS}}{\mathrm{TSS}}$$

讀作「y 的變異有多少比例被模型解釋掉了」。簡單線性迴歸時還有一個關係: $R^2$ 恰好等於 x 與 y 相關係數的平方(這是 ISLP 3.7 第 7 題)。 多元迴歸時它等於 $\mathrm{Cor}(Y, \hat Y)^2$。

Advertising 上的模型RSS自由度 n−p−1RSER²
只用 TV2102.531983.2590.6119
TV + radio556.911971.6810.8972
三個媒體都放556.831961.6860.8972
只用 radio3618.481984.2750.3320
只用 newspaper5134.801985.0930.0521
什麼都不放(只有截距)5417.151995.2180.0000
比較這張表的第 2 列與第 3 列 加入 newspaper 之後: RSS 從 556.91 只掉到 556.83(幾乎沒動,但它不可能上升, 這是數學上的必然);R² 只升了一點點,四捨五入後仍顯示 0.8972; 可是 RSE 反而從 1.681 上升到 1.686。
為什麼?因為 RSE 的分母是 n − p − 1:分子幾乎不動,分母卻從 197 掉到 196。 「多加一個沒用的變數要付代價」這件事,R² 看不到,RSE 看得到。 第 6 章的 Cp、AIC、BIC、調整後 R² 全都是在把這個代價算得更精細。

所以請記住這個性質:在同一訓練集上比較含截距的巢狀最小平方模型時, R² 不會因為加變數而下降, 因此它不能用來比較變數個數不同的模型。要比,就要用會罰複雜度的指標, 或者乾脆用第 5 章的交叉驗證去估測試誤差。

觀念釐清
Q:R² 有可能是負的嗎?

用含截距的最小平方法擬合在同一份資料上時,不可能。因為「只用 $\bar y$ 猜」本身就是這個模型的一個特例($\hat\beta_1 = 0$),而最小平方法挑的是 RSS 最小的那組,所以一定 RSS ≤ TSS,於是 $R^2 \ge 0$。

但下面三種情況它真的會變成負的:

  • 模型沒有截距項:這時「只用 $\bar y$ 猜」($\hat y_i=\bar y$)不再是可選的方案,擬合出來的過原點直線可能比水平線 $\bar y$ 還差。順帶一提,這也是為什麼 sm.OLS() 不自動加截距是個容易忽略的地方。
  • 在測試資料上算 R²:$1 - \mathrm{RSS}_{\text{test}}/\mathrm{TSS}_{\text{test}}$ 完全可以是負的,意思是「你的模型在這批測試資料上,比直接猜這批測試反應值的平均還差」。sklearn 的 .score() 就是這樣算的,看到負值不要以為程式壞了。
  • 係數不是用最小平方在這份資料上擬合的(手動指定、別人給的模型、換了目標函數且截距也被懲罰):沒有「RSS 已被最小化」這個保證。標準的 ridge/lasso 截距不受懲罰,訓練 R² 仍不會是負的。

看到負的 R²,正確的反應是:這個模型比「什麼都不學」還糟,回頭檢查有沒有截距、有沒有算錯資料集、或者根本選錯了模型。

本節 0≤R²≤1 與相關係數平方的性質,使用含截距、在訓練資料上做普通最小平方的設定;任意預測或測試資料的 R² 可以為負。判斷預測好壞仍要使用獨立資料。

QUIZ · R² 與 RSE

你在模型裡加了一個完全隨機、跟 y 無關的變數。訓練資料上會發生什麼?

(A) R² 與 RSE 都會變差,因為變數沒有用
(B) R² 一定上升(或不變),RSE 通常上升
(C) 兩個都不變,因為最小平方法會自動把它的係數設成 0
計算細節:R² 與相關係數的反例

相關係數平方不能取代任意預測的 R²

含截距的訓練 OLS,且 y 與擬合值都有非零變異時,$R^2=\operatorname{Cor}(y,\hat y)^2$。 但對任意預測向量、測試集預測或把觀測與預測互換,這個等式不一定成立。 相關係數不會因預測整體平移而改變,但對原觀測的平方誤差會改變。 排序與方向完全一致,仍可能每筆都偏高 10;R² 的誤差定義會看見這個偏移。

PART 04 · 多元迴歸與 F 檢定

同時放進多個變數:F 檢定在問什麼 教科書 · 第 3.2 節講義 03

三個媒體要不要各擬合一條簡單迴歸,然後把結論拼起來?不行。 三條線各自忽略了另外兩個變數,而且沒辦法拿一組預算去預測銷售量。 正確的做法是讓每個變數都有自己的斜率:

$$Y = \beta_0 + \beta_1 X_1 + \beta_2 X_2 + \cdots + \beta_p X_p + \varepsilon$$

多元迴歸的係數應這樣解讀:控制模型中的其他變數後,Xⱼ 增加一單位時, Y 的條件平均相差 βⱼ。這是模型中的條件關聯或預測差; 沒有因果研究設計與額外假設時,不能解讀成介入 Xⱼ 所造成的效果。同樣用最小平方法最小化

$$\mathrm{RSS} = \sum_{i=1}^{n} \left(y_i - \hat\beta_0 - \hat\beta_1 x_{i1} - \cdots - \hat\beta_p x_{ip}\right)^2$$

寫成矩陣就是一行。這也是本頁標題那條式子:

$$\hat\beta = (X^\top X)^{-1} X^\top y$$

接著是第一個問題:「至少有一個變數有用嗎」。 虛無假設是 $H_0: \beta_1 = \beta_2 = \cdots = \beta_p = 0$,用 F 檢定:

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

$H_0$ 為真時分子與分母的期望值都是 σ²,所以 F 應該在 1 附近; $H_a$ 為真時分子會變大,F 就明顯大於 1。多大才算大?取決於 n 與 p, 交給軟體算 p 值。下表列出講義與課本的完整係數表,包含各變數的 t 值。

三個媒體都放進去(ISLP 表 3.4/3.6)係數SEtp 值95% CI
截距2.93890.31199.42< 0.0001(2.324, 3.554)
TV0.04580.001432.81< 0.0001(0.043, 0.049)
radio0.18850.008621.89< 0.0001(0.172, 0.206)
newspaper−0.00100.0059−0.180.8599(−0.013, 0.011) 含 0

整體 F = 570.3、R² = 0.8972、 RSE = 1.686。VIF 分別是 1.005、1.145、1.145,所以 newspaper 不顯著不是 共線性把 SE 撐大造成的(對照 P06 的 Credit 例子就知道差別)—— 是它的資訊真的被 radio 蓋掉了。

觀念釐清
Q:為什麼 newspaper 在單變數迴歸顯著,在多變數迴歸就不顯著了?

因為兩個迴歸問的是不同的問題。

單變數迴歸的係數回答:「只看 newspaper 這一欄,它跟 sales 有沒有線性關聯?」多變數迴歸的係數回答:「在 TV 與 radio 都已知的情況下,再多知道 newspaper 有沒有幫助?」第二個問題嚴格得多。

機制就在相關矩陣裡:corr(radio, newspaper) = 0.354,報紙預算高的市場,廣播預算通常也高。一個說得通的故事是中介(mediation):行銷部門先決定報紙預算,廣播預算跟著報紙預算走,而真正帶動銷售的是廣播。

newspaperradiosales

在這個結構裡,newspaper 對 sales 沒有直接效果,但透過 radio 有間接效果。單變數迴歸看到的是總效果(間接那條路還開著),所以顯著;把 radio 放進模型等於把那條路堵住,剩下的直接效果是 0,係數就掉到 0 附近。注意這裡的「newspaper 沒用」只是「控制 radio 之後沒有額外貢獻」,它的總效果並不是 0:若減少報紙預算,廣播預算也會跟著減少,銷售照樣受影響。

另一個同樣說得通的故事是混淆(confounding):有一個共同原因,例如市場規模或整體行銷預算,同時推高廣播與報紙的花費,而只有廣播帶動銷售。

預算/規模newspaperradiosales

這時 newspaper 與 sales 的關聯完全是假象:它們只是共用一個上游原因。混淆變數是那個共同原因,不是 radio;radio 只是剛好坐在那條後門路徑上,所以控制它也能把假關聯關掉。

迴歸分不出這兩個故事。兩種結構都會產生「單變數顯著、加入 radio 後歸零」的同一組係數表;newspaper 是否真的影響銷售,要靠研究設計(例如隨機分配預算)或額外的因果假設才能回答。這正是講義結尾提醒的:觀察資料上應避免因果宣稱。其他結構也可能出現相反方向的變化:$X_j$ 單獨看不顯著、控制別的變數後才顯著(壓抑效應)。所以「單變數篩選再進多變數模型」是個危險的習慣。

講義補充連結:冰淇淋銷量與鯊魚出沒的漫畫是「相關不等於因果」的經典例子。

另一個常見但不同的成因是共線性:$X_j$ 真的有用,只是它跟別的變數太像,SE 被膨脹到檢不出來(P06 的 Credit limit/rating)。分辨方法:看 VIF。這裡 newspaper 的 VIF 只有 1.145,不能把不顯著歸因於高共線性;但低 VIF 也不能分辨上面的中介與混淆結構。

Q:有了 t 檢定,為什麼還要 F 檢定?

因為多重比較。單一個 t 檢定在 α = 0.05 下有 5% 的機率誤判;但如果你有 100 個變數、逐一做 t 檢定,即使它們全部無用,預期也會冒出 100 × 0.05 = 5 個「顯著」。看到 5 個顯著就宣布發現,等於在報告雜訊。

F 檢定一次檢定全體:$H_0$ 是所有係數同時為 0。它的分佈已經把 p 個變數的維度算進去了,在模型假設成立、顯著水準為 0.05 時,整體 F 的第一型錯誤率仍是 5%,而不是 0。

可以先看 F 了解整體證據,再研究個別係數,但先通過 F 不等於完成個別檢定的多重比較校正。若同時探索許多變數,仍須處理假發現問題;事前指定的一個係數檢定,則與探索後挑最小 p 值不同。

還有一個 t 做不到的用途:F 可以檢定一組係數($H_0: \beta_{p-q+1} = \cdots = \beta_p = 0$)。質性變數的多個虛擬欄就是這種情況——個別虛擬欄的 t 值會隨基準水準的選擇而變,「這個變數整體有沒有用」的 F 檢定則保持相同(P05 會看到)。巢狀模型的比較(anova_lm())也是同一件事。

最後一個常被忽略的細節:p ≥ n 時 F 檢定根本算不出來,因為全模型無法按一般滿欄秩、正殘差自由度的設定估計誤差變異。可接著看線性模型選擇的高維度一節。

完整實作:兩個預測變數(lstat + age)

講義完整實作:從兩個變數到全部變數

講義 03 · 兩個預測變數(lstat + age)
X = MS(['lstat', 'age']).fit_transform(Boston) y = Boston['medv'] model1 = sm.OLS(y, X) results1 = model1.fit() summarize(results1)
預期輸出
              coef  std err       t  P>|t|
intercept  33.2228    0.731  45.458  0.000
lstat      -1.0321    0.048 -21.416  0.000
age         0.0345    0.012   2.826  0.005

age 的 t = 2.826、p = 0.005,在這個模型裡是顯著的。先記住這個數字,看下一張卡。

來源:Ch03-linreg-lab-zh.ipynb
講義 03 · 全部 12 個預測變數
# 我們現在可以使用相同的模型矩陣建構器,使用 `terms` 中的所有變數來擬合模型。 X = MS(terms).fit_transform(Boston) model = sm.OLS(y, X) results = model.fit() summarize(results)

同一個 age,t 從 2.826 掉到 0.271、p 從 0.005 變成 0.787。這就是上面 Q&A 講的現象在 lab 裡的實例,跟 Advertising 的 newspaper 是同一種問題。indus(p = 0.829)也是。lab 的刪除 age 範例接著示範怎麼用 Boston.columns.drop(['medv','age']) 把 age 拿掉重新擬合,拿掉之後 lstat 的 t 從 −10.897 變成 −11.483,SE 從 0.051 縮到 0.048——變數少一個,剩下的反而估得更準。

來源:Ch03-linreg-lab-zh.ipynb
延伸閱讀:逐步選擇候選模型

逐步選擇:如何形成候選模型?

順向選擇(forward selection)從只有截距開始,每步加入讓模型改善最多的一個變數; 反向選擇(backward selection)從完整模型開始,每步移除條件貢獻最小的變數。 混合選擇(mixed selection)每次加入後也重新檢查既有變數,允許刪除後來變得多餘的項目。 傳統做法可用 p 值作停止條件;更完整的比較會使用調整 R²、Cp、AIC、BIC 或交叉驗證,詳見 模型選擇。

反向最小平方選擇須先能擬合完整模型;p 大於等於 n 時通常無法使用一般滿秩版本。 順向法可以起步,但增加變數仍受設計矩陣秩限制。逐步搜尋是貪婪程序,未必找到所有子集合中的最佳解。 若用資料選變數,評估時必須把整個選擇步驟放入訓練折;選擇後的普通 p 值也不能直接視為預先指定模型的推論。

延伸閱讀:CCPR、部分迴歸圖與 FWL

控制其他變數:CCPR 與部分迴歸圖

成分加部分殘差圖(component-plus-residual plot, CCPR)畫 $e_i+\hat\beta_jx_{ij}$ 對 $x_{ij}$,並畫出 $\hat\beta_jx_{ij}$ 的線性成分。 它幫助檢查在其他變數已納入後,這一項是否仍有非線性形狀。

部分迴歸圖(partial regression/added-variable plot)則先把 y 與 $X_j$ 各自對其他預測變數及截距迴歸,再把兩組殘差互相作圖。滿秩最小平方下,其斜率等於完整模型的 $\hat\beta_j$。兩種圖的座標不同,不能把 CCPR 與部分迴歸圖當成同一張圖。 高度共線性時,CCPR 顯示的散布可能低估係數的不確定性,仍須結合 VIF 與標準誤判讀。

「其他變數固定,Xj 增加一單位」描述條件關聯。預測變數高度相關時,這種變動可能遠離實際資料範圍; 觀察資料上的迴歸係數也不能直接當成介入效果。模型的用途要透過診斷與新資料評估確認。

證明:部分迴歸圖的斜率等於完整模型係數

把 X 分成其他變數 Z(含截距)與目標欄 x,令 $M_Z=I-Z(Z^TZ)^{-1}Z^T$。固定 x 的係數 b 後,對 Z 的最小平方殘差是 $M_Z(y-xb)$。因此只需最小化 $\|M_Zy-M_Zxb\|^2$。

$$\hat b=\frac{x^TM_Zy}{x^TM_Zx}.$$

這就是兩組殘差 $M_Zy$ 對 $M_Zx$ 的迴歸斜率。分母須為正,即 x 不在 Z 的欄空間內。CCPR 用原始 x 作橫軸,沒有這個雙重殘差化,因此兩種圖不相同。

計算細節:部分 F 檢定

一次檢定一組係數:部分 F 檢定

完整模型有 p 個預測變數;受限模型固定其中 q 個係數為零,兩模型用同一批觀測、同一反應與誤差模型,並且欄空間巢狀。記兩個殘差平方和為 RSS 與 RSS₀。常態、等變異、獨立誤差與滿欄秩條件下:

$$F=\frac{(\mathrm{RSS}_0-\mathrm{RSS})/q}{\mathrm{RSS}/(n-p-1)}\ \overset{H_0}{\sim}\ F_{q,n-p-1}.$$

只留截距的受限模型給 RSS₀=TSS、q=p,便是整體 F 檢定。q=1 時,此 F 等於同一係數雙尾 t 檢定的 $t^2$。

證明:巢狀模型的額外平方和與 F 分布

令 H、H₀ 是完整與受限模型的正交投影。巢狀性給 $HH_0=H_0H=H_0$,因此 H−H₀ 為秩 q 的投影,並與 I−H 正交。

$$\mathrm{RSS}_0-\mathrm{RSS}=y^T(H-H_0)y.$$

$H_0$ 成立時,平均向量落在受限欄空間,故上式等於 $\varepsilon^T(H-H_0)\varepsilon$。在常態誤差下,它除以 $\sigma^2$ 服從 $\chi^2_q$;RSS 除以 $\sigma^2$ 服從獨立的 $\chi^2_{n-p-1}$。各除自由度後取比,就是正文 F 分布。q=1 時,額外平方和等於 $\hat\beta_j^2/[(X^TX)^{-1}]_{jj}$,除以 $s^2$ 即為 $t_j^2$。

整體 F 檢定問所有斜率是否同時為零;部分 F 則比較同一批資料上的兩個巢狀模型,一次檢定一組係數。係數仍描述控制模型內其他變數後的條件關聯,不能直接當成因果效果。

PART 05 · 質性變數與交互作用

類別變數怎麼進模型,交互作用又是什麼 教科書 · 第 3.3.1–3.3.2 節講義 03

前面所有的 x 都是數字。可是「貨架位置:好/中/差」、「是不是學生」、 「哪一個地區」怎麼放進模型?可以用虛擬變數表示:編成 0 與 1。

兩個水準只要一欄。以 Credit 資料的 Student 為例:

$$x_i = \begin{cases} 1 & \text{第 } i \text{ 個人是學生} \\ 0 & \text{不是學生} \end{cases} \qquad\Longrightarrow\qquad y_i = \begin{cases} \beta_0 + \beta_1 + \varepsilon_i & \text{是學生} \\ \beta_0 + \varepsilon_i & \text{不是} \end{cases}$$

於是 β₀ 是「非學生的平均」、β₁ 是「學生比非學生多出來的部分」。 k 個水準只要 k − 1 欄;沒有分到欄的那個水準叫基準水準 (baseline),截距代表它。為什麼不給每個水準都一欄? 因為 k 欄加起來恆等於 1,會跟截距完全共線,矩陣就不可逆了。 這叫虛擬變數陷阱(dummy variable trap)。

Credit 上的兩個例子係數SEtp 值解讀
截距(非學生)480.36923.43420.499< 0.0001非學生的平均 balance
Student[Yes]396.45674.1045.350< 0.0001學生平均多 396 → 876.83
截距(African American)531.0046.31911.464< 0.0001基準水準的平均
Ethnicity[Asian]−18.68665.021−0.2870.774比基準少 18.7,但 p 很大
Ethnicity[Caucasian]−12.50356.681−0.2210.826比基準少 12.5,p 也很大

下面三列就是 ISLP 表 3.8(課本用的欄名是 region/East/South/West,ISLP 的 Python 資料集把同一欄命名為 Ethnicity,數字完全一致)。三個水準的整體檢定 F = 0.0434、p = 0.9575——沒有證據顯示族群之間的 balance 平均有差異。 重點是:個別虛擬欄的係數與 p 值會隨基準水準的選擇而變,整體的 F 檢定不會。 所以判斷一個質性變數整體有沒有用,要看 F,不要看個別虛擬欄。

接著是交互作用。標準線性模型是加法的: 每個變數的條件斜率跟其他變數的值無關。可是「電視廣告與銷售的關聯會不會取決於廣播花了多少」 這種問題(行銷上叫綜效、統計上叫交互作用)就違反加法假設。解法是丟一個乘積項進去:

$$Y = \beta_0 + \beta_1 X_1 + \beta_2 X_2 + \beta_3 X_1X_2 + \varepsilon = \beta_0 + (\beta_1 + \beta_3 X_2)\,X_1 + \beta_2 X_2 + \varepsilon$$

看第二種寫法:$X_1$ 的斜率變成 $\beta_1 + \beta_3X_2$, 會隨 $X_2$ 移動。當 $X_2$ 是質性變數(0/1)時這個關係很容易從圖上看出—— 就是「兩條線平不平行」:

非學生學生非學生的迴歸線學生的迴歸線
›兩條線平行=沒有交互作用。切換後推滑桿,看學生那條線轉起來。
β₃−2.00
課程/lab 資料
兩條線
模式—
非學生的斜率 β₁—
學生的斜率 β₁+β₃—
交互作用項 β₃—
RSS—
R²—
怎麼玩
先按「切換」看沒有交互作用的版本:兩條線平行,只有截距不同,意思是「收入與 balance 的條件斜率,學生跟非學生完全一樣」。切到有交互作用之後推 β₃ 滑桿,看學生那條線怎麼轉。滑桿放在最小平方解上時 RSS 最小;往兩邊推,RSS 就爬起來。
課本的數字 ISLP 圖 3.7
ISLP 圖 3.7 就是這兩張圖。最小平方解:無交互作用時兩條線的共同斜率是 5.98;有交互作用時非學生 6.22、學生 4.22($\hat\beta_3 = -2.00$)。也就是說學生組的 income–balance 條件斜率較小。不過這一項的 t = −1.15、p = 0.25,並不顯著。
Advertising 加入 TV×radio(ISLP 表 3.9)係數SEtp 值
截距6.75020.247927.23< 0.0001
TV0.01910.001512.70< 0.0001
radio0.02890.00893.240.0014
TV×radio0.00110.000120.73< 0.0001

R² 從 89.7%(只有主效果)跳到 96.8%。換個方式算更有感:加法模型擬合完後剩下的變異裡, 有 (96.8 − 89.7)/(100 − 89.7) ≈ 69% 被這一個乘積項解釋掉了。 係數的解讀是「TV 預算每多 1000 美元,銷售量增加 (19 + 1.1 × radio) 單位」—— 廣播預算愈高,模型中的電視廣告斜率愈大。這是樣本中的交互作用, 單憑觀察資料不能判定為因果綜效。

階層原則(hierarchical principle) 只要模型放了交互作用項 X₁X₂,就要連主效果 X₁ 與 X₂ 一起放, 即使它們的 p 值不顯著。
兩個理由:① 如果 X₁X₂ 跟 y 有關,那 X₁ 的係數是不是剛好為 0 根本不重要; ② 乘積項通常跟主效果高度相關,抽掉主效果會讓乘積項被迫去承擔主效果, 它的係數就不再是「交互作用」的意思了。
同一個原則也適用於多項式:放了 x² 就要放 x。
完整實作:用 tuple 指定交互作用項

講義完整實作:交互作用與類別變數

講義 03 · 用 tuple 指定交互作用項
X = MS(['lstat', 'age',('lstat', 'age')]).fit_transform(Boston) model2 = sm.OLS(y, X) summarize(model2.fit())
預期輸出
              coef  std err       t  P>|t|
intercept  36.0885    1.470  24.553  0.000
lstat      -1.3921    0.167  -8.313  0.000
age        -0.0007    0.020  -0.036  0.971
lstat:age   0.0042    0.002   2.244  0.025

MS(['lstat', 'age', ('lstat', 'age')]) 裡的 tuple ('lstat','age') 就是交互作用項,欄名會自動變成 lstat:age。它的 t = 2.244、p = 0.025,顯著;而 age 的主效果 t = −0.036 完全不顯著——照階層原則,還是要留著它。

來源:Ch03-linreg-lab-zh.ipynb
講義 03 · 三個水準的類別變數(Carseats 的 ShelveLoc)
allvars = list(Carseats.columns.drop('Sales')) y = Carseats['Sales'] final = allvars + [('Income', 'Advertising'), ('Price', 'Age')] X = MS(final).fit_transform(Carseats) model = sm.OLS(y, X) summarize(model.fit())

ShelveLoc 有 Bad/Medium/Good 三個水準,MS() 自動產生兩欄 ShelveLoc[Good] 與 ShelveLoc[Medium]——Bad 被丟掉當基準(它是第一個水準)。係數 4.85 與 1.95 都是「相對於 Bad」的差距,順序也符合直覺:好位置 > 中等 > 差位置。這一格同時放了兩個交互作用 Income:Advertising(p = 0.007,顯著)與 Price:Age(p = 0.424,不顯著)。

來源:Ch03-linreg-lab-zh.ipynb
QUIZ · 質性變數與交互作用

一個三水準的質性變數,你把基準水準從「差」換成「好」。什麼會變、什麼不會變?

(A) 什麼都不會變,因為虛擬變數的編碼方式不影響模型
(B) 係數不變,但 R² 會變,因為模型矩陣不同了
(C) 個別虛擬欄的比較對象變了,係數與部分檢定可能跟著變;擬合值、預測、R²、整體 F 檢定都不變
計算細節:中心化與交互作用係數

中心化會改變哪個係數的意義?

只有主效應且含截距的普通最小平方模型,將每欄減去常數可改寫截距而保持所有擬合值。 把 x 換成 $u=x-a$ 後,截距代表原來 x=a 時的平均反應;若再除以尺度,係數單位跟著改變。 這種可逆重新參數化不會消除原本精確的線性相依,也不會自動修復混淆。

有交互作用時,令 $u=x-a,v=z-b$,完整模型改寫為

$$\beta_0+\beta_1x+\beta_2z+\beta_3xz =(\beta_0+a\beta_1+b\beta_2+ab\beta_3) +(\beta_1+b\beta_3)u+(\beta_2+a\beta_3)v+\beta_3uv.$$

交互作用係數保留,但主效應係數改成另一個參考點的斜率,檢定「主效應為零」的意義也改了。 只保留 xz 卻移除 x、z,平移座標後會產生無處容納的主效應項;因此一般遵守階層原則。 有明確科學理由設定某些主效應為零仍是可能的模型,須說明該限制與選定原點的含義。

PART 06 · 六個潛在問題

非線性、殘差相關、異質變異、離群、高槓桿、共線性 教科書 · 第 3.3.3 節講義 03

線性迴歸擬合起來很容易,擬合出錯的結論也一樣容易。先回頭看 P01 的 LINE: 哪一條假設失效,壞掉的東西不一樣。

講義整理了六個最常見的潛在問題,每一個都有對應的診斷工具(diagnostic tool)與處理方式; 講義自己也說,辨認與處理這些問題「既是科學也是藝術」。先看全表,再逐一動手看:

#問題診斷工具(標準名稱)為什麼這個工具看得到它講義的處理方式
1非線性(non-linearity)殘差圖(residual plot):$e_i$ 對 $\hat y_i$直線假設正確時殘差沒有結構;殘差隨 $\hat y$ 彎成 U 形,就是模型漏了曲率加入 $x^2$ 等多項式項
2誤差相關(correlated errors)殘差對觀測順序圖(residuals vs time/order plot)正相關可能形成同號漂移;其他 lag 的模式可再用 ACF 檢查指出後果:講義情境下 SE 低估、區間太窄;有時間結構的資料要換模型
3異質變異(heteroscedasticity)同一張殘差圖看漏斗形變異隨反應水準放大時,殘差的散布隨橫軸張開對 Y 取 $\log$ 或開根號
4離群值(outlier,y 怪)學生化殘差圖(studentized residual plot)原始殘差各筆尺度不同,除以自己的 SE 後才能用同一把尺比;$|r_i|>3$ 可疑確認是記錄錯誤才刪;否則可能是模型缺變數
5高槓桿(high leverage,x 怪)槓桿統計量(leverage statistic)$h_i$、Cook's distance、影響圖(influence plot)$h_i$ 是第 i 筆的 y 對自己擬合值的權重;遠超過平均 $(p+1)/n$ 的點能扳動整條線檢查該筆資料是否有效;那一區資料太少時補資料
6共線性(collinearity)相關矩陣(correlation matrix)、變異數膨脹因子(VIF)兩個變數幾乎重複時,RSS 沿一條溝幾乎不變,係數各自估不準,SE 膨脹 $\sqrt{\mathrm{VIF}}$拿掉一個,或合成一個變數

診斷圖的橫軸為什麼是 ŷ,不是觀測編號或 y

殘差圖(residual plot)是後面幾乎每一個工具的底圖,先把它的橫軸講清楚。 殘差 $e_i=y_i-\hat y_i$ 放縱軸沒有爭議,橫軸有三種候選:

結論:整體形狀(非線性、漏斗)看殘差對 $\hat y$;要知道是哪一個變數需要非線性項, 改看殘差對單一 $x_j$,或 P04 收合盒裡的部分迴歸圖;懷疑誤差相關時才看殘差對時間。 下面用同一組示意資料把三種橫軸擺在一起,按「洗牌觀測順序」看哪一張會變:

›橫軸是 ŷ:殘差與擬合值正交,紅線斜率恰為 0。切換橫軸比較看看。
概念示意
這一張圖的數字
橫軸擬合值 ŷ
corr(e, 橫軸)—
殘差對橫軸的最小平方斜率—
理論值0
這組資料的 R²—
怎麼看
同一組殘差(縱軸)、三種橫軸。
① ŷ:紅線斜率恰為 0,形狀是真的;
② y:紅線一定往右上,斜率 ≈ 1−R²,相關 ≈ √(1−R²),這是假象;
③ 編號:按「洗牌觀測順序」,只有這張會變,因為橫斷面資料的編號沒有資訊。
對應講義 講義 03
講義的殘差圖橫軸是 $\hat y_i$、縱軸是 $e_i=y_i-\hat y_i$,多元迴歸也一樣;要看時間相依才改用觀測順序當橫軸。
證明:殘差與觀測值的共用成分

在 $\operatorname{Cov}(\varepsilon\mid X)=\sigma^2I$ 下,$e=(I-H)\varepsilon$、$\hat y=X\beta+H\varepsilon$,故

$$\operatorname{Cov}(e,\hat y\mid X)=\sigma^2(I-H)H=0,\qquad \operatorname{Cov}(e,y\mid X)=\sigma^2(I-H).$$

單筆的共變異數因此為 $\sigma^2(1-h_{ii})$,通常為正;即使線性平均模型正確,也不應期待 e 與原始 y 無關。 樣本層次更直接:由 normal equations,$\sum_i e_i=0$、$\sum_i e_i\hat y_i=0$,所以 e 對 $\hat y$ 的樣本共變異數為零; 而 $\sum_i e_i y_i=\sum_i e_i(\hat y_i+e_i)=\mathrm{RSS}$,故 e 對 y 的樣本相關係數為 $\mathrm{RSS}/\sqrt{\mathrm{RSS}\cdot\mathrm{TSS}}=\sqrt{1-R^2}$,最小平方斜率為 $\mathrm{RSS}/\mathrm{TSS}=1-R^2$。

講義補充連結:為什麼殘差圖用擬合值當橫軸、 殘差與反應變數的相關係數。

問題 1 到 5 都靠殘差類的圖看。講義用了四張:殘差圖、殘差對觀測順序圖、學生化殘差圖, 以及把學生化殘差對槓桿值畫的影響圖。下面這個元件把六組資料(一組乾淨的、五組各有一種特徵) 跟這四張圖交叉組合起來。先切換資料,再切換診斷圖,觀察各種問題的圖形特徵:

圖表需要連網載入 Chart.js。此圖的重點:殘差圖出現 U 形=非線性;漏斗形=異質變異;相鄰殘差同號成串=誤差相關;學生化殘差絕對值超過 3=離群值;殘差對槓桿圖右下角遠離群體=高槓桿點。
›先用下拉選單換資料,再按四個按鈕換圖。乾淨的資料四張圖都該沒有結構。
概念示意
四張圖各看什麼
① 殘差圖(residual plot):殘差對擬合值,講義的主工具。應該是一團沒有結構的雲,紅線(分箱平均,用來觀察殘差趨勢)應該貼著 0。有 U 形=非線性,有漏斗=異質變異。
② 殘差對觀測順序圖(residuals vs time/order plot):橫軸是收集順序。持續的正相關可能讓殘差同號、成串漂移(第 ⑥ 組);不是所有相關都只出現在相鄰點。
③ 學生化殘差圖(studentized residual plot):殘差除以自己的 SE 後對擬合值畫,超出 ±3 的點是可能的離群值(第 ④ 組)。
④ 殘差對槓桿圖(residuals vs leverage plot):縱軸是學生化殘差、橫軸是槓桿值,就是講義的影響圖;右上/右下角的點最危險,同時是離群值又是高槓桿點(第 ⑤ 組)。
這一組資料的診斷數字
n—
$\hat\beta_1$—
RSE—
R²—
最大 |學生化殘差|—
最大槓桿值—
槓桿值的平均 (p+1)/n—
課本裡的對應圖 ISLP 圖 3.9/3.10/3.12/3.13
第 ② 組是真的 Auto 資料(mpg 對 horsepower),就是 ISLP 圖 3.9 左那張經典的 U 形殘差圖;加上 horsepower² 之後 U 形會消失(圖 3.9 右)。第 ④ ⑤ 組對應圖 3.12 與圖 3.13;第 ⑥ 組是瀏覽器內固定種子的示意時間序列,對照講義的殘差對時間圖(ISLP 圖 3.10)。

殘差圖(residual plot):非線性與異質變異

橫軸 $\hat y_i$、縱軸 $e_i$,理想狀況是一團沒有結構的雲。講義用 Auto 資料示範:mpg 對 horsepower 的殘差彎成明顯的 U 形, 這是非線性的強烈證據;加入 horsepower² 之後 U 形消失,殘差幾乎沒有形狀,表示二次項確實改善了模型 (上方元件的第 ② 組就是這份資料)。同一張圖也看異質變異:殘差的散布隨 $\hat y$ 張開成漏斗形, 表示誤差的變異隨反應水準放大。講義的處理方式是對反應變數做壓縮尺度的變換,例如 $\log Y$ 或 $\sqrt{Y}$, 大值被壓得比小值多,可能改善漏斗形;是否合適仍要看轉換後的模型與殘差。

異質變異還可以怎麼處理?加權最小平方

普通最小平方(OLS)讓每筆觀測在平方誤差中使用相同的權重:

$$\min_\beta\sum_{i=1}^n (y_i-x_i^\top\beta)^2.$$

若各筆誤差的變異不同,$\operatorname{Var}(\epsilon_i\mid X)=\sigma_i^2$, 加權最小平方(WLS)改為

$$\min_\beta\sum_{i=1}^n w_i(y_i-x_i^\top\beta)^2.$$ $$w_i\propto\frac{1}{\sigma_i^2}.$$

變異大、較不精確的觀測,權重較小;變異小、較精確的觀測,權重較大。 這是根據觀測的精確度分配權重,不是看到某筆殘差大就任意降低它的權重。

例如,若有理由假設誤差變異與平均反應的平方成正比:

$$\mu_i=E(Y_i\mid X),\qquad \sigma_i^2\propto\mu_i^2,$$

便可先用初步模型的 $\hat y_i$ 估計 $\mu_i$,考慮 $w_i\propto1/\hat y_i^2$。 但這需要合理的變異模型;$\hat y_i$ 接近零時,不能直接套用倒數平方,否則權重會暴增。

WLS 的計算也等於把每列的 $y_i$ 和整個設計向量 $x_i$(含截距那一欄) 同乘 $\sqrt{w_i}$,再做最小平方。目標函數的權重是 $1/\sigma_i^2$,轉換資料的倍率則是 $1/\sigma_i$。

WLS 仍在原本的 $Y$ 尺度上建模;對 $Y$ 取 $\log$ 則改成描述 $E(\log Y\mid X)$, 連係數的解讀也會改變。兩者都是處理異質變異的可能方向,並不是同一種操作;WLS 本身也不會處理誤差間的相關。

殘差對觀測順序圖(residuals vs time/order plot):誤差相關

線性模型的誤差不相關假設要求 $\operatorname{Cov}(\epsilon_i,\epsilon_j\mid X)=0$($i\ne j$),不是只檢查相鄰兩筆。 時間序列資料最容易違反,相鄰時間點的誤差往往同號。診斷方式是把殘差依時間(或收集順序)畫出來: 持續的正相關可能讓相鄰殘差傾向取相近的值,圖上出現一段一段的漂移;其他 lag 的相關則要再看 ACF。

後果講義用一個極端例子說明:把資料不小心複製一份,n 變成 2n,最小平方解完全不變,但 SE 公式以為多了一倍的資訊, 信賴區間大約縮成原來的 $1/\sqrt2$(大樣本下的近似,精確比例還牽涉 RSE 與 t 分位數的自由度),這當然是假的。 講義的結論是:像這樣誤差正相關時,估計出的 SE 會低估真正的 SE,信賴區間與預測區間都比應有的窄,p 值偏小; 更一般的相關結構下方向不一定,要看設計與相關的樣式。這種資料要換用能描述時間相依的模型,超出本章範圍。

講義補充連結:誤差相關對線性迴歸的影響。

不只看相鄰點:用 ACF 找不同 lag 的相關

不相關要求每一對不同觀測都滿足 $\operatorname{Cov}(\epsilon_i,\epsilon_j\mid X)=0$, 相鄰時間點只是其中一種情形。不相關也不等於獨立:相關係數為零,仍可能有非線性的相依。

對有自然時間順序、等間隔且相關結構大致穩定的資料,可以用殘差 ACF(自相關函數) 觀察不同時間間隔的相關:

$$\rho_k=\operatorname{Corr}(e_t,e_{t-k}).$$

這裡 $k=1,2,3,\ldots$,不只看相鄰的 lag 1。

圖上各 lag 的高度是用殘差算出的樣本估計 $\hat\rho_k$。 例如 $\hat\rho_1\approx0$、$\hat\rho_2\approx0.6$、$\hat\rho_3\approx0$, 就表示相鄰的相關不明顯,但隔兩個時間點值得注意;這並沒有假設其餘 lag 都是零。

可以依序做三件事:

  1. 殘差對時間圖:先看趨勢、成串漂移或週期。
  2. ACF:看哪些 lag 出現明顯相關;單根柱子超出參考範圍不等於整個模型一定錯。
  3. Ljung–Box:把選定的前 $m$ 個 lag 放在一起檢查:
$$H_0:\rho_1=\rho_2=\cdots=\rho_m=0.$$

這是對所選 lag 的整體自相關檢查,不是所有形式相依的通用檢定。 套用在擬合後殘差時,還須依模型處理自由度與檢定適用條件。

資料結構或問題常見工具與用途
有自然時間順序ACF/PACF 觀察不同 lag;Ljung–Box 整體檢查選定的多個 lag。
特別關心一階或多階相關Durbin–Watson 著重 lag 1;Breusch–Godfrey 可檢查指定的多個 lag。
空間資料Moran’s $I$、variogram;需要位置、距離或鄰近關係。
重複測量/群聚資料看組內殘差模式;ICC 可描述模型下的組內相關,mixed model/random effects 可用來描述群聚結構,並非同一種檢定。
沒有自然順序或分組不能任意排序殘差後,就把時間序列診斷當成一般相關檢定。

為什麼沒有一個工具能直接檢查任意兩筆的誤差相關?令

$$\Sigma=\operatorname{Cov}(\boldsymbol\epsilon\mid X),$$ $$\Sigma=\begin{pmatrix}\sigma_1^2&\sigma_{12}&\cdots\\ \sigma_{12}&\sigma_2^2&\cdots\\\vdots&\vdots&\ddots\end{pmatrix}.$$

不相關表示非對角元素全為零;再加上等變異,才得到 $\Sigma=\sigma^2I$。 任意的 $\Sigma$ 有 $n(n-1)/2$ 個不同的非對角 covariance。 只有一組資料、每筆一個殘差,又不提供結構或重複資訊,就無法自由估計這些量。

還要分清誤差與擬合後的殘差:即使 $\Sigma=\sigma^2I$, OLS 仍有 $\operatorname{Cov}(e\mid X)=\sigma^2(I-H)$,殘差彼此不必完全不相關。 因此診斷看的是符合資料結構、值得追查的模式,不能把任何殘差相關都直接判成誤差假設違反。

學生化殘差圖(studentized residual plot):離群值

離群值是 y 離模型預測很遠的點。要判斷「多遠算遠」,不能直接比原始殘差,因為每一筆殘差的尺度不一樣。 學生化殘差(studentized residual)是把殘差除以它自己的估計標準差。 這種用估計標準差做標準化的動作稱為 studentization,與 Student’s t 統計量的標準化想法相同:

$$r_i = \frac{e_i}{\mathrm{RSE}\sqrt{1-h_i}}$$

為什麼要除以 $\sqrt{1-h_i}$?因為 $\mathrm{Var}(e_i) = \sigma^2(1-h_i)$,高槓桿點的殘差天生就小, 直接比原始殘差對它不公平。學生化之後才有共同尺度,常用 $|r_i|>3$ 作為回查線索,這些觀測是可能的離群值(outlier)。 把 $r_i$ 對 $\hat y_i$ 畫出來就是學生化殘差圖,上方元件的第 ④ 組可以看到那一個點。

離群值對最小平方線的影響通常有限(它的 x 不怪、槓桿低),但會推高 RSE:課本的例子裡, 含那一點時 RSE 是 1.09,拿掉後只有 0.77。RSE 是所有 SE、區間與 p 值的原料,一個點就能改變整份推論的解讀。 處理方式:確認是資料收集或記錄錯誤才刪除;否則它可能在提醒模型缺了一個變數。

講義補充連結:Studentized residual。

為什麼常用 |rᵢ| > 3?

$r_i$ 把殘差換成「幾個估計標準差」的尺度。以標準常態作為直覺參考, 約 99.73% 的值落在 $[-3,3]$,所以超過三個標準差的點值得回查。

但這不是內部學生化殘差的精確常態機率,也不是自動刪點的依據。 同時檢查很多筆資料時,即使模型合理,也可能出現少數大的殘差。

本頁用整份資料的 RSE 定義內部學生化 $r_i$;若刪掉第 $i$ 筆再估標準差,則得到外部學生化 $t_i$。 只有在常態、等變異、獨立誤差等條件成立時,固定一筆的外部學生化量才有相應的精確 $t$ 分布。 兩者的計算與證明見下方「內部與外部學生化殘差」。

槓桿統計量(leverage statistic)、Cook's distance 與影響圖(influence plot):高槓桿與影響點

槓桿值 $h_i$ 是帽子矩陣的對角元,衡量「第 i 筆的 x 有多不尋常」。簡單線性迴歸有明確公式:

$$h_i = \frac{1}{n} + \frac{(x_i-\bar x)^2}{\sum_{j=1}^{n}(x_j-\bar x)^2}$$

回想 P01:$h_i=1/n+w_i$,第二項正是第 i 筆在「斜率是加權平均」裡的權重。更一般地 $\hat y_i=\sum_j h_{ij}y_j$, 所以 $h_i$ 就是第 i 筆自己的 y 對自己擬合值的權重,介於 1/n 與 1 之間,而且所有 $h_i$ 的平均恰好是 $(p+1)/n$。 遠超過這個平均(實務上常用 2 倍或 3 倍當門檻值)的點就是高槓桿點(high leverage point): 它的 x 不尋常,對擬合值可能有較大的影響。

hᵢ 怎麼推導?從迴歸公式看自己的擬合值會改多少

第一步:把擬合值寫成平均值加上斜率項

考慮含截距的簡單線性迴歸,固定所有 $x_j$,且 $x_j$ 不全相同。 記 $S_{xx}=\sum_{j=1}^n(x_j-\bar x)^2>0$。最小平方法給出

$$\hat\beta_1=\frac{\sum_{j=1}^n(x_j-\bar x)(y_j-\bar y)}{S_{xx}}.$$ $$\hat\beta_0=\bar y-\hat\beta_1\bar x.$$

把截距代回第 $i$ 筆的擬合值:

$$\hat y_i=\hat\beta_0+\hat\beta_1x_i =\bar y+(x_i-\bar x)\hat\beta_1.$$

第二步:整理出每個 yⱼ 前面的係數

因為 $\sum_j(x_j-\bar x)=0$,斜率分子中的 $\bar y$ 項會消掉:

$$\begin{aligned} &\sum_j(x_j-\bar x)(y_j-\bar y)\\ &\quad=\sum_j(x_j-\bar x)y_j\\ &\qquad-\bar y\underbrace{\sum_j(x_j-\bar x)}_{=0}\\ &=\sum_j(x_j-\bar x)y_j. \end{aligned}$$

再用 $\bar y=\frac1n\sum_j y_j$,就能把 $\hat y_i$ 寫成所有觀測值 $y_j$ 的線性組合:

$$\begin{aligned} \hat y_i &=\frac1n\sum_{j=1}^n y_j +\frac{x_i-\bar x}{S_{xx}}\sum_{j=1}^n(x_j-\bar x)y_j\\ &=\sum_{j=1}^n\left[\frac1n+ \frac{(x_i-\bar x)(x_j-\bar x)}{S_{xx}}\right]y_j. \end{aligned}$$

這裡 $i$ 是我們要預測的資料位置,$j$ 則走過所有用來擬合的觀測。 把方括號中的係數記為 $h_{ij}$:

$$h_{ij}=\frac1n+\frac{(x_i-\bar x)(x_j-\bar x)}{S_{xx}}.$$

第三步:取出自己對自己的係數

槓桿值 $h_i$ 就是 $\hat y_i$ 中自己的 $y_i$ 前面的係數。 在上式令 $j=i$,便得到

$$h_i=h_{ii}=\frac1n+ \frac{(x_i-\bar x)^2}{\sum_{j=1}^n(x_j-\bar x)^2}.$$

$1/n$ 來自 $y_i$ 對平均值 $\bar y$ 的貢獻;第二項來自 $y_i$ 改變斜率後, 對位置 $x_i$ 的擬合值所造成的貢獻。當 $x_i=\bar x$ 時,第二項為零;離 $\bar x$ 越遠,第二項越大。 這也說明了前面寫的 $h_i=1/n+w_i$。

例如固定 $x=(0,1,2)$,則 $\bar x=1$、$S_{xx}=2$,所以 $h_1=h_3=1/3+1/2=5/6$,$h_2=1/3$。 端點的觀測值改變時,自己的擬合值會比中央的點改變得更多。

接回帽子矩陣與敏感度

上面是單一解釋變數的推導。更一般地,固定滿欄秩的設計矩陣 $X$ 時,OLS 有

$$\hat{\mathbf y}=H\mathbf y,\qquad H=X(X^\top X)^{-1}X^\top.$$

第 $i$ 個擬合值是

$$\hat y_i=\sum_{j=1}^n h_{ij}y_j,\qquad h_i=h_{ii}.$$

現在保持所有其他 $y_j$ 不變,只把 $y_i$ 增加 $\Delta$,便得到

$$\hat y_i^{\mathrm{new}}=\hat y_i+h_i\Delta, \qquad \Delta\hat y_i=h_i\Delta y_i.$$

也可以寫成敏感度:

$$\frac{\partial\hat y_i}{\partial y_i}=h_i.$$

例如 $h_i=0.8$,只把 $y_i$ 提高 1,重新擬合後它自己的 $\hat y_i$ 就提高 0.8。 這是固定 $X$ 時的數學權重,並不是觀測值有意識地「控制」模型。 $h_i$ 由 $X$ 決定;是否真的對整體擬合有影響,還要一起看殘差。

高槓桿不等於有影響。講義區分兩個詞:拿掉之後迴歸式明顯改變的觀測叫影響點(influential observation); 槓桿高代表位置敏感,但仍需看它偏離模型的程度;在簡單線性、等變異模型下, 增加遠離平均的有效 x 觀測可增加設計資訊,不代表所有高槓桿點都應保留或刪除。 要同時看「x 怪不怪」與「y 怪不怪」,講義用 Cook's distance:

$$D_i=\frac{\sum_{j=1}^{n}\left(\hat y_j-\hat y_{j(-i)}\right)^2}{(p+1)\,\hat\sigma^2} =\frac{r_i^2}{p+1}\cdot\frac{h_i}{1-h_i}$$

$\hat y_{j(-i)}$ 是拿掉第 i 筆後重新擬合、對第 j 筆的預測值;左式問「少了這一筆,全部的擬合值一共動了多少」, 右式說這個量正好是學生化殘差平方乘上槓桿比 $h_i/(1-h_i)$。把 $h_i$ 放橫軸、$r_i$ 放縱軸、氣泡大小畫 $D_i$, 就是影響圖(influence plot),也就是上方元件的「殘差對槓桿圖」(residuals vs leverage plot): 右上與右下角的點最危險。講義給的處理方式有兩個:這些點特別值得回頭檢查資料是否有效; 它們也標出設計空間裡資料太少的區域,能補資料就補。

Cook’s distance:從刪除一點推到 residual × leverage

拿掉第 $i$ 筆後重新擬合,再對原本全部 $n$ 個位置計算預測。 Cook’s distance 衡量這些擬合值的平方變動總和:

$$D_i=\frac{\sum_{j=1}^n(\hat y_j-\hat y_{j(-i)})^2}{(p+1)\hat\sigma^2}.$$

其中 $p$ 是不含截距的 predictor 數,$p+1$ 是模型參數數量; $\hat\sigma^2=\mathrm{RSS}/(n-p-1)$ 來自完整模型。 分母用誤差尺度與模型維度標準化,所以不同單位不會任意改變 $D_i$。

令 $x_i$ 是含截距的第 $i$ 筆設計欄向量,$X$ 的第 $i$ 列為 $x_i^\top$。 當 $X$ 滿欄秩、$h_i<1$、刪除後模型仍可估計時,刪除公式給出

$$\hat\beta-\hat\beta_{(-i)} =\frac{(X^\top X)^{-1}x_i e_i}{1-h_i}.$$

因此全部擬合值的變動為

$$\hat{\mathbf y}-\hat{\mathbf y}_{(-i)} =\frac{X(X^\top X)^{-1}x_i e_i}{1-h_i}.$$

令 $A=(X^\top X)^{-1}$、$u_i=XA x_i$。由 $AX^\top XA=A$,

$$\begin{aligned} \|u_i\|^2&=x_i^\top AX^\top XA x_i\\ &=x_i^\top A x_i=h_i. \end{aligned}$$

所以全部擬合值的平方變動總和為

$$\begin{aligned} \|\hat{\mathbf y}-\hat{\mathbf y}_{(-i)}\|^2 &=\frac{e_i^2}{(1-h_i)^2}\|u_i\|^2\\ &=\frac{e_i^2h_i}{(1-h_i)^2}. \end{aligned}$$

代回定義,並使用內部學生化殘差 $r_i=e_i/[\hat\sigma\sqrt{1-h_i}]$:

$$\begin{aligned} D_i&=\frac{e_i^2}{(p+1)\hat\sigma^2}\frac{h_i}{(1-h_i)^2}\\ &=\frac{r_i^2}{p+1}\frac{h_i}{1-h_i}. \end{aligned}$$

這裡不能直接把 $r_i$ 換成使用刪除後標準差的外部學生化 $t_i$。

  • 殘差大、槓桿小:槓桿因子較小,但殘差極大時仍可能有影響,不能只憑低槓桿排除。
  • 槓桿大、殘差小:若 $e_i=0$ 且 $h_i<1$,則 $D_i=0$;若殘差只是很小,仍須看槓桿因子放大後的乘積。
  • 殘差與槓桿都大:兩個因子一起放大,尤其值得檢查。

高槓桿不必然有影響。Cook’s distance 同時問「偏離模型多少」與「這個位置能把模型拉動多少」, 而不只看某一點自己的原始殘差。

為什麼常用 Cook’s distance > 4/n?

$4/n$ 是提醒回查的經驗門檻,不是精確檢定的臨界值。可以從公式理解它的量級:

$$D_i=\frac{r_i^2}{p+1}\frac{h_i}{1-h_i}.$$ $$\bar h=\frac{p+1}{n}.$$

對一個槓桿接近平均的點,若 $n$ 相對於參數數量夠大,使 $h_i\ll1$,則

$$D_i\approx\frac{r_i^2}{p+1}h_i \approx\frac{r_i^2}{n}.$$

把約兩個估計標準差、$|r_i|\approx2$,視為值得留意的偏離,就得到 $D_i\approx4/n$。 這只是幫助理解門檻的近似直覺;高槓桿點或參數占資料量比例很高時,近似不適用。

超過門檻表示要檢查資料、模型及刪除前後的差異,不代表應該直接刪掉該筆。

最危險的組合是「離群值 + 高槓桿」 只是離群值(y 怪、x 正常):它會推高 RSE、 可能改變 R²;槓桿小會減弱對擬合的影響,但殘差極大時仍可能是影響點。
只是高槓桿(x 怪、但落在趨勢上):不一定有影響;是否需要處理,還要一起看殘差與資料是否有效。
兩個同時發生(ISLP 圖 3.13 的第 41 筆):一個點就能把整條線扳過去, 而且因為槓桿高、殘差被壓小,它在原始殘差圖上還不一定顯眼。 這就是為什麼一定要看殘差對槓桿圖,以及為什麼上面的 Cook's distance 把兩者一起算進去。

講義補充連結:Leverage (statistics)、 影響點與高槓桿點的差別。

相關矩陣(correlation matrix)與變異數膨脹因子(VIF):共線性

第六個問題自己一節。共線性(collinearity)是指兩個以上的預測變數彼此高度相關。 在條件平均模型正確且 $E(\epsilon\mid X)=0$ 下,共線性本身不造成偏差,但會讓 RSS 的等高線從碗變成一條狹長的溝—— 沿著溝走,RSS 幾乎不變,於是「哪一組係數最好」變得極難分辨,係數的 SE 跟著膨脹、檢定力下降。 最直接的檢查是看預測變數的相關矩陣:某一對相關係數很高就要留意。 但講義提醒這不夠:三個以上的變數可能整體高度共線(multicollinearity),而任何一對的相關都不特別高。 更好的工具是變異數膨脹因子:

為什麼共線性會讓 RSS 變成狹長山谷?

考慮兩個 predictor 的模型:

$$\hat y=\beta_0+\beta_1x_1+\beta_2x_2.$$

若 $x_2\approx2x_1$,預測就近似

$$\hat y\approx\beta_0+(\beta_1+2\beta_2)x_1.$$

資料比較能辨認的是組合 $\beta_1+2\beta_2$,而不是兩個係數各自的值。 例如 $(\beta_1,\beta_2)=(4,1)$ 和 $(2,2)$ 都使這個組合等於 6,因而產生接近的擬合值與 RSS。

在係數平面上,維持同一個組合 $C$ 等於沿著

$$\beta_2=\frac{C-\beta_1}{2}$$

移動。沿這個方向 RSS 改變很少,垂直方向卻改變較快,等高線因此拉成細長橢圓。 一點資料擾動就可能使最低點沿著山谷移動很多,兩個係數可以互相補償。

若 $x_2=2x_1$ 完全成立,則設計矩陣不滿秩,兩個係數無法唯一決定; 若只是很接近,係數通常仍有唯一解,但估計不穩定。

山谷方向取決於變數比例。下方互動使用相同尺度的兩個變數,因此接近共線時展示的是係數和大致不變, 與此例的 $\beta_1+2\beta_2$ 是同一種補償原理。

$$\mathrm{VIF}(\hat\beta_j) = \frac{1}{1 - R^2_{X_j \mid X_{-j}}} \qquad\Longrightarrow\qquad \frac{\mathrm{SE}(\hat\beta_j)\ \text{有共線性}} {\mathrm{SE}(\hat\beta_j)\ \text{無共線性}} = \sqrt{\mathrm{VIF}}$$

$R^2_{X_j \mid X_{-j}}$ 是「拿 $X_j$ 對其他所有預測變數做迴歸」得到的 R²。 它接近 1 就代表 $X_j$ 的資訊已經被別人講完了,VIF 就會變得很大。 最小值是 1(完全無共線性),超過 5 或 10 是常用的警戒值,表示該進一步檢查;要不要改模型仍看分析目的與估計精度。 講義給的處理方式有兩個:拿掉其中一個多餘的變數;或把共線的變數合成一個(例如取平均)。 下方滑桿可觀察信賴區域如何從圓變成溝。

VIF 為什麼常用 5 或 10 當警戒值?

令 $R_j^2$ 是把 $X_j$ 對其他 predictors(含截距)做迴歸所得到的 $R^2$。 用 $S_j$ 簡寫 $X_j$ 離平均的平方和:

$$S_j=\sum_{i=1}^n(x_{ij}-\bar x_j)^2.$$

在滿秩、等變異且誤差互不相關的線性模型中,第 $j$ 個斜率的估計標準誤為

$$\begin{aligned} \mathrm{SE}(\hat\beta_j) &=\frac{\hat\sigma}{\sqrt{S_j(1-R_j^2)}}\\ &=\frac{\hat\sigma}{\sqrt{S_j}}\sqrt{\mathrm{VIF}_j}. \end{aligned}$$ $$\mathrm{VIF}_j=\frac{1}{1-R_j^2}.$$
VIF$R_j^2$未被其他 predictors 線性解釋的變異SE 膨脹倍數
50.820%$\sqrt5\approx2.24$
100.910%$\sqrt{10}\approx3.16$

也就是說,80% 或 90% 的 $X_j$ 樣本變異已可由其他 predictors 線性解釋, 留下能區分這個係數的資訊較少。這裡的「未被解釋」不表示統計獨立。

膨脹倍數比較的是相同誤差尺度與 $X_j$ 自身變異下的情形, 不表示任意刪掉一個變數後,實際 SE 就一定縮小這麼多。

5 和 10 都只是經驗警戒值,不是正式假設檢定的臨界值。 是否處理,要看係數需要多精確、樣本量以及分析目的是解釋還是預測。

›ρ = 0:等高線是圓,兩個係數互不干擾。把滑桿往右推看看。
ρ0.000
講義/課本重繪
即時計算
corr(X₁, X₂) = ρ0.00
VIF = 1/(1−ρ²)1.00
SE 膨脹倍數 = √VIF1.00
t 值縮小成原來的100%
同樣的資料量,等效於—
判準沒有問題
怎麼看這張圖 ISLP 圖 3.15
兩軸是兩個係數(已中心化到最小平方解)。紅色曲線是 RSS 的等高線,也就是「RSS 相同」的係數組合;淡藍色的十字帶是各自單獨的 95% 信賴區間。
ρ = 0 時等高線是圓,兩個係數各自估得準。ρ → 1 時它拉成一條沿著 β₁ = −β₂ 的長溝:「兩個係數的和」還是估得很準,但「各自是多少」完全分不出來。這正是 ISLP 圖 3.15 右邊那張圖。
Credit 資料上的真實案例 ISLP 表 3.11
balance 對 age + limit:limit 的 SE = 0.005、t = 34.5、p < 0.0001。
改成對 rating + limit:同一個 limit 的 SE 變成 0.064(膨脹 12.8 倍)、t 掉到 0.38、p = 0.70。
三個一起放時 VIF 是 1.01、160.67、160.59;按「跳到 Credit」會把 ρ 設成兩者的實際相關 0.997,只放這兩個變數時 VIF 約 167,與三變數版的 160 同一個量級。拿掉 rating,R² 只從 0.754 掉到 0.750——幾乎沒損失,問題卻解決了。

講義補充連結:多重共線性與相關的差別。

延伸閱讀:講義之外的診斷與補救

以下工具不在講義的教學範圍,lab 的 results.summary() 輸出或課本會提到,列出名稱與用途供查閱。

  • 常態分位圖(normal Q-Q plot):學生化殘差的分位數對標準常態分位數作圖,貼著 45 度線表示殘差接近常態, 兩端翹起表示厚尾或離群值。lab 摘要表下方的 Omnibus 與 Jarque-Bera 是對應的常態性檢定。
  • 尺度–位置圖(scale-location plot):$\sqrt{|r_i|}$ 對 $\hat y_i$ 作圖,專門看變異是否隨擬合值上升; 漏斗形在殘差圖上不明顯時,這張圖會放大它。
  • Durbin–Watson 統計量:檢查相鄰殘差的一階自相關,理想值接近 2,明顯小於 2 表示正相關。 lab 的 Boston 模型給出 0.892,但解讀前須確認資料列順序代表什麼,不能直接把它當成時間相關的證據。
  • 加權最小平方(weighted least squares):課本對異質變異的另一個處理,知道各筆變異的比例時, 在平方誤差前乘 $1/\sigma_i^2$,等價於把每列反應與設計向量同乘 $1/\sigma_i$;詳見上方 WLS 說明。
  • 穩健標準誤(heteroscedasticity-consistent standard errors):係數不變,只把 SE 的估計換成不依賴等變異假設的版本。
完整實作:用串列生成式算每一欄的 VIF

講義完整實作:VIF、多項式與 anova_lm

講義 03 · 用串列生成式算每一欄的 VIF
vals = [VIF(X, i) for i in range(1, X.shape[1])] vif = pd.DataFrame({'vif':vals}, index=X.columns[1:]) vif

range(1, X.shape[1]) 從 1 開始是為了跳過第 0 欄的截距。Boston 的 12 個變數裡最大的是 tax 9.00 與 rad 7.45——這兩個確實相關(稅率高的地區通常離高速公路近),需要留意這兩欄的共線性;Credit 的 160 則顯示更嚴重的情況。

來源:Ch03-linreg-lab-zh.ipynb
講義 03 · 加二次項修掉非線性
X = MS([poly('lstat', degree=2), 'age']).fit_transform(Boston) model3 = sm.OLS(y, X) results3 = model3.fit() summarize(results3)
預期輸出
                              coef  std err       t  P>|t|
intercept                  17.7151    0.781  22.681    0.0
poly(lstat, degree=2)[0] -179.2279    6.733 -26.620    0.0
poly(lstat, degree=2)[1]   72.9908    5.482  13.315    0.0
age                         0.0703    0.011   6.471    0.0

poly('lstat', degree=2) 產生的是正交多項式基底(為了數值穩定),所以係數 −179.23 與 72.99 不能直接讀成「lstat 與 lstat² 的係數」;要那樣讀得加 raw=True。兩種基底的擬合值完全相同,只是係數不同。二次項的 p 值實質為 0,表示它確實改善了模型。

來源:Ch03-linreg-lab-zh.ipynb
講義 03 · anova_lm:用 F 檢定比較巢狀模型
anova_lm(results1, results3)
預期輸出
   df_resid           ssr  df_diff      ss_diff           F        Pr(>F)
0     503.0  19168.128609      0.0          NaN         NaN           NaN
1     502.0  14165.613251      1.0  5002.515357  177.278785  7.468491e-35

比較「lstat + age」與「poly(lstat,2) + age」兩個巢狀模型。F = 177.28、p = 7.47e-35,二次項不能省。注意177.28 恰好是上一張卡裡二次項 t = 13.315 的平方(13.315² ≈ 177.3)——巢狀模型只差 1 個自由度時,F 就是 t 的平方。這也解釋了為什麼 P04 說「F 可以檢定一組係數」是 t 檢定的推廣。另外 lab 的槓桿值診斷用 np.argmax(infl.hat_matrix_diag) 找出 Boston 裡槓桿值最大的是第 374 筆。

來源:Ch03-linreg-lab-zh.ipynb
QUIZ · 診斷圖

殘差對擬合值的圖呈明顯的 U 形。下面哪個結論是對的?

(A) 線性假設被違反了,係數本身的解讀就已經有問題,要先修模型的形狀
(B) 誤差不是常態分佈,應該對 y 取 log
(C) 有離群值把殘差拉歪了,把最大的幾個殘差刪掉重新擬合就好
計算細節:內部與外部學生化殘差

內部與外部學生化殘差

令 m=p+1 為含截距的參數數,ν=n−m,X 滿欄秩。帽子矩陣 H 給出 $\operatorname{Var}(e_i\mid X)=\sigma^2(1-h_{ii})$。 前面的圖使用整份資料的 $s^2=\mathrm{RSS}/\nu$,因此是內部學生化:

$$r_i=\frac{e_i}{s\sqrt{1-h_{ii}}}.$$

檢查第 i 筆時,也可以刪除此筆再估 σ,得到外部學生化:

$$s_{(i)}^2=\frac{\mathrm{RSS}-e_i^2/(1-h_{ii})}{\nu-1},\qquad t_i=\frac{e_i}{s_{(i)}\sqrt{1-h_{ii}}} =r_i\sqrt{\frac{\nu-1}{\nu-r_i^2}}.$$

這需要 ν>1、$h_{ii}<1$ 且刪除後殘差變異估計為正。 常態、等變異、獨立誤差模型下,固定 i 的外部學生化量服從 $t_{\nu-1}$;內部學生化量因分母也使用本筆,不服從同一 t 分布。 「絕對值大於 3」是回查線索,不是對整批觀測自動有效的多重離群檢定。

證明:刪除一筆後的變異與學生化

令刪除第 i 筆後係數為 $\hat\beta_{(i)}$。秩一更新給

$$\hat\beta_{(i)}=\hat\beta-\frac{(X^TX)^{-1}x_ie_i}{1-h_{ii}},\qquad \mathrm{RSS}_{(i)}=\mathrm{RSS}-\frac{e_i^2}{1-h_{ii}}.$$

刪除一筆使殘差自由度從 ν 變成 ν−1;以此定義 $s_{(i)}$,並用 $r_i^2=e_i^2/[s^2(1-h_{ii})]$ 整理即可得到兩者換算。 常態模型下,刪除模型對第 i 筆的預測誤差除以其真實標準差為標準常態,且與刪除模型的 RSS 獨立。 除以獨立的 $\sqrt{\chi^2_{\nu-1}/(\nu-1)}$,便得到外部學生化的 t 分布。

來源:講義的殘差、相關與槓桿討論; R 官方刪除診斷區分整體與 leave-one-out 的變異估計。

PART 07 · 與 KNN 的比較

比較線性模型與 KNN 的適用情境 教科書 · 第 3.5 節講義 03

線性迴歸是參數方法(parametric):它先假設 f 的形狀 (一條直線),然後只需要估 p + 1 個數字。好處很多——容易擬合、係數可解讀、 有現成的 t 與 F 檢定。主要限制是:如果那個形狀猜錯了, 就算資料再多也無法消除。

對照組是 K 近鄰迴歸(KNN regression),一種無母數方法。 要預測 $x_0$,就找離它最近的 K 個訓練點,把它們的 y 平均起來:

$$\hat f(x_0) = \frac{1}{K} \sum_{i \in \mathcal{N}_0} y_i$$

鄰居包含自己嗎?新的測試點不在訓練集合裡,所以沒有「自己」可選。 但直接在訓練資料上預測某個訓練點時,它到自己的距離是 0,通常會包含自己。 沒有重複座標時,K = 1 因而可以得到零訓練誤差,卻不代表對新資料也準; leave-one-out 或交叉驗證會把被驗證的觀測排除在該次的訓練集合之外。若有同距離或重複座標,還須看平手的處理方式。

它不預先指定 f 的參數形式。K 小=很有彈性但很不穩; K 大=很平滑但可能糊掉真正的結構。這是第 2 章介紹的偏差–變異取捨。

ISLP 圖 3.19–3.20 的結論是:真實關係接近直線時線性迴歸占優勢; 關係明顯彎曲且 p 很小時 KNN 可能較好,但加入無關變數後 KNN 會迅速受維度詛咒影響。 第 2 章的 KNN 圖可用來複習這個彈性取捨。

為什麼 p 大時無母數方法較難估準 這叫維度詛咒 (curse of dimensionality)。KNN 的整個邏輯建立在「最近的 K 個點跟 x₀ 很像」之上。 可是在 20 維裡,50 個點彼此的距離都差不多遠——「最近鄰」變成一個較弱的相似性判準, 拿它們的 y 平均就等於拿一群不相干的點平均,偏差大到無法忍受。
線性迴歸靠的是「所有 n 筆資料共同決定 p + 1 個係數」, 每筆資料都在為全域的形狀投票,不依賴局部鄰居,所以 p 變大只讓變異增加一點。
經驗法則:每個變數分到的樣本數太少時,偏好參數方法。
線性迴歸KNN 迴歸
對 f 的假設線性(強)只假設平滑(弱)
要估的東西p + 1 個係數沒有參數,但要留著全部訓練資料
真相是線性時贏(估得又快又準)略差(多付了變異)
真相很彎時系統性偏差,無法消除表現明顯較好
p 變大時退化得慢快速退化(維度詛咒)
可解讀性係數、p 值、信賴區間都有幾乎沒有
雜訊變數的影響多估幾個接近 0 的係數而已直接污染距離的計算
預測的成本一次乘法每次都要掃過全部訓練資料

最後一件事,也是課本特別強調的:就算 KNN 的測試 MSE 稍微低一點, 選線性迴歸仍然可能是對的。能用幾個係數清楚說明模型中的關係、 能附上 p 值與信賴區間,這些在真實工作裡值得換掉一點點預測精度。 第 7 章會給你一個折衷方案(GAM):保留「每個變數各自一條曲線」的可解讀性, 同時放掉線性的限制。

QUIZ · 線性迴歸 vs KNN

真實關係明顯非線性,n = 50。什麼情況下線性迴歸反而贏過 KNN?

(A) 永遠不會贏,因為 KNN 不做任何形狀假設,一定更接近真相
(B) 像 ISLP 圖 3.20 那樣加入的都是雜訊變數時,p 一多(該實驗約 p ≥ 4)線性迴歸就會贏,因為 KNN 受到維度詛咒的明顯影響
(C) 只要把 K 調大就會贏,因為 K 大 KNN 就退化成線性迴歸
EXERCISES · 練習

動手驗證:教科書第 3 章精選題 教科書 · 第 3.7 節 習題

下面幾題取自 ISLP §3.7 的課後習題,題號都對得回課本。先自己想過再點選項; 每個選項都有解說;需要完整解答時,可查閱下面3個站。

EXERCISE 1 · ISLP 3.7 第 1 題

課本要你描述表 3.4 的 p 值各自對應什麼虛無假設,並用 sales/TV/radio/newspaper 的語言(不要用係數)講結論。下面哪個描述對了?

(A) 每個 p 值對應「在其他兩個媒體的預算固定的情況下,這個媒體與 sales 無關」;結論是 TV 與 radio 有關,newspaper 沒有
(B) 每個 p 值對應「這個媒體單獨跟 sales 無關」;結論是 newspaper 跟 sales 無關
(C) 四個 p 值一起對應「三個係數同時為 0」;結論要看整體的 F 檢定
EXERCISE 2 · ISLP 3.7 第 3 題(a)

模型是 salary = 50 + 20·GPA + 0.07·IQ + 35·Level + 0.01·(GPA×IQ) − 10·(GPA×Level),其中 Level = 1 代表大學畢業。固定 IQ 與 GPA,哪個說法對?

(A) 大學畢業生的平均起薪一定比高中畢業生高,因為 Level 的係數 35 是正的
(B) GPA 夠高時,高中畢業生的平均起薪反而比大學畢業生高
(C) GPA×IQ 的係數只有 0.01,非常小,所以幾乎沒有交互作用效果
EXERCISE 3 · ISLP 3.7 第 4 題(a)(b)

n = 100、單一預測變數。真實關係是線性的。把「線性迴歸」與「三次迴歸」的訓練 RSS 與測試 RSS 比一比,預期是什麼?

(A) 訓練 RSS:三次一定較低(或相等);測試 RSS:預期線性較低
(B) 兩個都是三次較低,因為三次模型比較有彈性
(C) 資訊不足,兩個都無法判斷
EXERCISE 4 · ISLP 3.7 第 7 題

課本要你證明簡單線性迴歸(只有一個 x、有截距)的 R² 等於 x 與 y 相關係數的平方。為什麼這件事在多元迴歸就不能照搬?

(A) 因為多元迴歸的 R² 不再介於 0 與 1 之間
(B) 多元迴歸有多個 x,沒有單一個「x 與 y 的相關係數」;對應的結果變成 R² = Cor(y, ŷ)²
(C) 因為多元迴歸要用調整後 R²,普通 R² 不再有意義
重點速查與來源

線性迴歸速查表 教科書 · 第 3 章

來源:完整書目與章節定位

本頁書目與章節定位

  • 教科書:An Introduction to Statistical Learning with Applications in Python。James、Witten、Hastie、Tibshirani、Taylor,2023。原書與下載資訊
    本頁對應:教科書 · 第 3 章開頭;教科書 · 第 3.1.1 節;教科書 · 第 3.1.2 節、3.2.2;教科書 · 第 3.1.3 節;教科書 · 第 3.2 節;教科書 · 第 3.3.1–3.3.2 節;教科書 · 第 3.3.3 節;教科書 · 第 3.5 節。
  • 進階參考:The Elements of Statistical Learning。Hastie、Tibshirani、Friedman,第二版。原書與下載資訊

考前把這一頁掃過去就好。

計算細節:完整公式速查

公式速查

名稱式子備註
簡單線性模型$Y = \beta_0 + \beta_1 X + \varepsilon$式 3.5
最小平方解$\hat\beta_1 = \frac{\sum(x_i-\bar x)(y_i-\bar y)}{\sum(x_i-\bar x)^2}$,$\hat\beta_0 = \bar y - \hat\beta_1\bar x$式 3.4;必過 $(\bar x,\bar y)$
斜率=加權平均$\hat\beta_1=\sum_i w_is_i$,$w_i=\frac{(x_i-\bar x)^2}{S_{xx}}$,$s_i=\frac{y_i-\bar y}{x_i-\bar x}$講義;求和只取 $x_i\ne\bar x$ 的項;離 $\bar x$ 遠的點權重大
斜率=y 的線性組合$\hat\beta_1=\sum_i c_iy_i$,$c_i=\frac{x_i-\bar x}{S_{xx}}$$\sum c_i=0$、$\sum c_ix_i=1$;常態誤差下 $\hat\beta_1$ 服從常態
矩陣寫法$\hat\beta = (X^\top X)^{-1}X^\top y$多元迴歸的封閉解
斜率的標準誤$\mathrm{SE}(\hat\beta_1)^2 = \sigma^2/\sum(x_i-\bar x)^2$式 3.8;x 散得開就小
截距的標準誤$\mathrm{SE}(\hat\beta_0)^2 = \sigma^2\left[\frac1n+\frac{\bar x^2}{\sum(x_i-\bar x)^2}\right]$式 3.8
95% 信賴區間$\hat\beta_1 \pm 2\,\mathrm{SE}(\hat\beta_1)$式 3.9;嚴格版用 t 分位數
t 統計量$t = \hat\beta_1/\mathrm{SE}(\hat\beta_1)$式 3.14;df = n−2
平均反應的 CI$\hat y_0\pm t_{1-\alpha/2,n-2}\,\hat\sigma\sqrt{\frac1n+\frac{(x_0-\bar x)^2}{S_{xx}}}$在 $\bar x$ 最窄;n 大時縮到 0
新觀測的 PI$\hat y_0\pm t_{1-\alpha/2,n-2}\,\hat\sigma\sqrt{1+\frac1n+\frac{(x_0-\bar x)^2}{S_{xx}}}$根號裡多 1,一定比 CI 寬
殘差標準誤$\mathrm{RSE} = \sqrt{\mathrm{RSS}/(n-p-1)}$式 3.15/3.25;有單位
R²$R^2 = 1 - \mathrm{RSS}/\mathrm{TSS}$式 3.17;含截距的訓練 OLS 介於 0 與 1;測試 R² 可為負
F 統計量$F = \frac{(\mathrm{TSS}-\mathrm{RSS})/p}{\mathrm{RSS}/(n-p-1)}$式 3.23;$H_0$ 下約為 1
學生化殘差$r_i = e_i/(\mathrm{RSE}\sqrt{1-h_i})$$|r_i|>3$ 可疑
槓桿值$h_i = \frac1n + \frac{(x_i-\bar x)^2}{\sum(x_j-\bar x)^2}$式 3.37;平均恰為 $(p+1)/n$;$h_i=1/n+w_i$
Cook's distance$D_i=\frac{r_i^2}{p+1}\cdot\frac{h_i}{1-h_i}$同時算進殘差與槓桿;影響圖的氣泡大小
VIF$\mathrm{VIF}(\hat\beta_j) = 1/(1-R^2_{X_j\mid X_{-j}})$$>5$ 或 $10$ 是警戒值;SE 膨脹 $\sqrt{\mathrm{VIF}}$
交互作用$Y = \beta_0 + (\beta_1+\beta_3X_2)X_1 + \beta_2X_2 + \varepsilon$式 3.33;斜率隨 $X_2$ 移動
計算細節:Advertising 完整數值對照

Advertising 的迴歸結果

模型截距TVradionewspaperFR²RSE
只有 TV7.03260.0475
(t 17.67)
——312.10.61193.259
只有 radio9.3116—0.2025
(t 9.92)
—98.40.33204.275
只有 newspaper12.3514——0.0547
(t 3.30)
10.90.05215.093
TV + newspaper5.77490.0469
(t 18.17)
—0.0442
(t 4.35)
179.60.64583.121
TV + radio2.92110.0458
(t 32.91)
0.1880
(t 23.38)
—859.60.89721.681
三個都放2.93890.0458
(t 32.81)
0.1885
(t 21.89)
−0.0010
(t −0.18)
570.30.89721.686
TV + radio + TV×radio6.75020.0191
(t 12.70)
0.0289
(t 3.24)
TV×radio 0.0011
(t 20.73)
—0.96780.944

newspaper 的 t 值一路 從 3.30(單獨)→ 4.35(加了 TV)→ −0.18(再加 radio)。 同一欄資料,三個結論。差別只在「控制了什麼」。

六個潛在問題的一頁速查

問題診斷工具(標準名稱)會影響係數嗎會影響 SE/檢定嗎
1. 非線性殘差圖(residual plot)出現 U 形會會
2. 誤差相關殘差對觀測順序圖(residuals vs time/order plot)外生性成立時不必然會(講義情境下低估;一般方向視相關結構)
3. 異質變異殘差圖呈漏斗形外生性成立時不會會
4. 離群值學生化殘差圖(studentized residual plot)$|r_i|>3$可能(槓桿低時影響小)會(RSE 變大)
5. 高槓桿槓桿統計量 $h_i \gg (p+1)/n$、Cook's distance、影響圖可能(落在趨勢上就不會;要合看殘差與 Cook's distance)會(落在趨勢上反而降低 SE)
6. 共線性相關矩陣(correlation matrix)、VIF仍無偏,但估計值不穩定、對資料很敏感會(SE 膨脹 $\sqrt{\mathrm{VIF}}$)
三個一定要記住的觀念 1. 多元迴歸係數描述控制模型中其他變數後的條件平均差。 單變數顯著、多變數不顯著(Advertising 的 newspaper、Boston 的 age)不是矛盾, 是兩個問題的答案不同;因果解讀還需要研究設計與額外假設。
2. F 與 t 回答不同的假設。F 評估整體證據,t 評估指定係數; 兩者都可能有第一型錯誤,先通過 F 也不會自動校正多個個別檢定。
3. 無偏性需要正確的條件平均與 E[ε|X] = 0。 在此外生性成立時,誤差相關與異質變異主要使傳統 SE 失準,方向不能只由「有相關」判定。 因此要檢查殘差結構並選合適的推論方法。
QUIZ · 自我檢測

本章自我檢測 課程題庫

這些題目取自課程題庫,只給對錯與說明,不計分。答錯就回到對應章節重讀。

更多練習:展開課程題庫
CARDS · 關鍵詞彙卡

關鍵詞彙卡:點卡片翻面 課程詞彙

詞彙卡整理本章講義與 ISLP 第 3 章中常用的統計或機器學習專有名詞,正面附英文名稱。 先看正面的術語,試著說出定義,再翻面核對。可以洗牌複習,也可以搭配本章例子練習解釋。

複習:展開關鍵詞彙卡