Python 回归与残差分析

回归分析是数据科学中的重要工具,广泛应用于许多领域,如经济、医学和工程等。它通过寻找因变量(响应变量)与一个或多个自变量(预测变量)之间的关系来预测结果。然而,进行回归后,我们常常需要分析残差,这对于诊断模型的质量至关重要。

残差的概念

在回归模型中,残差是实际观察值与预测值之间的差距。公式为:

[ \text{残差} = \text{实际值} - \text{预测值} ]

如果模型拟合得好,残差应该是随机分布的,没有系统性的模式。反之,则可能意味着模型没有捕捉到某些重要的信息。

Python 回归分析示例

我们首先使用 Python 的 scikit-learn 库进行线性回归分析,并计算残差。以下是具体步骤和代码示例。

示例代码

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression

# 创建一个示例数据集
np.random.seed(0)
x = 2.5 * np.random.randn(100) + 3  # 自变量
residuals = 0.5 * np.random.randn(100)  # 生成一些残差
y = 2 + 0.3 * x + residuals  # 因变量

# 将数据分为训练集和测试集
x = x.reshape(-1, 1)  # 转换为列向量
X_train, X_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=42)

# 创建线性回归模型
model = LinearRegression()
model.fit(X_train, y_train)

# 预测测试集
y_pred = model.predict(X_test)

# 计算残差
residuals = y_test - y_pred

# 可视化结果
plt.figure(figsize=(12, 6))

# 散点图:实际值 vs 预测值
plt.subplot(1, 2, 1)
plt.scatter(X_test, y_test, color='blue', label='实际值')
plt.scatter(X_test, y_pred, color='red', label='预测值')
plt.title('实际值与预测值')
plt.xlabel('自变量')
plt.ylabel('因变量')
plt.legend()

# 残差图
plt.subplot(1, 2, 2)
plt.scatter(y_pred, residuals, color='purple')
plt.axhline(y=0, color='green', linestyle='--')
plt.title('残差图')
plt.xlabel('预测值')
plt.ylabel('残差')

plt.tight_layout()
plt.show()

在这个示例中,我们生成了一个线性关系的数据集,并使用 scikit-learn 进行线性回归拟合。随后,计算并可视化了残差。

类图示例

我们可以用类图来展示线性回归模型的基本结构:

classDiagram
class LinearRegression {
  +fit(X, y)
  +predict(X)
  -calculate_residuals(y_true, y_pred)
}

这个 LinearRegression 类包含了用于训练模型的 fit 方法、用于预测的 predict 方法,以及一个计算残差的私有方法 calculate_residuals

旅行图示例

在分析残差时,我们需要进行一系列的步骤,可以用旅行图来表示这个过程:

journey
    title 残差分析过程
    section 数据准备
      加载数据: 5: Me
      数据清理: 4: Me
    section 模型训练
      划分训练集和测试集: 5: Me
      拟合模型: 5: Me
    section 预测与分析
      生成预测: 5: Me
      计算残差: 5: Me
      可视化残差: 5: Me

结论

通过本篇文章,我们了解了回归分析及残差的概念,并学习了如何使用 Python 进行简单的线性回归分析。残差分析是模型评估的重要步骤,通过观察残差的分布情况,我们可以判断模型是否恰当地捕捉了数据中的规律。希望读者能够通过本章的示例,深入了解回归分析的基本方法和重要性。