如何在Matplotlib中干净地绘制statsmodels线性回归(OLS)?

如何在Matplotlib中干净地绘制statsmodels线性回归(OLS)?

我们可以利用非线性曲线和线性数据绘制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()

输出

如何在Matplotlib中干净地绘制statsmodels线性回归(OLS)?

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程