双指数平滑的时间序列预测

时间:2019-12-30 22:09:58

标签: python time-series forecasting

我有一个函数可以进行双指数平滑,现在我想预测我拥有的最后一个月,并计算预测的准确性,我该怎么做?

def double_exponential_smoothing(series, alpha, beta):

    result = [series[0]]
    for n in range(1, len(series)+1):
        if n == 1:
            level, trend = series[0], series[1] - series[0]
        if n >= len(series): # forecasting
            value = result[-1]
        else:
            value = series[n]
        last_level, level = level, alpha * value + (1 - alpha) * (level + trend)
        trend = beta * (level - last_level) + (1 - beta) * trend
        result.append(level + trend)
    return result

def plot_double_exponential_smoothing(series, alphas, betas):

    plt.figure(figsize=(17, 8))
    for alpha in alphas:
        for beta in betas:
            plt.plot(double_exponential_smoothing(series, alpha, beta), label="Alpha {}, beta {}".format(alpha, beta))
    plt.plot(series.values, label = "Actual")
    plt.legend(loc="best")
    plt.axis('tight')
    plt.title("Double Exponential Smoothing")
    plt.grid(True)

plot_double_exponential_smoothing(palmaD.sales, alphas=[0.5, 0.02], betas=[0.6, 0.02])

palmaD.sales是一系列每天的总销售额

这是该函数的图形: enter image description here

0 个答案:

没有答案