LoginSignup
0
1

More than 1 year has passed since last update.

statsmodelsのseasonal_decomposeを活用した時系列データの可視化

Last updated at Posted at 2022-08-27

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

download.png

これらの季節性、トレンド、不規則変動を分解していきます。

6.seasonal_decomposeを用いたデータの分解

以下の記述で分解することが出来ました。
STL分解だとさらにきれいに分解することができます。

result_decompose = seasonal_decompose(df.Passengers, model='additive',period=period)
    
result_decompose.plot()
plt.show()

download.png

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1