株価も予測できるかも!? 時系列分析

こんにちは!
IT企業に勤めて、約2年間でデータサイエンティストになったごぼちゃん(@XB37q)です! 

このコラムでは、時系列分析という分析手法を紹介します。
時系列分析は、数値系データのみに使われる手法であり、過去のデータを使用して将来を予測する際に使われる分析手法です。

考え方としては、中学生で習うΣなどを使用した数式のため、理解しようと思えば理解できるレベルではあります。
しかし、複雑な時系列分析の場合は直感的に理解することが難しくなってしまう手法です。

理解するコツとしては、まず簡単な時系列分析を理解した後、複雑な時系列分析はそれらを複合させ、応用した手法だと理解することで、少しは理解がしやすくなると思います。

時系列データとは?

時系列データ
時系列データ

まず初めに時系列データの概要を紹介します。
時系列データとは、時間とともに変化するデータのことです。
横軸に時間、縦軸にデータをイメージすると理解しやすいと思います。

上の図のようにグラフで見てみると、過去(昨日や2日前など)の傾向から未来(明日や2日後など)を予測できそうに思えてきます。
こういった時系列データは世の中にたくさんあります。
株価のデータや日々の売上データなどが時系列データの代表であり、他にもコールセンターのコール数や不動産の契約数なども時系列データととらえることができます。

時系列分析とは、この時系列のデータを使って未来(明日や2日後など)を予測する分析手法になります。
データ分析ではたくさんの分析手法がありますが、この時系列分析の中にも、たくさんの手法が存在しています。

このコラムでは、この分析手法を4つ紹介しようと思います。

  • AR(自己回帰)モデル
  • MA(移動平均)モデル
  • ARMAモデル
  • ARIMAモデル

時系列分析の考え方

時系列データの分解
時系列データの分解

分析手法を紹介する前に、まずは時系列分析の大まかな考え方を紹介します。
時系列分析では、時系列データを細かく分解し、それぞれの要素を意識して分析を行っていきます。
時系列データは前の章で「時間とともに変化するデータ」と紹介しましたが、これらの要素も細かい時系列データです。

  • トレンドや周期変動
  • 季節変動
  • 不規則変動

トレンドや周期変動とは

トレンドとは、大きな時間の変化によって上昇するか下降するかといった時系列データです。
例えば、日別の時系列データの場合、去年と比べて今年の値が大きくなっている場合は、上昇トレンドと解釈することが出来ます。
また、バブル崩壊やリーマンショックが起きた場合に、2年間ほど大幅に値が下がってしまった場合は、下降トレンドと解釈することが出来ます。

季節変動とは

季節変動とは、一定のスパン(季節の変化や年月の変化など)によって上昇するか下降するかといった時系列データです。
例えば、月末は円安が起きて為替が上昇しやすいといった傾向や、夏はソフトクリームが売れやすいなど、一定のスパンによって、上昇するか下降するかといった傾向が季節変動になります。

不規則変動とは

不規則変動とは、保持しているデータだけでは表せない時系列データです。
専門用語ではホワイトノイズとも呼ばれています。

全ての値の変化は何かしらの要因が影響して、値が変化していきます。
そこには何千、何万の要因が影響していることでしょう。
その値の変化を手元に保持してある数十、百個のデータだけで表すことは現実的に不可能になります。
そのため、データでは表せない変動のことを不規則変動と呼んでいます。

簡単にイメージできる!AR(自己回帰)モデル

ARモデルのイメージ
ARモデルのイメージ

まず初めはARモデルと呼ばれる分析手法です。
ARモデルとは自己回帰モデルと言われる時系列分析の1種です。
このモデルは1番イメージがしやすく、時系列分析の基本なので必ず理解してください。
これが理解できていないと後ほど紹介する分析手法を理解することが難しくなってしまいます。

ARモデルとは、簡単に言うと過去の値に数値をかけたものを、未来の予測値とする分析手法です。
式で書くと下記の式になります。αは一定の数値を表しています。

未来の値 = α × 過去の値 + ランダムな値

さて、この式は何かに似ていると思いませんか?
そうです、回帰分析の式と非常に似ています。
回帰分析を知らない人は別のコラム「AI初級編!回帰分析」で紹介しています。

そのため、明日の株価を昨日の株価を用いて回帰分析をしたものはARモデルであり、明日の株価を昨日と一昨日の株価を用いて回帰分析をしたもももARモデルです。
将来の自分を過去の自分で回帰したモデル、つまり自己回帰していると考えると理解しやすいと思います。

上記のARモデルの式について、過去の値を複雑にしていくと、
未来の値 = α × 1つ前の値 + α × 2つ前の値 + α × 3つ前の値 +・・・+ ランダムな値
のようにある一定期間の過去の値を使って、未来を予測する分析手法ということになります。
「1つ前の値」というのは、日別のデータであれば1日前、月別のデータであれば1月前の値を表します。

このように、過去の値が未来の値に影響を及ぼしていると考えて生み出されたのがARモデルという分析手法です。

簡単にイメージできる!MA(移動平均)モデル

ARモデルの次に基本となるのが、MAモデルと呼ばれる分析手法です。
MAモデルとは移動平均モデルと言われる時系列分析の1種です。
移動平均とは、過去の一定期間についての平均をとった値のことです。

下記は3日間の移動平均を計算した例です。
3日間のため、今日の値を合わせた過去3日間の平均を表します。

日付今日の値1日前の値2日前の値3日間の移動平均
4/1100
4/2200100
4/3150200100150
4/4550150200300
4/5500550150400
3日間移動平均の例

この値を移動平均と呼びますが、MAモデルは移動平均とは少し違います。
また、式の形は全く移動平均の式に似ていません。

それではなぜ移動平均と呼ばれるのでしょうか?
「一部同じデータを使って表したデータは自己相関を持つ」という性質を活かして時系列を考慮したモデルがMAモデルだからです。
つまり、「移動平均みたいに、一部同じデータを使って表したデータは自己相関を持つ」 という解釈をすることができます。
MAモデルは移動平均の考え方を時系列分析へ応用したため、移動平均モデルと呼ばれているのです。

MAモデルの由来と考え方を理解した上で、次にMAモデルの理論と式を確認します。
下記が式になります。
未来の値 = β × 1つ前のホワイトノイズ + β × 2つ前のホワイトノイズ + β × 3つ前のホワイトノイズ + ・・・ ランダムな値
少しイメージがしづらいですが、未来のデータは過去に発生した複数のランダムな数の加重和になっていると理解してください。

また、この式は未来の値が、「ある過去までのノイズの重み付き和と現在のノイズ、これに平均値を足しあわせたもの」と表現することもできます。
「過去にホワイトノイズが大きかった場合」は、「未来の値もβの重みを受け、大きく変化する」ことを意味しています。

未来予測を目指す!ARMAモデル

ARMAモデルのイメージ
ARMAモデルのイメージ

ARMAモデルはARモデルとMAモデルを組み合わせたモデルになります。
式で書くと下記の式になります。

未来の値 = α × 1つ前の値 + α × 2つ前の値 +・・・+ β × ホワイトノイズ + β × ホワイトノイズ + ・・・ + ランダムな値

未来予測を目指す!基本を応用したARIMAモデル

ARIMAモデルのイメージ
ARIMAモデルのイメージ

ARIMAモデルはARMAモデルを応用したモデルになります。
ARMAモデルではデータそのものにARモデルとMAモデルを組み合わせたモデルでした。
ARIMAモデルも似ているモデルになるのですが、時系列データに加工を施してからARMAモデルを作るといったイメージになります。

それではどのような加工をするのでしょうか?
先ほど紹介したARモデル、MAモデル、ARMAモデルは定常性といった仮定のもとに時系列分析を行っている手法です。

しかし、実際に存在しているデータはなかなか定常性の仮定を満たすデータではないため、この仮定を満たせるように、時系列データに加工をする必要があります。

その加工が、「1日前のデータとの差分をとる」という処理になります。
この時系列データ同士の差分をとることで、定常性を満たすことになるデータが世の中に多いことから、ARIMAモデルが開発されました。

式で書くと下記の式になります。

未来の値 – 今日の値 = α × 1つ前の値 + α × 2つ前の値 +・・・+ β × ホワイトノイズ + β × ホワイトノイズ + ・・・ + ランダムな値

まとめ

実際に時系列分析を行う場合は、ARモデルやMAモデルを使うことはあまりなく、ARMAモデルを使うことも少ないと思います。そのため、まずはARIMAモデルを使ってみるというのが1つの手だと思いますが、時系列分析は仮定している条件がいくつかあるため、それらを理解して使うことが重要です。

時間があれば、実際に時系列データに対してpythonでモデル構築することで、イメージがつき理解が進むと思います!

参考図書