《线性回归》
第一部分:简单线性回归
-
回归模型的建立
- 简单线性回归用于分析一个自变量(XXX)与一个因变量(YYY)之间的线性关系。回归模型的形式为:
Y=β0+β1X+ϵ Y = \beta_0 + \beta_1 X + \epsilon Y=β0+β1X+ϵ
其中:- YYY:因变量(目标变量)
- XXX:自变量(预测变量)
- β0\beta_0β0:截距(回归常数)
- β1\beta_1β1:回归系数(斜率)
- ϵ\epsilonϵ:误差项(随机误差)
- 简单线性回归用于分析一个自变量(XXX)与一个因变量(YYY)之间的线性关系。回归模型的形式为:
-
最小二乘法估计参数
- 最小二乘法(Ordinary Least Squares,OLS)用于估计回归模型中的参数(截距和回归系数),通过最小化观测值与拟合值之间的误差平方和来进行估计。回归系数的估计公式为:
β1^=n∑XiYi−∑Xi∑Yin∑Xi2−(∑Xi)2 \hat{\beta_1} = \frac{n \sum{X_i Y_i} - \sum{X_i} \sum{Y_i}}{n \sum{X_i^2} - (\sum{X_i})^2} β1^=n∑Xi2−(∑Xi)2n∑XiYi−∑Xi∑Yi
β0^=∑Yi−β1^∑Xin \hat{\beta_0} = \frac{\sum{Y_i} - \hat{\beta_1} \sum{X_i}}{n} β0^=n∑Yi−β1^∑Xi
其中,β1^\hat{\beta_1}β1^ 和 β0^\hat{\beta_0}β0^ 是通过最小化误差平方和得到的回归系数估计值。
- 最小二乘法(Ordinary Least Squares,OLS)用于估计回归模型中的参数(截距和回归系数),通过最小化观测值与拟合值之间的误差平方和来进行估计。回归系数的估计公式为:
-
练习案例:
-
假设你有以下数据:X=[1,2,3,4,5]X = [1, 2, 3, 4, 5]X=[1,2,3,4,5],Y=[2,4,5,4,5]Y = [2, 4, 5, 4, 5]Y=[2,4,5,4,5],求解简单线性回归模型。
-
解法:
- 计算 β1^\hat{\beta_1}β1^ 和 β0^\hat{\beta_0}β0^。
- 将估计值代入回归模型。
-
第二部分:多重线性回归
-
多变量回归模型
- 多重线性回归用于分析多个自变量(X1,X2,…,XpX_1, X_2, \dots, X_pX1,X2,…,Xp)与一个因变量(YYY)之间的关系。回归模型的形式为:
Y=β0+β1X1+β2X2+⋯+βpXp+ϵ Y = \beta_0 + \beta_1 X_1 + \beta_2 X_2 + \dots + \beta_p X_p + \epsilon Y=β0+β1X1+β2X2+⋯+βpXp+ϵ
其中,X1,X2,…,XpX_1, X_2, \dots, X_pX1,X2,…,Xp 是自变量,β1,β2,…,βp\beta_1, \beta_2, \dots, \beta_pβ1,β2,…,βp 是回归系数,β0\beta_0β0 是截距,ϵ\epsilonϵ 是误差项。
- 多重线性回归用于分析多个自变量(X1,X2,…,XpX_1, X_2, \dots, X_pX1,X2,…,Xp)与一个因变量(YYY)之间的关系。回归模型的形式为:
-
回归系数的估计
- 多重线性回归模型中的回归系数可以通过最小二乘法估计。其参数估计值通过矩阵运算得到:
β^=(XTX)−1XTY \hat{\beta} = (X^T X)^{-1} X^T Y β^=(XTX)−1XTY
其中,XXX 是自变量的设计矩阵,YYY 是因变量的列向量,β^\hat{\beta}β^ 是回归系数的估计值。
- 多重线性回归模型中的回归系数可以通过最小二乘法估计。其参数估计值通过矩阵运算得到:
-
假设检验
- 对于多重线性回归模型中的每个回归系数,通常进行假设检验,以确定其是否显著。零假设为回归系数等于零(即该自变量对因变量没有影响),备择假设为回归系数不等于零。
-
练习案例:
- 假设你有以下数据:
X=[1213232434],Y=[12345] X = \begin{bmatrix} 1 & 2 \\ 1 & 3 \\ 2 & 3 \\ 2 & 4 \\ 3 & 4 \end{bmatrix}, \quad Y = \begin{bmatrix} 1 \\ 2 \\ 3 \\ 4 \\ 5 \end{bmatrix} X=1122323344,Y=12345
求解多重线性回归模型,并解释回归系数的意义。
- 假设你有以下数据:
第三部分:回归模型的诊断
-
拟合优度(R平方值)
- 拟合优度(Goodness of Fit)是衡量回归模型拟合效果的指标,通常使用 R2R^2R2 值来表示。R2R^2R2 值的范围为 0 到 1,越接近 1 表示模型越能解释因变量的变异性。其计算公式为:
R2=1−∑(Yi−Y^i)2∑(Yi−Yˉ)2 R^2 = 1 - \frac{\sum{(Y_i - \hat{Y}_i)^2}}{\sum{(Y_i - \bar{Y})^2}} R2=1−∑(Yi−Yˉ)2∑(Yi−Y^i)2
其中,YiY_iYi 是实际值,Y^i\hat{Y}_iY^i 是预测值,Yˉ\bar{Y}Yˉ 是因变量的均值。
- 拟合优度(Goodness of Fit)是衡量回归模型拟合效果的指标,通常使用 R2R^2R2 值来表示。R2R^2R2 值的范围为 0 到 1,越接近 1 表示模型越能解释因变量的变异性。其计算公式为:
-
残差分析
- 残差是观测值与回归模型预测值之间的差异。残差分析用于检验回归模型的假设,包括线性关系、正态性、同方差性等。
- 常见的残差图有残差-拟合值图、QQ图等。
-
异常值检测
- 在回归分析中,异常值指的是偏离拟合模型的个别数据点。异常值可能会严重影响回归结果,因此需要通过残差分析来检测和处理异常值。
-
练习案例:
- 给定一组数据,计算拟合优度 R2R^2R2,并绘制残差图,分析模型拟合效果。
第四部分:课堂活动
-
活动目的
- 通过具体的实际问题,学生能够进行简单和多重线性回归分析,并解读回归系数的意义。
- 学生将能够计算回归模型的 R平方值,并判断模型的拟合效果。
-
活动任务
- 给定一组市场数据,其中包括广告费用(自变量)和销售额(因变量),利用简单线性回归分析广告费用与销售额的关系。然后,计算 R平方值并判断模型的拟合效果。
解法步骤:
- 根据给定数据建立回归模型,计算回归系数。
- 计算 R2R^2R2 值,判断回归模型的拟合优度。
- 绘制残差图,检查模型的拟合效果。
Python 代码实现示例
1. 简单线性回归
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
# 给定数据
X = np.array([1, 2, 3, 4, 5]).reshape(-1, 1) # 自变量
Y = np.array([2, 4, 5, 4, 5]) # 因变量
# 建立回归模型
model = LinearRegression()
model.fit(X, Y)
# 回归系数
beta_0 = model.intercept_
beta_1 = model.coef_[0]
print(f"回归系数: 截距 = {beta_0}, 斜率 = {beta_1}")
# 预测
Y_pred = model.predict(X)
# 绘图
plt.scatter(X, Y, color='red')
plt.plot(X, Y_pred, color='blue')
plt.title('Simple Linear Regression')
plt.xlabel('X')
plt.ylabel('Y')
plt.show()
2. 多重线性回归
from sklearn.linear_model import LinearRegression
# 给定数据
X = np.array([[1, 2], [1, 3], [2, 3], [2, 4], [3, 4]]) # 自变量
Y = np.array([1, 2, 3, 4, 5]) # 因变量
# 建立回归模型
model = LinearRegression()
model.fit(X, Y)
# 回归系数
beta_0 = model.intercept_
beta_1, beta_2 = model.coef_
print(f"回归系数: 截距 = {beta_0}, 斜率1 = {beta_1}, 斜率2 = {beta_2}")
# 预测
Y_pred = model.predict(X)
# 绘图
plt.scatter([i[0] for i in X], Y, color='red') # 绘制自变量1与因变量的散点图
plt.plot([i[0] for i in X], Y_pred, color='blue')
plt.title('Multiple Linear Regression')
plt.xlabel('X1')
plt.ylabel('Y')
plt.show()
3. 计算R平方值
from sklearn.metrics import r2_score
# 给定真实值和预测值
Y_true = np.array([1, 2, 3, 4, 5])
Y_pred = np.array([1.2, 2.1, 2.9, 4.1, 4.9])
# 计算R平方值
r2 = r2_score(Y_true, Y_pred)
print(f"R平方值: {r2}")
4. 残差分析
# 计算残差
residuals = Y - Y_pred
# 绘制残差图
plt.scatter(Y_pred, residuals)
plt.axhline(y=0, color='black', linestyle='--')
plt.title('Residual Plot')
plt.xlabel('Fitted values')
plt.ylabel('Residuals')
plt.show()
总结
- 简单线性回归:用于分析一个自变量与因变量之间的线性关系,通过最小二乘法估计回归系数。
- 多重线性回归:用于分析多个自变量与因变量之间的关系,回归系数的估计通过矩阵运算实现。
- 回归模型的诊断:通过 R平方值和残差分析等方法判断回归模型的拟合效果,并进行异常值检测。
通过 Python 代码,可以实现回归分析,计算 R平方值,并进行残差分析,以帮助判断模型的拟合效果。