以下の記事を全面的に参考にさせていただきました。
data.gunosy.io
上の記事では電力使用量のトレンドを抽出していますが、ここでは(電力使用量とかなり似通っていますが)R の組み込みデータである UKgas(1960年から1986年までの四半期ごとのイギリスのガス消費量)をつかいます。
Python から読み込む都合上、UKgas は以下のように csv に出力しておきます。
qtr, gas
1960-03, 160.1
1960-06, 129.7
1960-09, 84.8
1960-12, 120.1
1961-03, 160.1
(以下略)
UKgas をそのままプロットすると以下です。1960-03, 160.1
1960-06, 129.7
1960-09, 84.8
1960-12, 120.1
1961-03, 160.1
(以下略)
トレンド成分、季節成分、残差に分解したのが以下です。
季節成分は以下です。毎年1~3月がガスの消費量が大きい。
[ 175.13810096 -36.14122596 -168.96766827 29.97079327]
# -*- coding: utf-8 -*- import numpy import pandas import matplotlib.pyplot as plt import statsmodels.api as sm if __name__ == "__main__": x = pandas.read_csv('UKgas.csv', skiprows=1, names=('qtr', 'gas')) x['qtr'] = pandas.to_datetime(x['qtr']) # plt.plot(x['qtr'], x['gas']) # plt.show() res = sm.tsa.seasonal_decompose(x['gas'].values, freq=4) res.plot() plt.show() print res.seasonal[0:4]