使用 Statsmodels 在 Python 中进行线性回归


任何数据科学家都必须理解线性回归的基础知识,因为它是在机器学习和统计学中的一项关键算法。Python 中的许多库简化了这种方法的实现,其中 Statsmodels 是功能最强大的库之一。本文探讨了使用 Statsmodels 进行线性回归,并使用来自真实数据的示例来帮助理解。

理解线性回归

线性回归是一种统计方法,通过将线性方程拟合到观察到的数据来模拟两个变量之间的关系。其中一个变量是因变量,其变化正在被研究,而另一个变量是解释(自变量)。

Statsmodels 概述

Statsmodels 是一个专门为统计而创建的 Python 包。它建立在其他强大的库(如 Matplotlib、SciPy 和 NumPy)之上。Statsmodels 提供了全面的统计检验,并且还提供了几种统计模型的稳健估计。

使用 Statsmodels 实现线性回归

在开始之前,请确保已安装 Statsmodels 和任何其他必需的库 -

pip install statsmodels pandas numpy matplotlib

示例 1:简单线性回归

让我们从一个简单的线性回归示例开始,其中只有一个自变量。我们将使用 mtcars 数据集,它是 Statsmodels 中的内置数据集,作为此示例。此数据包含 32 辆不同汽车的 11 个汽车性能和设计特征,以及燃油消耗数据 (mpg)。

首先,加载数据并导入相关的库

import statsmodels.api as sm
import matplotlib.pyplot as plt
import pandas as pd

# load mtcars dataset
mtcars = sm.datasets.get_rdataset("mtcars").data

现在,让我们拟合一个简单的线性回归模型,其中我们试图使用 wt(汽车重量)来预测 mpg

# Define dependent and independent variables
X = mtcars["wt"]
y = mtcars["mpg"]

# Add a constant to the independent value
X = sm.add_constant(X)

# Perform linear regression
model = sm.OLS(y, X)
results = model.fit()

# Print out the statistics
print(results.summary())

在此示例中,线性回归模型使用 sm.OLS 拟合,并且摘要方法提供了有关模型拟合的全面信息。

示例 2:多元线性回归

现在让我们继续讨论一个稍微复杂的情况,其中我们有多个自变量。在这种情况下,我们将使用重量和马力来预测 mpg。

# Define dependent and independent variables
X = mtcars[["wt", "hp"]]
y = mtcars["mpg"]

# Add a constant to the independent value
X = sm.add_constant(X)

# Perform linear regression
model = sm.OLS(y, X)
results = model.fit()

# Print out the statistics
print(results.summary())

现在 X 有两列,一列用于重量,另一列用于马力。

示例 3:绘制结果

最后,让我们以可视化的方式查看第一个示例中的回归模型。我们将回归线添加到原始数据 (mpg vs. wt) 并绘制它。

# Plot the original data
plt.scatter(mtcars["wt"], mtcars["mpg"])

# Plot the regression line
plt.plot(mtcars["wt"], results.fittedvalues, 'r')

# Set the labels and show the plot
plt.xlabel('wt')
plt.ylabel('mpg')
plt.title('Linear Regression Plot of mpg vs wt')
plt.show()

在此代码片段中,我们使用模型中的拟合值将拟合的线性回归线(红色)添加到由 matplotlib 创建的原始数据的散点图中。该图以可视化的方式说明了 mpg 和重量之间的关系。

解释结果

回归摘要包含几个统计量度。重量 (wt) 的系数告诉我们,在其他变量固定不变的情况下,每增加一个单位的重量,mpg 将下降多少。R 平方计算模型可以解释的 mpg 变异百分比。R 平方越接近 1,模型就越准确。

p 值评估系数是否等于零(无影响),这是原假设。如果 p 值较低(< 0.05),则可以拒绝原假设。

结论

线性回归是一种强大的统计方法,可以根据多个数据变量之间的相关性进行预测。由于 Python 的 Statsmodels 包提供了强大的功能来实现线性回归模型,因此只需几行代码即可创建预测模型。

本文中的三个示例向读者展示了如何使用 Statsmodels 设计简单和多元线性回归模型,以及如何在散点图上查看回归线。通过完成这些示例,您可以更深入地了解线性回归以及如何在 Python 中使用 Statsmodels 包进行线性回归。

请记住,现实世界中的数据通常包含多个变量,并且可能需要更复杂的模型。因此,请将此视为更高级 Python 数据分析的第一步。

更新于: 2023 年 7 月 18 日

470 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告