numpy 将回归扩展到数据之外

55ooxyrt  于 12个月前  发布在  其他
关注(0)|答案(2)|浏览(89)

我使用Matplotlib和Numpy在时间序列图上绘制线性回归,以预测未来的趋势。
生成回归似乎并不特别困难,但要让回归线延伸到最后一个数据点之外却很有挑战性:

我如何扩展回归?

9nvpjoqh

9nvpjoqh1#

当您评估回归模型时,您正在预测输入日期的提交值。要预测更大的范围,您需要增加评估模型的日期范围。我也会使用np.polyval而不是列表解析,只是因为它更紧凑:

# Generate data like the question
observed_dates = pd.date_range("jan 2004", "april 2013", freq="M")
submissions = np.random.normal(5000, 100, len(observed_dates))
submissions += np.arange(len(observed_dates)) * 10
submissions[::12] += 800

# Plot the observed data
plt.plot(observed_dates, submissions, marker="o")

# Fit a model and predict future dates
predict_dates = pd.date_range("jan 2004", "jan 2020", freq="M")
model = np.polyfit(observed_dates.asi8, submissions, 1)
predicted = np.polyval(model, predict_dates.asi8)

# Plot the model
plt.plot(predict_dates, predicted, lw=3)

s4chpxco

s4chpxco2#

如果你想将回归线延伸到数据之外,例如,覆盖整个x范围,你可以这样做(只需更改最后3条线):

import numpy as np
X=np.arange(xmin, xmax, 50)
line=beta1*X**2+beta2*X+beta3
plt.plot(X, line, 'r-', lw=5.)

相关问题