❶ 線性回歸(Linear Regression)模型詳解(含python 代碼)
線性回歸模型詳解與Python代碼示例
線性回歸是一種統計學方法,用於描述一個或多個自變數與因變數之間的線性關系。其模型定義如下:
\[
y = \beta_0 + \beta_1x_1 + \beta_2x_2 + ... + \beta_mx_m + \epsilon
\]
其中:
- $y$ 是因變數
- $x_1, x_2, ..., x_m$ 是自變數
- $\beta_0, \beta_1, ..., \beta_m$ 是回歸系數
- $\epsilon$ 是誤差項
線性回歸模型的假設包括:
1. **線性關系**:因變數與自變數之間應滿足線性關系。
2. **同方差性**:誤差項的方差在自變數變化時保持一致。
3. **獨立觀察**:樣本數據獨立採集。
4. **無或微弱共線性**:自變數之間不存在強相關性。
5. **殘差獨立且服從正態分布**:殘差應服從均值為0的正態分布且相互獨立。
分類:
- 當$m=1$時,稱為簡單線性回歸。
- 當$m>1$時,稱為多元線性回歸。
簡單線性回歸模型定義為:
\[
y = \alpha + \beta x + \epsilon
\]
其中:
- $y$ 是因變數
- $x$ 是自變數
- $\alpha$ 是截距(或常數項)
- $\beta$ 是斜率(或回歸系數)
參數估計採用最小二乘法。目標是求解使SSE(誤差平方和)最小的$\alpha$和$\beta$。通過求導並解方程組,可以得到最小二乘估計:
\[
\alpha = \bar{y} - \beta \bar{x}
\]
\[
\beta = \frac{\sum(x-\bar{x})(y-\bar{y})}{\sum(x-\bar{x})^2}
\]
其中,$\bar{x}$和$\bar{y}$分別是$x$和$y$的均值。
統計檢驗通過t-test進行,計算出$t$值和P值來評估$\beta$的顯著性。
示例代碼實現簡單線性回歸:
python
import numpy as np
import matplotlib.pyplot as plt
import statsmodels.formula.api as smf
# 示例數據
x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 3, 4, 5, 6])
# 添加常數項
x = sm.add_constant(x)
# 模型擬合
model = smf.ols('y ~ x', data={'x': x, 'y': y})
result = model.fit()
# 輸出回歸系數
print(result.params)
# 繪制回歸線
plt.scatter(x[:,1], y)
plt.plot(x[:,1], result.params[0] + result.params[1]*x[:,1], 'r')
plt.show()
以上示例展示了如何使用Python中的`statsmodels`庫實現簡單線性回歸。對於多元線性回歸的詳細內容將在後續文章中介紹。
❷ 多元線性回歸公式推導
線性模型試圖學習一個通過屬性的線性組合來預測函數的基本形式如下:
公式
向量形式如下:
公式
一般採用最小二乘法確定模型參數,一元情形推導如下:
公式
我們令公式,等式兩邊同時對和求導有:
公式
公式
然後令式和為零得到:
公式
公式
將帶入得到:
公式
對進行化簡,最終可得:
公式
又由於和將這兩個式子帶入進行進一步化簡得到:
公式
一元情形的矩陣形式,由於Python中累加形式只能使用for循環進行迭代,運行效率較低。如果將轉化為矩陣形式可以使用numpy等第三方庫進行加速,公式推導如下:
公式
公式
將和帶入可以得到:
公式
記為,同,再由向量內積的定義可以得到:
公式
多元情形可由一元情形推導出,如下:
公式
其中:
公式
所以:
公式
引入兩個定理對進行進一步推導。
公式:設為非空開凸集為定義在上的實值函數,且在上二階連續可微,若在上半正定則為上的凸函數,若在上正定則為上的嚴格凸函數。
公式:若為凸函數且一階連續可微則是全局最優解的充要條件為其梯度等於零向量即:為了書寫方便,我們現在令,展開然後等式兩端對求導有:
公式
公式
由再對求偏導可以得到矩陣的表達式,如下:
公式
由當為正定矩陣時,令其梯度為零向量可解得方程的全局最優解即:
公式