時系列データとは、ある一時期の状態を表すような、時間的な変化を、連続的に観測して得られた値の系列のことです。例えば、毎日の売上データ、毎時間の気温、月ごとの来客数などです。時系列データの利用は、気候パターンの解析、交通状況の監視、人口統計学的傾向の調査データの事です。
一口に時間に関するデータといっても複数のタイプがあります。
・点過程データ
間隔が一定ではないようなデータのタイプです。点過程データの目的は、事象が発生したという事を分析することです。地震・故障のタイミングや来客のデータに使われます。数量よりも発生するかどうかを分析のターゲットにしています。
・時系列データ
時間的な変化を、連続的に得られたデータでそれぞれを直線で結んだものになります。通常時間のデータといえば、こちらを想定しています。
・キューデータ
点過程データの一種になります。コールセンターの着信数・応答数、トランザクションログ、ATMの利用等の分析の時のデータタイプになります。
この中でも時系列データは「過去」と「現在」、そして「未来」があり、これらがつながっているデータであります。前の値によって、前の前の値が、現在の値に影響をしていることを「自己相関」と言います。データを時系列に並べることによって、過去の様子を分析することも可能ですし、これから先の事象について予測することが可能になります。しかし点過程データやキューデータでは過去に大きく依存しているかというとそうではありません。地震が起こるかどうかが前の起こったデータ見るのが難しいからです。また故障のタイミングも他の要因に起因している事も多く、要因から分析する事も多いからです。
では、時系列データを作成し簡単に分析してみます。
Python
import pandas as pd
import numpy as np
import matplotlib.pylab as plt
dateparse = lambda dates: pd.datetime.strptime(dates, ‘%Y-%m’)
data = pd.read_csv(‘AirPassengers.csv’, parse_dates=[‘Month’], index_col=’Month’,date_parser=dateparse)
print (data.head())
plt.plot(data)
Month #Passengers
1949-01-01 112
1949-02-01 118
1949-03-01 132
1949-04-01 129
1949-05-01 121
# Autoregression
from statsmodels.graphics.tsaplots import plot_acf
plot_acf(data, lags=12)
plt.show()
時間軸でデータが変わっていく要因として、次の4つがあります。
傾向変動
傾向変動(トレンド)は、長期的に見て上昇(増加)傾向や減少傾向にあるかを判断する項目になります。例えばですが、地球温暖化と言われている地球の温度は今上昇傾向(アップトレンド)と言われています。
季節変動
季節変動(シーズナル)は、文字通り季節ごとに繰り返される変化を示すものです。例えばですが、ゴールデンウイークに観光客が増えるといった季節的な要因を示すものになります。
循環変動
循環変動(サイクル)は、季節変動と違い長周期の繰り返し変動になります。例えばですが、1年のうちで気温が日本だと夏は暑く、冬が寒いというのが繰り返されます。しかし有史以来、氷河期という寒い時期もあれば、恐竜がいた温暖な時期もあります。このように長周期で繰り返すものになります。
規則変動不
不規則変動(ノイズ)は、上記3つの変動要素では説明がつかない短期的な変化を示すものです。
実際はこれら4つの要素は独立して測定されるわけでなく、回帰部分も含めて全ての要素が組み合わさった結果としてのデータが測定されます。
Statsmodelsのライブラリーでdecompositionの図を作成します。
import statsmodels.api as sm
decomposition = sm.tsa.seasonal_decompose(data, model=’additive’)
fig = decomposition.plot()
plt.show()