Python 使用Statsmodels进行线性回归
任何数据科学家都必须理解线性回归的基础知识,因为它是机器学习和统计学中的重要算法之一。Python中的许多库使得实现这种方法更加容易,其中Statsmodels是最强大的之一。本文通过使用实际数据示例来帮助理解,探讨了使用Statsmodels进行线性回归的使用。
理解线性回归
通过将线性方程拟合到观测数据中,线性回归是一种统计技术,用于建模两个变量之间的关系。其中一个变量是被检查的因变量的变化,另一个变量是解释(独立)变量。
Statsmodels概述
Statsmodels是一个专门用于统计的Python包。它建立在其他强大的库如Matplotlib、SciPy和NumPy之上。Statsmodels提供了全面的统计测试,还在多个统计模型中提供了鲁棒估计。
使用Statsmodels实现线性回归
在开始之前,请确保您已经安装了Statsmodels和其他所需的库。
pip install statsmodels pandas numpy matplotlib
示例1:简单线性回归
让我们从一个简单的线性回归示例开始,其中只有一个自变量。我们将在此示例中使用Statsmodels中的内置数据集mtcars。该数据集包括32种不同车辆的汽车性能和设计的十一个特征,以及燃油消耗数据(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拟合线性回归模型,并且summary方法提供了关于模型适配的综合信息。
示例2:多元线性回归
现在让我们转向一个稍微具有挑战性的情景,其中我们有多个自变量。在这种情况下,我们将使用重量和马力来计算公里每加仑。
# 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和weight之间的关联。
解释结果
我们的回归摘要中包含了几个统计量。变量weight(wt)的系数告诉我们,在其他变量固定的情况下,每增加一单位weight,mpg会下降多少。R-squared计算了模型能够解释的mpg变异的百分比。R-squared越接近1,模型越准确。
p值评估系数是否等于零(无效),即零假设。如果p值很低(小于0.05),则可以排除零假设。
结论
一种名为线性回归的强大统计方法可以基于几个数据变量之间的相关性进行预测。只需几行代码,利用Python的Statsmodels包实现线性回归模型的强大功能,就可以创建预测模型。
本文中的三个示例向读者展示了如何使用Statsmodels设计简单而多样的线性回归模型,以及如何在散点图上查看回归线。通过通过这些示例来使用Statsmodels包,你可以了解更多关于线性回归以及如何在Python中使用它的内容。
请记住,现实世界的数据经常包含多个变量,可能需要更复杂的模型。因此,请把这视为迈向更复杂的Python数据分析的第一步。