我正在尝试使用日期时间索引来消化时间序列数据。我将在我的项目中使用 period,但它给我一个错误,说没有名为 period 的参数。我找不到任何东西。但我看到 statsmodel 网站上提到了间隔,有谁知道我如何克服这种情况?
from statsmodels.tsa.seasonal import seasonal_decompose
# Multiplicative Decomposition
decomp_mul = seasonal_decompose(df['meantemp'], model='multiplicative', extrapolate_trend='freq', period=365)
decomp_mul.plot()
plt.show()
TypeError Traceback(最近一次调用最后一次) 在 () 2 3 # 乘法分解 ----> 4 decomp_mul =seasonal_decompose(df['meantemp'], model='multiplicative', extrapolate_trend='freq', period=365) 5 decomp_mul.plot() 6 plt.show()
TypeError:seasonal_decompose() 得到了意外的关键字参数“period”
我使用谷歌colab
#Prueba con este código que me funcionó en colab #freq=12 es el número de periodos en un año para este caso
马伟明的《Mastering Python for Finance》(第二版,第 202 页) Te dejo lo que dice junto con el codigo
季节性分解
分解涉及对趋势和季节性建模,然后删除它们。我们可以使用
statsmodel.tsa.seasonal
模块使用移动平均值对非平稳时间序列数据集进行建模,并删除其趋势和季节性分量。
通过重用包含上一节中数据集对数的
df_log
变量,我们得到以下结果:
from statsmodels.tsa.seasonal import seasonal_decompose
decompose_result = seasonal_decompose(df_log.dropna(), freq=12)
df_trend = decompose_result.trend
df_season = decompose_result.seasonal
df_residual = decompose_result.resid
seasonal_decompose()
的statsmodels.tsa.seasonal
方法需要一个参数freq
,它是一个整数值,指定每个季节周期的周期数。
由于我们使用的是每月数据,因此我们预计季节性年份有12个周期。 该方法返回一个具有三个属性的对象,主要是趋势和季节性成分,以及去除趋势和季节性成分后的最终 pandas 系列数据。
有关
seasonal_decompose()
模块的 statsmodels.t sa.seasonal
方法的更多信息可以在 here 找到
让我们通过运行以下 Python 代码来可视化不同的图:
plt.rcParams['figure.figsize'] = (12, 8)
fig = decompose_result.plot()
更新您的问题: 我今天检查了这一点: 注意:statsmodels 的seasonal_decompose() 方法的频率参数已被弃用,并替换为 TDS 网页中的 period 参数。 和... 日期应采用日期时间格式,并且需要使用 .set_index() 设置为索引,例如 df.set_index('Date', inplace=True)。在您的情况下,日期是 t (根据您的数据集)