いっかくのデータサイエンティストをいく

1からプログラミングとデータサイエンスを独習したい

【時系列】時系列分析の基礎概念と定常性・ホワイトノイズ

今日から通称沖本本で時系列分析をやっていきたいと思います。

時系列は森棟本有斐閣統計学」第12章でも扱われております。

今回は第1章「時系列分析の基礎概念」の実装以外の概念をやりたいと思います。 ブログは数式を描くと読者が減るといわれているらしく、それに従って概念やら数式は避けてきたのですが この本は概念を知ることに重点を置きたいので数式も書いていくつもりです。

時系列分析の分類

時系列では、データの並びを系列といいます。

  • 原系列:何も加工していないそのままの時系列データ
  • 対数系列:原系列のデータに対数をかけたデータ。値とばらつきが大きく、定常性のないデータに用いられる。
  • 差分系列(階差系列):単位根過程のもつ経済・ファイナンスデータに利用される。
  • 対数差分系列:成長率などの変化率に興味がある場合に使用する。
  • 季節調整:こたつの売り上げなど、季節によって変動のある場合、季節要因を原系列からとりのぞいたものを使用する場合がある。

定常性

定常性は簡単に言うと系列が時間を通じて一緒というものです。 弱定常性・強定常性の2種類あり、一般的に定常性というと弱定常性のほうをいいます。なんかシャンプーみたい。弱酸性とか。。。

弱定常性

時間を通じて ・期待値 ・自己共分散 ・自己相関 が時間を通して変化しない場合、弱定常性といいます。

強定常性

時間を通じて ・同時分布 が一定となります。

ホワイトノイズ

ホワイトノイズは ・期待値が0 ・分散が一定 ・自己相関を持たない 系列のことをいいます。ホワイトノイズは弱定常性となります。

ん?自己相関を持たない?ということはホワイトノイズの場合予測ができないということになります。*1

ホワイトノイズの実装(R)

'''r set.seed(1) white.noise <- rnorm(n=400) plot(white.noise, type="l") '''

f:id:imakoto0323:20180626144938p:plain

期待値、分散、自己相関を見ておきましょう

#分散
var(white.noise)
#0.9400178

#平均
mean(white.noise)
#0.03808867

#自己相関
acf(white.noise, type = "correlation")
#自己相関検定
Box.test(df[,2],lag=1,type="L")

f:id:imakoto0323:20180626145438p:plain

f:id:imakoto0323:20180626145519p:plain

平均も0付近、自己相関もなし。うまくいってそうですね。

ホワイトノイズの実装(Python)

こちらはホワイトノイズだけ

import pandas as pd
import numpy as np
from numpy.random import *
import matplotlib.pyplot as plt
import statsmodels.api as sm

#ランダムウォークの作成
white_noise = randn(400)
#グラフを描く
plt.plot(white_noise)

#平均
print(np.mean(white_noise))
#0.03658431983581248

#分散
print(np.var(white_noise))
#0.8859166486674763

#自己相関係数
passengers_acf = sm.tsa.stattools.acf(white_noise, nlags=40)
print(passengers_acf)
#[ 1.         -0.01525259  0.06529869 -0.02721076  0.02495315  0.08639457
# -0.04098746 -0.03679191 -0.02799283 -0.00178897 -0.03032708  0.04724067
#  0.01683673 -0.02712233  0.04672589  0.03525353 -0.00245254  0.02015702
#  0.05237375  0.0698655   0.01773833  0.01888985 -0.00412498  0.11349409
#  0.0392659   0.01553122 -0.04843028 -0.02882249  0.05567197 -0.01106712
# -0.00792878 -0.04023622  0.02791333  0.05480387 -0.02163743  0.0693028
#  0.02281466 -0.02350686  0.04564872  0.00108434  0.05087114]

f:id:imakoto0323:20180626150929p:plain

*1:なので今後出てくるさまざまなモデルの基本になるのでしょうか。まっさらだから。