👏
Pythonで米国CPIの時系列分析
この記事について
米国CPIデータを取得するPythonのコードの記事の続きです。
時系列モデル
差分系列を可視化します。
px.line(cpi.diff().reset_index(),
x="DATE",
y="CPIAUCNS"
)
変化率を可視化します。
px.line(cpi.pct_change().reset_index(),
x="DATE",
y="CPIAUCNS"
)
statsmodelsの状態空間モデルのUnobservedComponentを使います。
import statsmodels.api as sm
local_level_model_season = sm.tsa.UnobservedComponents(
endog=cpi,
level=True,
stochastic_level=True,
trend=True,
stochastic_trend=True,
seasonal=12,
stochastic_seasonal=True
)
res_local_level_season = local_level_model_season.fit()
print(res_local_level_season.summary())
fig_local_level_season = res_local_level_season.plot_components()
トレンド成分をPlotlyで可視化します。
trend = pd.Series(res_local_level_season.trend['smoothed'], index=cpi.index).reset_index()
trend.columns = ["DATE", "trend"]
px.line(trend,
x="DATE",
y="trend"
)
季節成分をPlotlyで可視化します。
seasonal = pd.Series(res_local_level_season.seasonal['smoothed'], index=cpi.index).reset_index()
seasonal.columns = ["DATE", "seasonal"]
px.line(seasonal,
x="DATE",
y="seasonal"
)
Prophet
Prophetで将来予測します。
from prophet import Prophet
m = Prophet()
m.fit(df)
将来予測を可視化します。
future = m.make_future_dataframe(periods=120, freq='MS')
forecast = m.predict(future)
fig1 = m.plot(forecast)
成分ごとに可視化します。
fig2 = m.plot_components(forecast)
Plotlyで可視化します。
from prophet.plot import plot_plotly, plot_components_plotly
plot_plotly(m, forecast)
plot_components_plotly(m, forecast)
Discussion