TypeError:seasonal_decompose() 得到了意外的关键字参数“period”

问题描述 投票:0回答:2

我正在尝试使用日期时间索引来消化时间序列数据。我将在我的项目中使用 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

python time-series decomposition trend
2个回答
0
投票

#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()

0
投票

更新您的问题: 我今天检查了这一点: 注意:statsmodels 的seasonal_decompose() 方法的频率参数已被弃用,并替换为 TDS 网页中的 period 参数。 和... 日期应采用日期时间格式,并且需要使用 .set_index() 设置为索引,例如 df.set_index('Date', inplace=True)。在您的情况下,日期是 t (根据您的数据集)

© www.soinside.com 2019 - 2024. All rights reserved.