👏

Pythonで米国CPIの時系列分析

2022/11/27に公開

この記事について

米国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