読者です 読者をやめる 読者になる 読者になる

雑記: Python statsmodels をつかってみるだけ

雑記

以下の記事を全面的に参考にさせていただきました。
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 をそのままプロットすると以下です。
  f:id:cookie-box:20170303235217p:plain:w600

トレンド成分、季節成分、残差に分解したのが以下です。
f:id:cookie-box:20170303235232p:plain:w560

季節成分は以下です。毎年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]