如何在Matplotlib中干净地绘制statsmodels线性回归(OLS)?
在数据分析中,线性回归是一个广泛使用的方法,通常用于建模和预测。statsmodels是一个强大的Python库,用于实现线性回归和其他模型。一旦计算出模型,它通常需要进行可视化。在本教程中,我们将向您展示如何在Matplotlib中绘制clean的Statsmodels线性回归(OLS)。
首先,我们需要导入所需的库和数据。在这个例子中,我们使用一个简单的数据集,该数据集包含一个独立变量x和一个因变量y。您可以使用自己的数据集或者使用Python自带的测试数据集,如iris数据集。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import statsmodels.api as sm
#导入数据
df = pd.read_csv('data.csv')
x = df['x']
y = df['y']
接下来,我们需要计算出OLS模型和预测值。在这个例子中,我们只使用一个自变量,所以我们只需要计算一个系数。您可以根据自己的需要选择模型的复杂度。
#在x上添加常数项
x = sm.add_constant(x)
#使用OLS计算系数,并打印摘要
model = sm.OLS(y,x).fit()
print(model.summary())
#计算预测值
predictions = model.predict(x)
现在,我们可以绘制数据和回归线。为了让绘图更干净,我们将隐藏默认的Matplotlib边框和网格线,以及调整字号和标签位置。
#设置绘图风格
plt.style.use('seaborn')
#创建一个绘图对象
fig, ax = plt.subplots()
#绘制数据点
ax.scatter(x[:,1], y, alpha=0.5)
#绘制回归线
ax.plot(x[:,1], predictions, 'r-', linewidth=2)
#隐藏边框和网格线
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
ax.spines['bottom'].set_visible(False)
ax.spines['left'].set_visible(False)
ax.grid(False)
#设置标签和字号
ax.set_xlabel('x', fontsize=12)
ax.set_ylabel('y', fontsize=12)
ax.tick_params(axis='both', which='major', labelsize=10)
#调整标签位置
ax.xaxis.set_label_coords(0.5, -0.1)
ax.yaxis.set_label_coords(-0.1, 0.5)
#展示图像
plt.show()
这将产生一个干净的散点图和线性回归线。
结论
在本文中,我们向您展示了如何使用statsmodels和Matplotlib绘制干净的线性回归图。首先,我们导入数据并计算出OLS模型和预测值。接下来,我们使用Matplotlib绘制了数据,回归线和标签,并隐藏了不必要的边框和网格线。希望这篇文章能够对您有所帮助并提高您的数据可视化技能。