我希望使用 Python 对每月数据进行季节性调整。正如您从这些系列中看到的那样:www.emconfidential.com,数据中有很高的季节性成分。我想对此进行调整,以便更好地判断系列趋势是上升还是下降。有人知道如何使用 scipy 或其他 Python 库轻松做到这一点吗?
问问题
15687 次
5 回答
15
Statsmodels 可以做到这一点。它们具有基本的季节性分解,也是 Census X13 调整的包装。您还可以使用 rpy2 访问 R 的一些优秀的 SA 库。这是 statsmodels 季节性分解:
import pandas as pd
import statsmodels.api as sm
import matplotlib.pyplot as plt
pd.options.display.mpl_style = 'default'
%matplotlib inline
dta = sm.datasets.co2.load_pandas().data.resample("M").fillna(method="ffill")
res = sm.tsa.seasonal_decompose(dta)
fig = res.plot()
fig.set_size_inches(10, 5)
plt.tight_layout()
http://statsmodels.sourceforge.net/0.6.0/release/version0.6.html
于 2015-03-10T16:46:33.073 回答
2
现在有一个似乎正是您正在寻找的包!查看seasonal
包装,这是链接。我个人觉得它非常有用,想知道其他人的想法。
于 2016-09-22T17:29:53.630 回答
1
我建议由 Facebook 的数据科学团队开发的Prophet 。它具有 Python+R API 并用于时间序列预测,尽管您可以将其仅用于将序列分解为其组件(趋势与季节性)。您可以轻松调整和可视化分解:
from fbprophet import Prophet
import numpy as np
import pandas as pd
# Create series
np.random.seed(0)
x = np.arange(0, 10, .285)
y_periodic = np.sin(x*np.pi)
y_random = np.random.normal(size=len(x))
y_trend = x / 10.
df = pd.DataFrame({'ds': pd.date_range('01-01-2017', periods=len(x)),
'y': y_periodic})
df.head() # has to be a DataFrame with columns "ds" and "y"
df.set_index('ds').plot(style='-*')
# Estimate the model
m = Prophet()
m.fit(df);
forecast = m.predict(df)
m.plot_components(forecast);
于 2018-01-17T14:55:27.857 回答
0
不确定这方面的编程,但我会认真考虑移动平均线来解决这个问题。
于 2010-01-14T20:01:07.447 回答