# 【相関/自己共分散】時系列データ分析の基礎と注意点について解説！

> 当サイト【スタビジ】の本記事では、実務の場で登場することの多い時系列データの分析方法についてカンタンにまとめていきます！時系列要素を加味しないとちゃんとしたモデリングができない状況に陥ります。注意しましょう！

- URL: https://toukei-lab.com/%e6%99%82%e7%b3%bb%e5%88%97%e3%83%87%e3%83%bc%e3%82%bf%e5%88%86%e6%9e%90
- 公開: 2022.11.29 / 更新: 2025.01.08
- サイト: スタビジ（https://toukei-lab.com）

:::talk{who="umatan"}
本記事では、実務の場で登場することの多い時系列データの分析方法についてカンタンにまとめていきます！時系列要素を加味しないとちゃんとしたモデリングができない状況に陥ります。注意しましょう！
:::

こんにちは！データサイエンティスト兼デジタルマーケターのウマたん（[@**statistics1012**](https://twitter.com/statistics1012)）です

**過去のデータを元に将来のデータを予測したい！**

こういう場面って多いですよね？

店舗の売り上げに関してもそうだし、株価だってそうだし視聴率だって。

そんな時に登場するのが時系列分析！

:::talk{who="robotan"}
時系列データの扱いって難しいよねー！！
:::

:::talk{who="umatan"}
時系列データは実務でよく登場するけど、意外と特別な扱い方が必要だという認識を持っている人は少ないよねー！
:::

そんなやっかいな時系列データですが、なかなか分かりやすい書籍がない！

沖本さんの「計量時系列分析」は、確かに良書ですが<mark>とっかかりとしては難易度が高いんです。</mark>

::product[経済・ファイナンスデータの計量時系列分析 (統計ライブラリー)]{url="https://www.amazon.co.jp/dp/4254127928?tag=statistic08-22&linkCode=ogi&th=1&psc=1" image="https://m.media-amazon.com/images/I/41JMUwJfOLL._SL160_.jpg" amazon="https://www.amazon.co.jp/dp/4254127928?tag=statistic08-22&linkCode=ogi&th=1&psc=1" rakuten="https://af.moshimo.com/af/c/click?a_id=858168&p_id=54&pc_id=54&pl_id=616&url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2F%25E7%25B5%258C%25E6%25B8%2588%25E3%2583%25BB%25E3%2583%2595%25E3%2582%25A1%25E3%2582%25A4%25E3%2583%258A%25E3%2583%25B3%25E3%2582%25B9%25E3%2583%2587%25E3%2583%25BC%25E3%2582%25BF%25E3%2581%25AE%25E8%25A8%2588%25E9%2587%258F%25E6%2599%2582%25E7%25B3%25BB%25E5%2588%2597%25E5%2588%2586%25E6%259E%2590%2F%3Ff%3D1%26grp%3Dproduct"}

こちらの「現場で使える時系列データ分析」は簡単な説明とRによる実装が分かりやすく書いてありますが、理論的な内容は薄いです。

::product[現場ですぐ使える時系列データ分析 ~データサイエンティストのための基礎知識~]{url="https://www.amazon.co.jp/dp/4774163015?tag=statistic08-22&linkCode=ogi&th=1&psc=1" image="https://m.media-amazon.com/images/I/51mEuEErMJL._SL160_.jpg" amazon="https://www.amazon.co.jp/dp/4774163015?tag=statistic08-22&linkCode=ogi&th=1&psc=1" rakuten="https://af.moshimo.com/af/c/click?a_id=858168&p_id=54&pc_id=54&pl_id=616&url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2F%25E7%258F%25BE%25E5%25A0%25B4%25E3%2581%25A7%25E3%2581%2599%25E3%2581%2590%25E4%25BD%25BF%25E3%2581%2588%25E3%2582%258B%25E6%2599%2582%25E7%25B3%25BB%25E5%2588%2597%25E3%2583%2587%25E3%2583%25BC%25E3%2582%25BF%25E5%2588%2586%25E6%259E%2590%2F%3Ff%3D1%26grp%3Dproduct"}

個人的には「現場で使える時系列データ分析」を読んだ後に「計量時系列分析」を読めばよいかなと思ってます。

ちなみに以下の記事でおすすめの時系列分析の本をご紹介しているのでよかったら見てみてください。

<https://toukei-lab.com/%E5%8E%B3%E9%81%B85%E5%86%8A%EF%BC%81%E6%99%82%E7%B3%BB%E5%88%97%E5%88%86%E6%9E%90%E3%82%92%E5%8B%89%E5%BC%B7%E3%81%99%E3%82%8B%E4%B8%8A%E3%81%A7%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AA%E6%9C%AC>

そんなこんなで**なかなか難しい！**&#x3068;いう声を聞く時系列分析についてこの記事でまとめておきます！

Rでの実装や深い理論が気になる方は前述した2冊を読んでみてください！

## そもそも時系列分析とは？

当たり前ですが、得られたデータに順序があるデータを<mark>**時系列データ**</mark>と呼びます。

逆にデータに順序がなく一つの時期に複数のデータがある状況を**クロスセクションデータ**と呼びます。

また、結構実データ解析とか行っていると遭遇する可能性の高いデータに**パネルデータ**と呼ばれるものがあります。

これは、<mark>時系列データとクロスセクションデータが組み合わさったもの！</mark>

簡単な具体例を挙げると、

:::box
特定の店舗の10年間の売り上げは**時系列データ**

全国チェーンの各店舗の1日の売り上げは**クロスセクションデータ**

全国チェーンの各店舗の10年間の売り上げデータは**パネルデータ**
:::

となります。

> パネルデータを用いることの利点は第一に,これまでのクロスセクション ･データや時系列デー夕と比べた場合,観察点が格段に増加するので推定精度が上がることが期待できる\
> （引用元：[Google-「パネルデータの意義 とその活用」](http://hermes-ir.lib.hit-u.ac.jp/rs/bitstream/10086/18171/2/0100914401.pdf)）

パネルデータの解析はまた違ったアプローチがあるので置いておいて、今回は一つの店舗での売り上げデータである時系列データのお話をしましょう！

## 時系列データ分析をする上でおさえておきたい基礎知識

まずはじめに時系列データ分析をする上でおさえておきたい基礎知識についてまとめておきましょう！

### クロスセクションデータにはない自己共分散

クロスセクションデータいわゆる静的なデータに良く用いられる統計量として**平均・分散・標準偏差・共分散・相関係数**などがありますね。

その中で相関を求める上で重要になってくる共分散。

共分散を求めることで各変数の相関構造を求めたりデータの構造を知ることができるのですが、<mark>時系列データには自己共分散という概念が存在します。</mark>

各期の観測値$y_t$、各期の期待値を$\mu_t$とした時、自己共分散の定義はこんな感じ！(参考：計量時系列分析)\
\begin{eqnarray}\
Cov(y_t,y\_{t-1})=E\[(y_t-\mu_t)(y\_{t-1}-\mu\_{t-1})]\
\end{eqnarray}

**各期の共分散**というイメージですね。

すなわち共分散が正の場合その期同士は平均に対して同じ方向への挙動を示しやすく、負の場合は平均に対して違う方向への挙動を示しやすいということです。

:::memo
**・共分散が正の場合、同じ方向への挙動**\
**・共分散が負の場合、違う方向への挙動**
:::

この自己共分散は自己相関につながり、<mark>時系列データの構造を把握する上で非常に重要になってきます。</mark>

### 定常性という概念

まず、時系列分析において確認しておかなくてはならないのが**定常性の概念！**

定常性には弱定常性と強定常性があるんですが、正直確認しておくのは弱定常性だけで良いでしょう！

基本的に<mark>この弱定常性が仮定されないと統計的な解釈はできません。</mark>

弱定常性の定義はこちら！(参考：計量時系列分析)

任意の$t$と$k$において

\begin{eqnarray}\
\left\\{\
\begin{array}{l}\
E(y_t)&=&\mu\\\\\
Cov(y_t,y\_{t-k})&=\&E\[(y_t-\mu)(y\_{t-k}-\mu)]\\\\\
\end{array}\
\right.\
\end{eqnarray}

数式で見てもいきなりは分からないと思うんですが、

**期ごとの期待値(平均値)は一緒だよということと**

**期の差が同じなら共分散は一緒だよということ**

です。

:::memo
**・期ごとの期待値(平均値)は一緒**\
**・期の差が同じなら共分散は一緒**
:::

これらを満たしているのならそのデータは弱定常となります。

具体的にどのような状況かというと、各期の平均が一緒なので上昇傾向はないよということ。

長期的に見ても平均は動かず一緒です。

そして、期の差が同じなら共分散は一緒というのは、<mark>平均へ回帰してくるイメージ。</mark>

2期先の共分散が負なら常に2期の周期で平均へ戻ってきますよね。今期が正の方向なら2期先の期は負の方向に移動するので。

この<mark>二つの制約条件を守ってくれるのが弱定常</mark>というわけです！

なんだかばらつきながらジクザグしているけど全体で見たら平坦なデータって感じ。

一番単純なのは**こんな感じのやつ。**

![](/wp-content/uploads/2018/02/Rplot02.png)

Rで簡単に記述できます。

```text title="gistfile1.txt"
a<-rnorm(1000)
plot(a,type="l")
```

弱定常性のことをただ単に定常と呼ぶこともあるのでここでも弱定常のことを定常と呼ぶことにします。

ちなみに<mark>この定常性を満たさないものを非定常と呼びます。</mark>

**店舗の売り上げデータも株価データも視聴率データもぜーんぶ基本的には非定常**です。

このあとに出てくるMAモデルもARモデルも定常性を仮定して当てはめるので<mark>この定常性という概念は必ず覚えておきましょう！</mark>

強定常性という概念もあるんですが、弱定常性のことを単に定常と呼ぶこともあるくらい、そこまで解析においては重要でない概念なのでここでは弱定常性だけにとどめておきます。

強定常性に関しては沖本さんの本を読んでみてください！

[定常性](/%e5%ae%9a%e5%b8%b8%e3%81%a8%e9%9d%9e%e5%ae%9a%e5%b8%b8)について詳しくはこちらでまとめています。

[https://toukei-lab.com/%e5%ae%9a%e5%b8%b8%e3%81%a8%e9%9d%9e%e5%ae%9a%e5%b8%b8](/%e5%ae%9a%e5%b8%b8%e3%81%a8%e9%9d%9e%e5%ae%9a%e5%b8%b8)

## 時系列データ分析のモデル

続いて時系列データ分析に用いられるモデルについて簡単に見ていきましょう！

### MAモデル

やっと時系列モデリングのお話に入ります。

時系列データのほとんどは、**前述した自己共分散すなわち自己相関**を持っています。

自己相関を持ったデータをモデリングする方法としてはどのようなものが考えられるでしょうか？

たとえば

\begin{eqnarray}\
\left\\{\
\begin{array}{l}\
y_t&=\&a+b\\\\\
y\_{t-1}&=\&b+c\\\\\
\end{array}\
\right.\
\end{eqnarray}

こんな感じ。

このようにモデリングすると、共通の成分$b$を通して、$y_t$と$y_{t-1}$が相関をもつことが期待できますね！

これがMA(Moving Average)モデルの考え方です。

MAモデルとは<mark>ホワイトノイズと呼ばれる誤差項を共通項にすることで各期が相関を持ったモデルです。</mark>

\begin{eqnarray}\
y_t=\mu+\epsilon_t+\theta_1\epsilon\_{t-1} ,\
\epsilon_t\sim{W\.N.(\sigma^2)}\
\end{eqnarray}

※ホワイトノイズは全ての期において平均$0$分散$\sigma^2$を満たし、$W.N.(\sigma^2)$と記述する。

こんな感じ。

ホワイトノイズを元に$y_t$と$y_{t-1}$が相関を持っているのが分かります！

また、$\theta_1$というパラメータが$y_t$と$y_{t-1}$の相関の強さを決めているのが分かりますね。

これは$y_t$と$y_{t-1}$の相関しか記述していないので1次自己相関と呼びますが、2次、3次・・・といくらでも記述することは可能です。

<mark>最適なあてはまりの良い次数を決定してモデリングする</mark>んです→ここらへんは重回帰におけるモデリング決定理論と同じでAICを用いたりします。

詳細は省きますが、この<mark>MAモデルは常に定常</mark>になります。

### ARモデル

またもう一つは、

$y_t=ay_{t-1}+b$

こんな感じにして$y_t$を$y_{t-1}$で表せるようにしたモデル。これが相関を持つのは明らかですね！

これがAR(autoregressive process)モデルの考え方です。

1次のARモデルは、

\begin{eqnarray}\
y_t=c+\phi_1{y\_{t-1}}+\epsilon_t,\
\epsilon_t\sim{W\.N.(\sigma^2)}\
\end{eqnarray}

と定義されます。

$\phi_1$を元に$y_t$と$y_{t-1}$が相関を持っているのが分かりますね！

この時、$|\phi_1|>1$となってしまったらどうなるでしょうか。

そう、発散してしまうんですね。すなわち非定常です。

そのため基本的にARモデルにおける$\phi_1$は$|\phi_1|<1$で与えます。

### ARMAモデル

そして、これらのMAモデルとARモデルをどちらもモデルに組み込んだのが、

**ARMAモデル**！

ARMAモデルを記述するとこんな感じ！

\begin{eqnarray}\
y_t=c+\phi_1{y\_{t-1}}+\epsilon_t+\theta_1\epsilon\_{t-1},   \epsilon_t\sim{W\.N.(\sigma^2)}\
\end{eqnarray}

単純に<mark>ARモデルとMAモデルのモデル式を組み合わせただけ</mark>ですね！

これはARモデルもMAモデルも1次相関しか持たせていませんが、2次、3次・・・と項を増やすことでより柔軟なモデリングが可能になります！

多くの時系列データに対して<mark>このARMAモデルに当てはめて構造把握や予測を行うことになります！</mark>

### ARIMAモデル

ARMAモデルを少し拡張したのが**ARIMAモデル**！

基本的に株価や視聴率や売り上げなどのトレンドや季節要因のある非定常データは、そのままARMAモデルを当てはめても上手くいかないことが多いです。

しかし、<mark>それらのデータは期ごとの差分をとることで定常性が満たされることが多い</mark>です。

その時系列データの差分をとって差分のデータに落とし込むことで定常にし、ARMAモデルを適用しよう！とするのがARIMAモデルです！

### ディープラーニングによる時系列データ分析（RNN）

最先端の技術であり日々進化を続ける[ディープラーニング](/deep-learning)。

そんなディープラーニングには[RNN（リカレントニューラルネットワーク）](/rnn)という手法が存在します。

これにより、<mark>時系列データをディープラーニングにより分析できるようになったのです。</mark>

通常のディープラーニングは情報が別のレイヤーに伝播していきますが、

![3層構造のニューラルネットワーク](/wp-content/uploads/2019/06/NN.jpg)

リカレントニューラルネットワークでは<mark>同じレイヤーに情報が伝播していきます。</mark>

![rnnの概念](/wp-content/uploads/2020/01/rnn.jpg)

時系列データ分析というと株価や売り上げデータなどをイメージされると思いますが、実は**言語処理も文字の時系列データ**になるのです。

Google翻訳やAIスピーカーなどの技術もRNNを基にしているんですよー！！

詳しく知りたい方は、以下の書籍を見てみてください！

::product[ゼロから作るDeep Learning ❷ ―自然言語処理編]{url="https://www.amazon.co.jp/dp/4873118360?tag=statistic08-22&linkCode=ogi&th=1&psc=1" image="https://m.media-amazon.com/images/I/512wqsxOrsL._SL160_.jpg" amazon="https://www.amazon.co.jp/dp/4873118360?tag=statistic08-22&linkCode=ogi&th=1&psc=1" rakuten="https://af.moshimo.com/af/c/click?a_id=858168&p_id=54&pc_id=54&pl_id=616&url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2F0%25E3%2581%258B%25E3%2582%2589%25E4%25BD%259C%25E3%2582%258B%25E3%2583%2587%25E3%2582%25A3%25E3%2583%25BC%25E3%2583%2597%25E3%2583%25A9%25E3%2583%25BC%25E3%2583%258B%25E3%2583%25B3%25E3%2582%25B0%2F%3Ff%3D1%26grp%3Dproduct"}

また記事でもまとめていますのでよければのぞいてみてください！

<https://toukei-lab.com/rnn>

## 時系列データ分析　まとめ

本記事では、**時系列データにおける定常性の概念からモデリング**の理論的な話をしてきました。

時系列データ分析について学ぶにためには<mark>もはや王道になっている以下の沖本さんの書籍は購入しておいて損はないでしょう！</mark>

::product[経済・ファイナンスデータの計量時系列分析 (統計ライブラリー)]{url="https://www.amazon.co.jp/dp/4254127928?tag=statistic08-22&linkCode=ogi&th=1&psc=1" image="https://m.media-amazon.com/images/I/41JMUwJfOLL._SL160_.jpg" amazon="https://www.amazon.co.jp/dp/4254127928?tag=statistic08-22&linkCode=ogi&th=1&psc=1" rakuten="https://af.moshimo.com/af/c/click?a_id=858168&p_id=54&pc_id=54&pl_id=616&url=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2F%25E7%25B5%258C%25E6%25B8%2588%25E3%2583%25BB%25E3%2583%2595%25E3%2582%25A1%25E3%2582%25A4%25E3%2583%258A%25E3%2583%25B3%25E3%2582%25B9%25E3%2583%2587%25E3%2583%25BC%25E3%2582%25BF%25E3%2581%25AE%25E8%25A8%2588%25E9%2587%258F%25E6%2599%2582%25E7%25B3%25BB%25E5%2588%2597%25E5%2588%2586%25E6%259E%2590%2F%3Ff%3D1%26grp%3Dproduct"}

さらに時系列データ分析についてもっと知りたいという方はこちらでオススメの本をまとめていますので是非ご覧ください！

:::talk{who="umatan"}
時系列データ分析はぜひ知っておいてほしい！
:::

<https://toukei-lab.com/%E5%8E%B3%E9%81%B85%E5%86%8A%EF%BC%81%E6%99%82%E7%B3%BB%E5%88%97%E5%88%86%E6%9E%90%E3%82%92%E5%8B%89%E5%BC%B7%E3%81%99%E3%82%8B%E4%B8%8A%E3%81%A7%E3%81%8A%E3%81%99%E3%81%99%E3%82%81%E3%81%AA%E6%9C%AC>

データサイエンスや機械学習の勉強方法については以下の記事で詳しくまとめているのでチェックしてみてください！

<https://toukei-lab.com/data-scientist>

<https://toukei-lab.com/machine-learning-study>