1.時系列分析とは?
時系列分析とは、周期的なデータがありそうなデータに対して
未来の売り上げなどを予測する分析手法になります。
時系列分析に用いるライブラリの一つとして『statsmodel』というものがあり、とても便利なものになります。
今回はデータを可視化しながら解説します。
2.使用するデータセット
今回利用する時系列データのデータセットは、Airline Passengers(飛行機乗客数)は、Box and Jenkins (1976) の有名な時系列データです。サンプルデータとして、よく利用されます。
3.ライブラリの読み込み
# ライブラリーの読み込み
import pandas as pd
import numpy as np
from statsmodels.tsa.seasonal import seasonal_decompose
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
import matplotlib.pyplot as plt
plt.style.use('ggplot') #グラフのスタイル
plt.rcParams['figure.figsize'] = [12, 9] # グラフサイズ設定
seasonal_decomposeは移動平均モデルを用いて、トレンド、周期性、不規則性に分解させる
ものになります。
より、洗練されたモデルであるSTLという手法がありますが、今回はより直感的に理解しやすい
移動平均モデルを使います。
plot_acfとplot_pacfというものは、自己相関係数と偏自己相関係数をプロットするものになります。
4.データの読み込み
引用元データ
https://www.salesanalytics.co.jp/datascience/datascience003/
ここからデータを読み込みます。
これは月別の飛行機の旅客数になります。
# データセットの読み込み
url='https://www.salesanalytics.co.jp/591h' #データセットのあるURL
df=pd.read_csv(url, #読み込むデータのURL
index_col='Month', #変数「Month」をインデックスに設定
parse_dates=True) #インデックスを日付型に設定
df.head() #確認
Passengers
Month
1949-01-01 112
1949-02-01 118
1949-03-01 132
1949-04-01 129
1949-05-01 121
5.データの可視化
データをプロットし、全体を見ていきます。
ある時点で値が大きくなって、長期的に値が増加していることが分かります。
これが、季節性とトレンドになります。
plt.plot(df)
plt.title('Passengers') #グラフタイトル
plt.ylabel('Monthly Number of Airline Passengers') #タテ軸のラベル
plt.xlabel('Month') #ヨコ軸のラベル
plt.show()
これらの季節性、トレンド、不規則変動を分解していきます。
6.seasonal_decomposeを用いたデータの分解
以下の記述で分解することが出来ました。
STL分解だとさらにきれいに分解することができます。
result_decompose = seasonal_decompose(df.Passengers, model='additive',period=period)
result_decompose.plot()
plt.show()