目次
時系列分析とは何か?
時系列分析と回帰分析
時系列分析とは、時系列データを分析するための分析手法のことです。
時間の流れとともに観測されたデータを解析し、知見獲得や予測を行うような分析を指します。
具体的には、例えば「株価予測」を目的とした分析で用いられる代表的な分析手法が、時系列分析です。
※株価は時間に対して紐付いているデータなので時系列データになります。(詳細は後述)
さて、データ分析の世界では、データの種類によって適した分析手法が異なります。
例えば、データ分析手法の代表格に回帰分析がありますが、これは時系列データの分析には適していません。
回帰分析は、正解と正解を当てに行くデータのセットで学習させることにより関係式を作る方法、つまり「教師あり学習」の一種で、「xを増やした時のyの変化値を知る」等、様々な場面での予測や知見獲得に用いられます。
回帰分析には、カテゴリを当てに行く「分類」と、連続的な数値を当てに行く「回帰」の2種類があり、中でも「線形回帰」と呼ばれる分野における「最小二乗法」は、過去のパターン(今あるデータ)から教師と説明変数の関係式を作成する手法の一つです。
詳しくは本記事の範囲外のため立ち入りませんが、この最小二乗法にもみられる通り、回帰分析では、過去データ群がそれぞれに独立したデータであるとみなされるためにパターンをモデル化することが可能になります。
他方、後に説明するように、時系列分析の対象となる時系列データは、時間を軸にしてそれぞれのデータを「系列」であるとみなしているため、回帰分析の対象データのように相互に独立であるとはみなされません。
このように、分析の対象となるデータをどういったデータであるとみなすかによって、取るべき分析方針が異なってきます。
したがって、時系列分析を行う際には、その前にまず、「そのデータが時系列データとみなせるかどうか」を判別する必要があります。
時系列データとは何か?
時系列データとは、その名の通り、「時間」によって定義づけられるデータです。
「時(間)」の「系列」としてのデータ、という意味です。
ここで、系列とは、「なにかに従って並んだ数値の羅列」「一連の数値」といった程度の意味で理解してください。
したがって、時系列というのは、「時間に従って並んだ数値の羅列」という意味になります。
つまり、時系列データとは、時間という軸で相互に紐づけられている(とみなせる)一連のデータ群のことです。
そのため、あるデータが時系列データとみなせるかどうかを判別するには、そのデータが時間軸で相互に紐づけられているかどうかを判定する必要があります。
通常、この判定は「定常性」というデータの性質の程度を基準に行いますが、この点については、もう少し後で説明します。
時系列データの性質
さて、ここではより正しい理解のために、時系列データを統計学の文脈で考えてみましょう。
時系列データは、「確率過程」と呼ばれる、時間に依存した確率変数列から取得した実現値です。
この値は、次の2つの性質を持ちます。
- 1時点で1つの観測(サンプル)しか得られない・・・時間は繰り返せない
- にもかかわらず、サンプルの分布(確率変数や確率)が時間にしたがって変化する
時系列データの性質を身近なものに例えるとすれば、「氷の材質でできたサイコロ」をイメージすると良いでしょう。
サイコロは、それぞれの面に刻まれた目の出る確率が一定である(とみなされる)立方体ですが、これが氷でできていたら話は違ってきます。
氷のサイコロでは、時間が経つにつれて少しずつ氷が溶けていくことで、目の出る確率自体が変わっていってしまいます。
このイメージのように、時系列データでは、時事刻々とサンプル自体の確率分布が変化していきます。
より現実的な例として、バブルの頃の株価と、現在の株価を決定づける確率変数と確率が異なるのも同じ理屈です。
時系列データの特殊性
時系列データは、他のデータに比べて、次の2点にその特殊性がみられます。
- 系列であるため、前後の繋がりがあること
- 系列が時間に従っていること
1点目は、系列依存です。
通常、隣り合ったもの、近しいものは関連があると考えるのが自然です。
例えば、土地の価格を考えてみると、緯度経度について隣り合った区間は似た数値を取るでしょう。
もちろん、土地の価格のような社会的な値だけでなく、その土地の土壌や気候、地形といった自然条件についても、隣接地域は似たような条件を取るはずです。
このように、相互に繋がった隣接データ間で類似した条件が起こるような状態のことを「系列依存」と言います。
2点目は、時間自体の特殊性です。
時間には、過去から未来への明確な流れが存在します(と、少なくともデータ分析の世界ではそう考えます。もちろん、輪廻転生や螺旋的時間軸のように時間を非直線的に捉える考え方もありますが、その場合も過去と未来を想定している点では同じです)。
一見、これは当たり前のことのようにも思えますが、例えば「標高に従った平均気温」を考えてみれば、時間の特殊性がわかるでしょう。
標高に従った平均気温では、標高データの前後に双方向の関係が想定されます。
しかし、時間の場合は、過去から未来の流れはあっても未来から過去の流れが存在しない、つまり双方向の関係ではありません。
このように、時系列データでは、この系列依存が時間軸について起こる点に特徴があります。
これらの特殊性ゆえに、時系列データは、回帰分析などの分析手法でそのまま解析することができません。
そこで、時系列分析では、次の章でみるような「(弱)定常性」という仮定を置くことで時系列データの解析が可能になります。
時系列分析は、前後の繋がりに意味があると考え、任意の時点tでの値ytと、tからkだけずれた時点t−kでの値yt−kの関係に注目することで、時系列データをうまく取り扱うことに成功しています。
それでは、次に、そういった時系列分析の基礎となる「時系列データの判別方法」について、順にみていきましょう。
時系列データの判別方法
「データの定常性」という考え方
「時系列データとは何か?」の節で、あるデータが時系列データとみなせるかどうかを判別するには、そのデータが時間軸で相互に紐づけられているかどうかを判定する必要があり、通常、この判定は「定常性」というデータの性質の程度を基準に行うと説明しました。
そこで、本節では、この「データの定常性」という考え方について説明してきます。
定常性とは、「時間の変化に対してデータがどれだけ一定値を保つか」、つまり「あるデータ群が時間の影響をどれだけ受けやすいか」という指標のことです。
このことを統計学的に言い換えると、「定常性のあるデータ」とは、「観測されたデータが時間によらず期待値と分散が一定で、自己共分散が時点ではなくラグ(今日と昨日の比較)に対して依存する」という性質をもつデータのことです。
経済学的に言い換えるならば、「データの時間弾力性」とも表現できるかもしれません。
定常性とデータの性質の関係
定常性と、時間に対するデータの弾力性(影響度)の関係は、次のように理解できます。
- 定常性が強すぎる → データ群は時間の影響を受けない
- 定常性が弱すぎる → データ群は時間に強く依存する
- 定常性が強すぎず、弱すぎない(弱定常性) → データ群は時間の影響を受ける
1点目の定常性が強すぎるデータは、時間が変化しても値が変化しないようなデータ、例えば「真空の中の気体の状態」のようなイメージです。
ただし、これはあくまで理解しやすくするための例えでしかなく、現実世界には、こうしたデータはほとんど存在しません。
2点目の定常性が弱すぎるデータは、時間の変化に伴って値が激しく変動するようなデータ、例えば「幼稚園児の足跡」といったイメージでしょうか(これもあくまでイメージです)。
定常性が極端に弱いデータは、ほとんど「ランダム」な状態であり、時間限定的なイベントに影響を受けている可能性が高いと考えられます。
そのため、データの変化が時間に依存するものの、そこに規則性を見出すことは難しく、通常、時系列分析を行うためには何らかのデータ加工が必要となります。
この点については、次節で詳しく説明します。
なお、1点目と2点目、すなわち定常性が強すぎたり弱すぎたりするデータ群は、いずれも時間から独立したデータの集合と考えることができます。
したがって、こうしたデータの分析は、時系列分析ではなく、上述した回帰分析等の手法を用いることになります。
3点目の定常性が強すぎず、弱すぎないデータ(「弱定常性」と表現するのが一般的)は、時間の影響を「いい感じ」に受けるデータの集合、つまり時系列データとみなせます。
例えば、すでに述べた「株価」だけでなく、身近な例で言えば「体重の変化」なども時系列データとみなすことができるでしょう。
ここで重要なのが、定常性が「いい感じ」であることが時系列分析にとって大切だということです。
今見たように、定常性が強すぎても弱すぎても、時系列分析の対象とすることはできないからです。
したがって、時系列分析の分析方針を立てる際には、まず、データの定常性を計測するための「定常性分析」が必要になります。
時系列分析の分析方針を決めるための定常性分析
定常性分析では、大きく次の2点を行います。
- データの定常性を「偏自己相関係数」によって測る
- 非定常的なデータの弱定常性への変換
(1)偏自己相関係数
1点目は、偏自己相関係数を用いた定常性の計測です。
偏自己相関係数とは、観測点以外の要因を無視して計算された自己相関係数のことで、偏自己相関係数の絶対値が高いほどデータの定常性が強く、逆に低いほど定常性が弱いことになります。
そもそも、相関係数とは、「データ間の関係性を表す指標」のことで、「変数と変数の間に直線の関係がどれくらいあるか」を調べるために用いる概念です。
相関係数は、−1から1の間の数値をとり、数値が高いほど相関関係が強く、低いほど相関関係が弱いと見なせます。
この相関係数における「変数と変数」を、ある時点での異なる二つの変数ではなく、異なる時点での同一変数について考えるのが「自己相関係数」です(同じ変数についての係数なので、「自己」と呼ばれます)。
自己相関係数では、例えば、昨日と今日は似ていないか、今日と一週間後は似ていないかといったことを探ります。
ここで、1日前と今日のデータに大きな正の自己相関があれば、1日前にデータの値が高ければ今日も高い、と理解できます。
この自己相関係数の中でも特に、偏自己相関係数は、調べたい時点(観測点)以外の時点から受ける影響を無視するために調整された係数で、まさに時系列分析を適切に行うための指標と言えます。
(2)弱定常性への変換
前節で、定常性が極端に弱いデータは、ほとんど「ランダム」な状態であり、時間限定的なイベントに影響を受けている可能性が高いため、時系列分析を行うためには何らかのデータ加工が必要であると述べました。
この「データ加工」というのが、弱定常性へのデータ変換です。
弱定常性へのデータ変換というのは、「原系列(何も加工していない時系列データ)」に何らかの数学的加工を施すことで、弱定常的なデータへと変換することを指します。
これは、非定常的なデータには、実は定常性が「隠れている」ケースが多く、変換をすることで時系列データとみなせるようになることがあるためです。
この原系列に対して施す変換方法には、次のようなものがあります。
変換後の系列 | 変換方法 | 概要 |
対数系列 | 原系列に対数変換を施す | ・平均と共にばらつきが変わっていく
・(ベースライン×倍率)→対数を取得すると(ベースライン+倍率) ・後ろに掛け算があるような構造の場合有効である。 |
階差系列/差分系列 | 原系列の各点から何時点か前の時点を引く | ・差を出しているので、平均に関して定常なものを定常性に直す
・平均が一緒の場合を仮定 |
対数差分系列 | 原系列に対数変換を施して、その系列の差分系列をとる | ・金融系のデータ対して有効である。
・100円が101円になったらすごい、20000円が20001円のはあまり凄くない →比で考えたい |
季節調整済み系列 | 季節変動の影響を取り除く | - |
これらの変換方法は、時系列分析における解析モデルの進化に直結しています。
次章では、この解析モデルの進化についてみていきましょう。
時系列分析のモデル進化
時系列分析では、先述したようなデータの前処理としての定常性分析を行い、分析方針を定めた上で、データの内容に適した解析モデルにかけることが一般的です。
時系列分析の解析モデルは、データの複雑性に対応する形で、次の5つの順に進化していきました。
- ARモデル(自己回帰モデル)
- MAモデル(moving_averageモデル)
- ARMAモデル
- ARIMAモデル
- 季節性ARIMAモデル(SARIMAモデル)
「データの前処理としての定常分析を行い」と述べましたが、実際には、これらの各モデル内に定常性分析のプロセスも含まれています。
とはいえ、「モデルにかければそれで終わり」という単純なものではないため、注意が必要です。
時系列分析モデルの種類と概要
上記5つのモデルの概要は、それぞれ次の通りです。
モデル名 | 概要 |
ARモデル(自己回帰モデル) | *AR(p)モデル。p期前まで使用するという意味
└昔の値で今の値を説明する └単回帰モデルと一緒 *ホワイトノイズ(完全なノイズ) |
MAモデル(moving_averageモデル) | *Ma(q)
└昔のノイズで今を説明している └単回期モデルと一緒 └過去のノイズが大きかった場合は、現在の値も大きく変化する |
ARMAモデル | *ARMA(p、q)
└定常な時系列になってさえいれば非常に強力 └p期前のデータとq期前までの誤差の和を用いて現在のデータを表現するモデル └ARMA(p、0)=ARモデル |
ARIMAモデル | *ARIMA(p、d,q)
└ARMAモデルを更に拡張する └学習データに対して何度も差分を取得することで、非定常なデータに対しても予測を可能にしたモデル └階差dは1〜2ぐらいが基本 |
季節性ARIMAモデル(SARIMAモデル) | *ARIMAモデルに、更に周期的な変動(季節的な変動)を考慮した拡張モデル
└季節性のあるデータに対して有効なモデル └季節性のパラメータは低めに設定する →周期単位でARIMAを当てはめる |
時系列分析のポイント
こんな場合はどうする?時系列分析の一問一答
時系列分析は特殊性のあるデータを取り扱うために、分析手法自体に慣れていないと、要所要所でつまづいてしまうことがあります。
下表は、時系列分析中に起こりうる、代表的な「こんな場合はどうしたらいいの?」と、その問題を解決するコツです。
こんな場合はどうする? | 時系列分析のコツ |
Q:複数の時系列のデータから何か予測したい場合は? | A:次のモデルのいずれかを使う
・多変量時系列モデル ・ベクトルサリマモデル ・VARモデル、VARMAモデル |
Q:大きく構造変化が起きている場合は? | A:状況が均質化している期間について、クロスバリデーション的な手法で分析を行う |
Q:データがランダムに欠損している場合は? | A:時系列の場合、多重代入法(がおすすめ)などの方法で、データを保管しなければならない |
Q:上記の諸問題に対処した後でも精度が悪い場合は? | A:次の可能性を疑う
・(ある程度妥当なモデルが当たらなくなってしまったときは、)さらなる構造変化がおきたのではないか ・そもそもデータ自体の質が悪いのではないか ・分析者である自分の力量不足ではないか |
もちろん、この他にもつまづくポイントはたくさんありますが、初心者の方は、まずは上表のポイントだけでも抑えるようにしましょう。
時系列分析はここに注意!
先ほど説明したポイントとは別に、初心者が自分では気づかずに陥ってしまう落とし穴があります。
いずれも「データのトレンド」に関するポイントで、必ずしも「このやり方が正しい」というわけではないものの、そういった問題にこそ分析者の力量が如実にあらわれるものです。
時系列分析に慣れていない方は、ぜひ、気をつけましょう。
1)トレンドを伴うデータはまずトレンドを何かしら処理をしてから
時系列データには、何かしらの「トレンド」が隠れていることがあります。
トレンドというのは、データ自体が予め何らかの要因に影響を受けていて、本来分析して予測したいデータの関係とは別で、データ自体に法則性があるかのように錯覚してしまうような状態です。
例えば、20年間のデータをもとにあるスポーツ用品企業の株価予測を行いたいとします。
早速、データを分析してみると、3年前、7年前、11年前、15年前、19年前に売上が上昇する「法則」をみつけ、たまたまその年には新商品が開発されていたとします。
この情報だけとってみれば、「新商品の開発は我が社にとって追い風となる!」というポジティヴな結論を導き出せそうです。
しかし、よくよく考えてみると、4年に1回起こるトレンド、つまり、オリンピックの影響を強く受けていたことがわかります。
何の事は無い、オリンピックのときには当然、他社も売上が増すタイミングですし、この企業はそれにあわせて新商品を市場に投入していただけだったのです。
このように、トレンドのある時系列同士で漠然と回帰すると、「思いっきり見せかけ」の回帰現象を引き起こすことがあります。
トレンドを抽出すること自体に興味があるのであれば話は別ですが、そうでなければ、トレンドに振り回されて手近な「答え」に飛びついてしまわないように気をつけましょう。
2)短期の上下動が全てただのノイズでトレンドこそが重要という面倒くさいケースも存在する
今度は、先ほどと全く逆のケースです。
先ほどは、大きな影響要因であるトレンドが、見せかけの回期現象を引き起こしているだけで、実際にはそのトレンドには大した意味がないという落とし穴について述べました。
しかし、時系列分析の中には、トレンドを見つけること自体が重要になることもあります。
そういった場合は、短期的にデータが上下動するものの、その要因が非常にわかりにくい点に特徴があります。
こうした、上下動の原因が分かり難いケースでは、短期の上下動よりもむしろトレンドを重視したほうが良いのではないか、と一度疑ってみることも重要です。