我已经写了一个程序,应该使用指数平滑法预测值。我有6个月的数据(从4月到9月)。基于这6个月,我希望预测未来6个月(即10月至3月)
这是我的密码:
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from statsmodels.tsa.holtwinters import ExponentialSmoothing
d = {'Month':['April','May','June','July','August','September'],'Value':[2.868,7.205,13.349,20.115,22.769,23.981]}
df = pd.DataFrame(data=d)
model = ExponentialSmoothing(df['Value'],trend='mul',seasonal='mul',seasonal_periods = 6).fit()
predict = model.forecast(6)
然而,当我看到预测值时,它的所有值都是Nans
。我不确定我在哪里犯了错误。有人能帮忙纠正这个问题吗
增加输入数据点,由于缺乏数据,我猜模型无法收敛并决定趋势和季节因素。我添加了一个额外的数据点,模型能够确定这些因素
参考资料:https://en.wikipedia.org/wiki/Exponential_smoothing#Triple_exponential_smoothing_(Holt_Winters)
看看documentation,
seasonal_periods
是季节周期中的周期数如果你看霍尔特-温特斯方程(例如,here),它包括一个季节性的术语,其移动了
m
步(其中m
等于seasonal_periods
)。这意味着,要在seasonal_periods=6
处进行预测,需要在数据6
时间步中提前输入值由于数据只包含
6
个数据点,因此无法进行任何预测可能的解决办法:
seasonal_periods
参数或对其进行更改李>相关问题 更多 >
编程相关推荐