如何在 Matplotlib 中清晰地绘制 statsmodels 线性回归 (OLS)?
matplotlibpythondata visualization
我们可以用非线性曲线但线性数据绘制 statsmodels 线性回归 (OLS)。
步骤
设置图形大小并调整子图之间和周围的填充。
要创建一个新的,我们可以使用 seed() 方法。
初始化样本和 sigma 变量的数量。
使用 numpy 创建线性数据点 x、X、beta、t_true、y 和 res。
Res 是一个普通的最小二乘类实例。
计算标准差。预测的置信区间适用于 WLS 和 OLS,而不适用于一般 GLS,即独立但不相同分布的观测值。
使用 subplot() 方法创建一个图形和一组子图。
使用 plot() 方法绘制所有曲线,其中包含 (x, y)、(x, y_true)、(x, res.fittedvalues)、(x, iv_u) 和 (x, iv_l) 个数据点。
将图例放置在图上。
要显示图形,请使用 show() 方法。
示例
import numpy as np from matplotlib import pyplot as plt from statsmodels import api as sm from statsmodels.sandbox.regression.predstd import wls_prediction_std plt.rcParams["figure.figsize"] = [7.50, 3.50] plt.rcParams["figure.autolayout"] = True np.random.seed(9876789) nsample = 50 sig = 0.5 x = np.linspace(0, 20, nsample) X = np.column_stack((x, np.sin(x), (x - 5) ** 2, np.ones(nsample))) beta = [0.5, 0.5, -0.02, 5.] y_true = np.dot(X, beta) y = y_true + sig * np.random.normal(size=nsample) res = sm.OLS(y, X).fit() prstd, iv_l, iv_u = wls_prediction_std(res) fig, ax = plt.subplots() ax.plot(x, y, 'o', label="data") ax.plot(x, y_true, 'b-', label="True") ax.plot(x, res.fittedvalues, 'r--.', label="OLS") ax.plot(x, iv_u, 'r--') ax.plot(x, iv_l, 'r--') ax.legend(loc='best') plt.show()