❶ 线性回归(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等第三方库进行加速,公式推导如下:
公式
公式
将和带入可以得到:
公式
记为,同,再由向量内积的定义可以得到:
公式
多元情形可由一元情形推导出,如下:
公式
其中:
公式
所以:
公式
引入两个定理对进行进一步推导。
公式:设为非空开凸集为定义在上的实值函数,且在上二阶连续可微,若在上半正定则为上的凸函数,若在上正定则为上的严格凸函数。
公式:若为凸函数且一阶连续可微则是全局最优解的充要条件为其梯度等于零向量即:为了书写方便,我们现在令,展开然后等式两端对求导有:
公式
公式
由再对求偏导可以得到矩阵的表达式,如下:
公式
由当为正定矩阵时,令其梯度为零向量可解得方程的全局最优解即:
公式