§3.1 Hồi quy tuyến tính đơn giản 📖 ISLP §3.1 📄 pp. 71–80 ★★☆☆☆ ⏱️ Khoảng 45 phút Hồi quy tuyến tính Phương pháp bình phương nhỏ nhất OLS R² Kiểm định giả thuyết p-value Phần dư Khoảng tin cậy ← Lab: Python cơ bản 👎 Trang chủ khóa học §3.2 Hồi quy tuyến tính đa biến →
**📖 Tổng quan**
Hồi quy tuyến tính đơn giản là phương pháp cơ bản nhất trong học có giám sát. Nó giả định có mối quan hệ tuyến tính giữa biến phụ thuộc \(Y\) và một biến dự đoán duy nhất \(X\). Mặc dù đơn giản, nó gần như là nền tảng cho mọi mô hình thống kê phức tạp.
*James, Witten, Hastie, Tibshirani (2023). An Introduction to Statistical Learning with Python, Chapter 3, pp. 71–80.*
**🎯 Mục tiêu học tập**
* Hiểu cấu trúc toán học của mô hình hồi quy tuyến tính đơn giản: \(Y \approx \beta_0 + \beta_1 X\)
* Nắm vững nguyên lý và công thức ước lượng hệ số bằng Phương pháp bình phương nhỏ nhất (Least Squares).
* Tính được sai số tiêu chuẩn và xây dựng khoảng tin cậy cho các hệ số.
* Sử dụng kiểm định t và p-value để đánh giá tính có ý nghĩa thống kê của biến dự đoán.
* Sử dụng RSE và \(R^2\) để đánh giá độ phù hợp tổng thể của mô hình.
**3.1 Mô hình hồi quy tuyến tính đơn giản**
Hồi quy tuyến tính đơn giản giả định rằng biến phụ thuộc \(Y\) có thể được biến dự đoán duy nhất \(X\) xấp xỉ một cách tuyến tính:
\[ Y \approx \beta_0 + \beta_1 X \]
(Phương trình 3.1: Mô hình hồi quy tuyến tính đơn giản)
Trong đó \(\beta_0\) là **hệ số góc** (intercept), đại diện cho giá trị kỳ vọng của \(Y\) khi \(X=0\); \(\beta_1\) là **hệ số góc** (slope), đại diện cho mức thay đổi trung bình của \(Y\) khi \(X\) thay đổi một đơn vị. Cả hai được gọi chung là **hệ số mô hình** (coefficients) hoặc **tham số** (parameters).
Với các ước lượng của hệ số \(\hat{\beta}_0, \hat{\beta}_1\), chúng ta có thể dự đoán cho một giá trị \(x\) mới:
\[ \hat{y} = \hat{\beta}_0 + \hat{\beta}_1 x \]
(Phương trình 3.2: Phương trình dự đoán)
Ký hiệu "mũ" \(\hat{\ }\) đại diện cho giá trị ước lượng hoặc giá trị dự đoán.
**🏢 Tình huống ứng dụng: Ngân sách tiếp thị và doanh số**
Bộ dữ liệu Advertising điển hình trong sách bao gồm chi tiêu quảng cáo trên TV, đài phát thanh, báo chí và doanh số tương ứng của 200 thị trường.
Nếu chúng ta muốn biết "Chi thêm $1.000 vào quảng cáo TV, sẽ bán được thêm bao nhiêu sản phẩm?" — thì hồi quy tuyến tính đơn giản là công cụ được ưu tiên lựa chọn để trả lời câu hỏi này.
**3.1.1 Ước lượng hệ số: Phương pháp bình phương nhỏ nhất**
*Giải thích lý thuyết*
Trong thực tế, \(\beta_0\) và \(\beta_1\) là chưa biết. Chúng ta cần ước lượng chúng từ \(n\) bộ quan sát \(\{(x_1, y_1), (x_2, y_2), \ldots, (x_n, y_n)\}\). Phương pháp bình phương nhỏ nhất (Least Squares) là phương pháp phổ biến nhất: chọn \(\hat{\beta}_0, \hat{\beta}_1\) sao cho **hiệu số bình phương残差** (Residual Sum of Shoes, RSS) là nhỏ nhất.
Định nghĩa **phần dư** (residual) thứ \(i\) là khoảng cách giữa giá trị quan sát và giá trị dự đoán:
\[ e_i = y_i - \hat{y}_i = y_i - (\hat{\beta}_0 + \hat{\beta}_1 x_i) \]
Hàm mục tiêu của phương pháp bình phương nhỏ nhất:
\[ \mathrm{RSS} = e_1^2 + e_2^2 + \cdots + e_n^2 = \sum_{i=1}^{n} (y_i - \hat{\beta}_0 - \hat{\beta}_1 x_i)^2 \]
(Phương trình 3.3: Hiệu số bình phương残差 - RSS)
**Nghiệm giải tích cho việc tối thiểu hóa RSS**
Thông qua giải tích để tìm cực trị, ta thu được ước lượng bình phương nhỏ nhất:
\[ \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} \]
(Phương trình 3.4: Ước lượng hệ số bình phương nhỏ nhất)
Trong đó \(\bar{x} = \frac{1}{n}\sum x_i\), \(\bar{y} = \frac{1}{n}\sum y_i\) là **giá trị trung bình mẫu**.
*Nguồn gốc lịch sử*: Phương pháp bình phương nhỏ nhất được Legendre (1805) và Gauss (1809) đề xuất độc lập. Gauss còn chứng minh thêm rằng: nếu sai số tuân theo phân phối chuẩn, phương pháp bình phương nhỏ nhất cho ra ước lượng hợp nhất cực đại (MLE), do đó là ước lượng tuyến tính không thiên lệch tốt nhất (BLUE) — định lý Gauss-Markov nổi tiếng.
**Triển khai Python: Tự code phương pháp bình phương nhỏ nhất**
```python
try:
from google.colab import drive
drive.mount('/content/drive')
sys.path.append('/content/drive/My Drive/Colab Notebooks')
except:
pass
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
# Đọc dữ liệu
url = "https://raw.githubusercontent.com/JWarmenhoven/ISLR-python/master/Notebooks/Data/Advertising.csv"
data = pd.read_csv(url, index_col=0)
# Lấy cột TV làm biến X, Sales làm biến Y
X = data['TV'].values
Y = data['Sales'].values
# Tính toán thủ công bằng phương pháp bình phương nhỏ nhất
n = len(X)
x_bar = np.mean(X)
y_bar = np.mean(Y)
numerator = np.sum((X - x_bar) * (Y - y_bar))
denominator = np.sum((X - x_bar)**2)
beta1_hat = numerator / denominator
beta0_hat = y_bar - beta1_hat * x_bar
print(f"Hệ số góc (截距) ước tính: {beta0_hat:.4f}")
print(f"Hệ số góc (斜率) ước tính: {beta1_hat:.4f}")
# Dự đoán
Y_pred = beta0_hat + beta1_hat * X
# Tính R-squared
SS_res = np.sum((Y - Y_pred)**2)
SS_tot = np.sum((Y - y_bar)**2)
R2 = 1 - (SS_res / SS_tot)
print(f"R-squared: {R2:.4f}")
# Vẽ đồ thị
plt.figure(figsize=(10, 6))
plt.scatter(X, Y, color='blue', label='Dữ liệu quan sát')
plt.plot(X, Y_pred, color='red', linewidth=2, label='Đường hồi quy')
plt.title('Hồi quy tuyến tính: Sales vs TV Advertising')
plt.xlabel('Chi tiêu TV ($1000)')
plt.ylabel('Doanh số (1000 chiếc)')
plt.legend()
plt.grid(True, linestyle='--', alpha=0.6)
plt.show()
```
§3.1 簡單線性迴歸 📖 ISLP §3.1 📄 pp. 71–80 ★★☆☆☆ ⏱️ 約 45 分鐘 線性迴歸 最小平方法 OLS R² 假設檢定 p 值 殘差 信心區間 ← Lab: Python 入門 📑 課程首頁 §3.2 多元線性迴歸 → 📖 概述 簡單線性迴歸是監督式學習中最基礎的方法。它假設反應變數 \(Y\) 與單一預測變數 \(X\) 之間存在線性關係。雖然簡單,但它幾乎是所有複雜統計模型的基石。 James, Witten, Hastie, Tibshirani (2023). An Introduction to Statistical Learning with Python , Chapter 3, pp. 71–80. 🎯 學習目標 理解簡單線性迴歸模型 \(Y \approx \beta_0 + \beta_1 X\) 的數學結構 掌握最小平方法(Least Squares)估計係數的原理與公式 能計算標準誤並建立係數的信賴區間 會用 t 檢定與 p 值判斷預測變數的顯著性 使用 RSE 與 \(R^2\) 評估模型整體配適度 3.1 簡單線性迴歸模型 簡單線性迴歸假設反應變數 \(Y\) 可以被單一預測變數 \(X\) 以線性方式近似: \[ Y \approx \beta_0 + \beta_1 X \] 方程式 3.1:簡單線性迴歸模型 其中 \(\beta_0\) 為 截距 (intercept),代表 \(X=0\) 時期望的 \(Y\) 值;\(\beta_1\) 為 斜率 (slope),代表 \(X\) 每變動一單位時 \(Y\) 的平均變化量。兩者合稱 模型係數 (coefficients)或 參數 (parameters)。 有了係數的估計值 \(\hat{\beta}_0, \hat{\beta}_1\),我們即可對新的 \(x\) 值進行預測: \[ \hat{y} = \hat{\beta}_0 + \hat{\beta}_1 x \] 方程式 3.2:預測方程式 這裡的「帽子」符號 \(\hat{\ }\) 代表估計值或預測值。 🏢 應用場景:行銷預算與銷售額 課本中經典的 Advertising 資料集包含 200 個市場的電視、廣播、報紙廣告支出與對應的銷售額。 如果我們想知道「多花 $1,000 在電視廣告上,能多賣多少產品?」——簡單線性迴歸就是回答這個問題的首選工具。 3.1.1 估計係數:最小平方法 理論說明 在實務中 \(\beta_0\) 和 \(\beta_1\) 是未知的。我們需要從 \(n\) 組觀測值 \(\{(x_1, y_1), (x_2, y_2), \ldots, (x_n, y_n)\}\) 中估計它們。最小平方法(Least Squares)是最常見的做法:選擇 \(\hat{\beta}_0, \hat{\beta}_1\) 使得 殘差平方和 (Residual Sum of Squares, RSS)最小化。 定義第 \(i\) 個 殘差 (residual)為觀測值與預測值的差距: \[ e_i = y_i - \hat{y}_i = y_i - (\hat{\beta}_0 + \hat{\beta}_1 x_i) \] 最小平方法的目標函數: \[ \mathrm{RSS} = e_1^2 + e_2^2 + \cdots + e_n^2 = \sum_{i=1}^{n} (y_i - \hat{\beta}_0 - \hat{\beta}_1 x_i)^2 \] 方程式 3.3:殘差平方和 (RSS) 最小化 RSS 的解析解 透過微積分求極值,可得最小平方估計: \[ \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} \] 方程式 3.4:最小平方係數估計 其中 \(\bar{x} = \frac{1}{n}\sum x_i\),\(\bar{y} = \frac{1}{n}\sum y_i\) 為樣本平均數。 歷史淵源 :最小平方法由 Legendre (1805) 和 Gauss (1809) 獨立提出。Gauss 更進一步證明:若誤差服從常態分布,最小平方法給出的是最大概似估計(MLE),因此是最優線性不偏估計(BLUE)——這就是著名的 Gauss-Markov 定理。 Python 實作:手刻最小平方法 try: from google.colab