正在打开模型库
正在打开模型库
样本少、趋势较光滑时,用累加生成把序列变成更有规律的曲线再预测。
原始序列可能晃,累加一次后常常接近指数规律,于是对累加序列建模,再还原回去。
只有几年数据、题目却要你外推未来时,优先考虑灰色预测,再拿另一种方法对照。
Python 代码
import numpy as np
x0 = np.array([120, 132, 141, 150, 166], dtype=float)
x1 = np.cumsum(x0)
z = 0.5 * (x1[1:] + x1[:-1])
B = np.column_stack((-z, np.ones_like(z)))
u = np.linalg.lstsq(B, x0[1:], rcond=None)[0]
a, b = u
def predict(k):
return (x0[0] - b / a) * np.exp(-a * k) + b / a
x1_hat = np.array([predict(k) for k in range(len(x0) + 2)])
x0_hat = np.r_[x1_hat[0], np.diff(x1_hat)]
print(np.round(x0_hat, 2))