概率论与数理统计之线性回归

《线性回归》

第一部分:简单线性回归
  1. 回归模型的建立

    • 简单线性回归用于分析一个自变量(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ϵ:误差项(随机误差)
  2. 最小二乘法估计参数

    • 最小二乘法(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^=nXi2(Xi)2nXiYiXiYi
      β0^=∑Yi−β1^∑Xin \hat{\beta_0} = \frac{\sum{Y_i} - \hat{\beta_1} \sum{X_i}}{n} β0^=nYiβ1^Xi
      其中,β1^\hat{\beta_1}β1^β0^\hat{\beta_0}β0^ 是通过最小化误差平方和得到的回归系数估计值。
  3. 练习案例:

    • 假设你有以下数据: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. 计算 β1^\hat{\beta_1}β1^β0^\hat{\beta_0}β0^
      2. 将估计值代入回归模型。

第二部分:多重线性回归
  1. 多变量回归模型

    • 多重线性回归用于分析多个自变量(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ϵ 是误差项。
  2. 回归系数的估计

    • 多重线性回归模型中的回归系数可以通过最小二乘法估计。其参数估计值通过矩阵运算得到:
      β^=(XTX)−1XTY \hat{\beta} = (X^T X)^{-1} X^T Y β^=(XTX)1XTY
      其中,XXX 是自变量的设计矩阵,YYY 是因变量的列向量,β^\hat{\beta}β^ 是回归系数的估计值。
  3. 假设检验

    • 对于多重线性回归模型中的每个回归系数,通常进行假设检验,以确定其是否显著。零假设为回归系数等于零(即该自变量对因变量没有影响),备择假设为回归系数不等于零。
  4. 练习案例:

    • 假设你有以下数据:
      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
      求解多重线性回归模型,并解释回归系数的意义。

第三部分:回归模型的诊断
  1. 拟合优度(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(YiYˉ)2(YiY^i)2
      其中,YiY_iYi 是实际值,Y^i\hat{Y}_iY^i 是预测值,Yˉ\bar{Y}Yˉ 是因变量的均值。
  2. 残差分析

    • 残差是观测值与回归模型预测值之间的差异。残差分析用于检验回归模型的假设,包括线性关系、正态性、同方差性等。
    • 常见的残差图有残差-拟合值图、QQ图等。
  3. 异常值检测

    • 在回归分析中,异常值指的是偏离拟合模型的个别数据点。异常值可能会严重影响回归结果,因此需要通过残差分析来检测和处理异常值。
  4. 练习案例:

    • 给定一组数据,计算拟合优度 R2R^2R2,并绘制残差图,分析模型拟合效果。

第四部分:课堂活动
  1. 活动目的

    • 通过具体的实际问题,学生能够进行简单和多重线性回归分析,并解读回归系数的意义。
    • 学生将能够计算回归模型的 R平方值,并判断模型的拟合效果。
  2. 活动任务

    • 给定一组市场数据,其中包括广告费用(自变量)和销售额(因变量),利用简单线性回归分析广告费用与销售额的关系。然后,计算 R平方值并判断模型的拟合效果。

    解法步骤

    1. 根据给定数据建立回归模型,计算回归系数。
    2. 计算 R2R^2R2 值,判断回归模型的拟合优度。
    3. 绘制残差图,检查模型的拟合效果。

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()

总结

  1. 简单线性回归:用于分析一个自变量与因变量之间的线性关系,通过最小二乘法估计回归系数。
  2. 多重线性回归:用于分析多个自变量与因变量之间的关系,回归系数的估计通过矩阵运算实现。
  3. 回归模型的诊断:通过 R平方值和残差分析等方法判断回归模型的拟合效果,并进行异常值检测。

通过 Python 代码,可以实现回归分析,计算 R平方值,并进行残差分析,以帮助判断模型的拟合效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值