統計初心者が時系列分析を学ぶための勉強法・オススメ本

私が個人的に開催しているエンジニア勉強会の2019年[Advent Calendar](https://qiita.com/advent-calendar/2019/study-co)で、[『統計初心者がベイズ統計学に入門するまでの勉強法』](https://qiita.com/ueniki/items/d02a81766ff65bde8a0c)という記事を書いたら、とても好評でした。

そこで今回は、統計初心者が時系列分析を学ぶための勉強について書いていければと思います。


# この記事の目的と対象者

この記事は、統計の基礎はある程度勉強したことがあるという人が、立派に「時系列分析」統計学の一大トピックについて語れるようになることを目指します。

時系列分析の全体像を語れるようになるぐらいまでがこの記事のゴールです。

時系列分析の中でも、**状態空間モデル**という分析モデルを理解できるようになるところまでをゴールとします。
（そもそも統計モデリングってなに？という方は、こちら[『結局、統計モデリングとは何なのか』](https://qiita.com/ueniki/items/6338f8de53ee65637b32)もどうぞ）

ここで紹介する書籍は、プログラミンを手を動かして学べる系の書籍ですので、プログラミングの知識は必須とします。


# 時系列分析とは
## 時系列データとは
時系列分析とは、その名の通り、時間という概念が入り込んだデータ系列のことです。

この世は時系列データで溢れかえっています。
なんなら時間軸という概念が入り込まないデータなんて本当はないのでは！？と思ったりもするぐらいです。
だって、サイコロを1万回投げるときだって（そんな時ない）、時間は過ぎていきますからね。
ただ、サイコロを1万回投げときのように、時間軸を無視しようというのが、時系列でデータではないデータです。


時系列データの代表例としては、株価などがあげられます。

![400px-Nikkei_225(1970-).svg.pn g](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/115709/126263f8-0ef4-2560-fe3f-56b39ddd2b82.png)
[日経平均株価 wikipedia](https://ja.wikipedia.org/wiki/%E6%97%A5%E7%B5%8C%E5%B9%B3%E5%9D%87%E6%A0%AA%E4%BE%A1)
（目視で感じるぜ、**高度経済成長期**ってやつをな……）


「時系列分析といえば自然言語処理だ！！」と、考える方もいらっしゃると思います。
確かに、自然言語処理は、近年の機械学習の発展により最も注目されている時系列分析の一つです。
みなさんが
「アレクサ、時系列分析ってなに？」
と、円筒形のオサレなインテリアに話しかけると、
「うっせー、◯ス!!」
と、返事が返ってくるのは、自然言語処理技術の発展によるものです。

ですが、ここでは、自然言語処理はあえて扱わず、株価や売上データなどのより一般的な時系列データのみを対象とします。

## 時系列分析のトピックと状態空間モデル

時系列分析とは何かという全体像については、
後に紹介する[『時系列分析と状態空間モデルの基礎: RとStanで学ぶ理論と実装』](https://www.amazon.co.jp/dp/4903814874/ref=cm_sw_em_r_mt_dp_U_CV9YEbDQ9AG71)の著書である馬場さんのブログ[logic of blue](https://logics-of-blue.com/book-guide-time-series-analysis/)に詳しく書かれています。
（この記事の内容は、このブログの内容にすべて内包されていると言っても過言ではない……）

状態空間モデルというのは、超ざっくりいうと、見えない「状態」を仮定する統計モデルの1種です。
観測値はあくまで状態から生み出された結果でしかありません。
t-1時点前の状態x<sub>t</sub>から、t時点の状態x<sub>t</sub>が生み出され、
このt時点の状態x<sub>t</sub>から観測値y<sub>t</sub>が発生します。

上記の隼本（p.179）では、釣りの例で、
ある日の湖の中の魚の数が状態、その日に釣れた魚の数を観測値としています。

繰り返しになりますが、この例のように、あくまで、状態があっての観測値です。
ですが、状態はわからないので、観測値から推測していくしかありません。

状態空間モデルは、いわゆる機械学習とは違い、統計的に状態や観測値を扱う、統計学の1トピックです。

歴史はそれなりにありますが、近年では、ベイズ統計学の枠組み内で語られることも多い統計モデルです。
（ベイズ統計学の勉強法については、冒頭の記事も参考にしてください。）

# 勉強法

## 時系列分析の基礎

時系列分析の中でも、状態空間モデルは難易度の高いモデルであり、『古典的な』方法ではありません。

時系列分析の基礎として、イメージを掴むためにも、まずはARMAモデルといった『古典的な』方法を学ぶことをおすすめします。

ざっくりとした雰囲気を掴むためにおすすめなのは、

![51mEuEErMJL._SX352_BO1,204,203,200_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/115709/1671c48d-602c-279d-d15c-d272984dd8c1.jpeg)

[『現場ですぐ使える時系列データ分析 ~データサイエンティストのための基礎知識』](https://www.amazon.co.jp/dp/4774163015/ref=cm_sw_em_r_mt_dp_U_Olr2EbMEZN66T)です。

数式も簡単なので、サクッと読んで、雰囲気を掴むことができると思います。

## 状態空間モデルのイメージを掴む

なんとなく時系列分析の雰囲気がつかめたら、さっそく隼本こと[『時系列分析と状態空間モデルの基礎: RとStanで学ぶ理論と実装』](https://www.amazon.co.jp/dp/4903814874/ref=cm_sw_em_r_mt_dp_U_2qr2EbRBTCTC5)に進みましょう。

![516f3jVjO2L._SX353_BO1,204,203,200_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/115709/526ac13f-8405-6c41-4baf-3674a4ea6c61.jpeg)


隼本の素晴らしいところは、状態空間モデルのイメージを数式を使わずに説明しきっているところです。
これは、統計や機械学習の素晴らしい本の共通点なんですが、言葉でイメージを伝えることで、無味乾燥になりがちな理論に命が吹き込まれているんですよね。

本書の山場である、カルマンフィルタ・平滑化を最尤推定法で行う第五部の説明は圧巻です。
最後の第六部では、ベイズ推論による状態空間モデルの推定も扱います。

隼本も著書の馬場さんの抽象的思考力と言語化力には脱帽です。
是非とも一度お目にかかりたいですね〜。

## 状態空間モデルをより詳細に数学的に理解する
隼本で「状態空間モデル完全に理解した」ら、よりハードボイルドな数学的世界に進みましょう。

おすすめは、[基礎からわかる時系列分析 ―Rで実践するカルマンフィルタ・MCMC・粒子フィルター](https://www.amazon.co.jp/dp/4774196460/ref=cm_sw_em_r_mt_dp_U_CEr2EbSC3RARC)

![517UNNmUFtL._SX396_BO1,204,203,200_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/115709/5a8ed38f-13ff-b1d4-820c-17bbc3659dcd.jpeg)

なぜ低評価を付ける人がいるのかわからないぐらい良書です。
ただ、たしかに、状態空間モデル1冊目としてはハードルが高いかもしれません。
また、はじめからベイズ統計学で話が展開されるので、ベイズに慣れていないとさすがにきついかもしれません。

「完全に理解した」状態で挑めば、「なにもわからない」の世界にきちんと連れて行ってくれます。
ですが、隼本と行ったり来たりしながら読めば、本当の意味でも状態空間モデルを深く理解できるようになってくると思います。
本書のベイズ統計学的な立場から、隼本で学んだカルマンフィルタを見返すと、とても深いつながりがあることが……

# まとめ
時系列分析は、統計学の一大トピックですが、まだまだ一般には馴染みのない分野だと思っています。
世の中はこんなにも時系列で溢れかえっているのに。
難しいからですかね〜。

時系列分析のキモは、過去から未来が生み出されること。
そして、過去と未来はどこか似ているということです。

まわるまわるよ 時代はまわる