時系列解析における自己共分散・自己相関の基礎知識

 2019/09/23    時系列分析    


この記事では、pythonで時系列解析・分析を行っていくうえでの基礎知識として、時系列データに対する自己相関・自己共分散の方法について説明します。平均・分散、正規分布などの統計学の初歩の知識を前提とした初心者向け入門記事です。
以降、時点\( t \)での時系列の値・確率変数を共に \(yt\) と表します。

時系列データにおける自己共分散・自己相関

データの要約として頻繁に用いられるの平均や分散は、時系列データに対しても考えることができます。 また、複数の変数間の関係を要約する方法としては、相関係数や共分散が頻繁に用いられます。 特に相関係数は -1 から 1 の値をとり、二変量がどのぐらい直線の関係にあるかを表すものでした。 時系列は系列であり前後の繋がりに意味があると考えられるので、任意の時点 t での値 \(yt\) と \(k\) だけずれた時点 \(t−k\) での値 \(yt−k\) の関係に注目します。 \(yt\) と \(yt−k\) の共分散や相関係数は、その系列自身との関係を表すために自己共分散や*自己相関 (Auto Correlation) *と呼ばれます。

本記事では、時系列 \(yt\) に対し、平均 μt 、分散 \(Var(yt)\) 自己共分散 \(Ck\) と自己相関 \(Rk\) を以下で表すことにします。
$$
\mu_t = {\rm E}(y_t)\\
C_{t, k} = {\rm Cov}(y_t, y_{t-k}) = {\rm E}\{(y_t - \mu_t)(y_{t-k}- \mu_t)\}\\
R_{t, k} =
\frac{{\rm Cov}(y_t, y_{t-k})}
{\sqrt{ {\rm Var}(y_t){\rm Var}(y_{t-k}) }}
= \frac{C_{t, k}}{C_{t, 0}}
$$
また、ラグ \(k\) を様々変え \(k\) の関数とみなしたとき、 \(Ct,k\) は自己共分散関数、 \(Rt,k\) は*自己相関関数 (Auto Correlation Function: ACF) *と呼ばれます。

時系列データの自己相関関数をプロットする

PythonでAirPassengersデータの自己相関関数をプロットしてみましょう。 自己相関関数をプロットするには、統計解析に関するモジュールstatsmodels内のplot_acf()を用います。 考慮するラグ \(k\) の最大値を引数lagsで与え、1-信頼区間を引数alphaで与えることができます。 ここではalpha = Noneとしているため信頼区間は表示されません。 結果より、ラグが大きくなるに従い正の自己相関が緩やかに減衰していくことがわかります。 また、12の倍数のラグでピークを持っていることより、系列が12の周期をもっているのではないか、ということも伺えます。 AirPassengersは月次データであるため、「毎年夏休みの期間は乗客数が多い」のような周期があると思われます。

import statsmodels.api as sm
sm.graphics.tsa.plot_acf(df[["Passengers"]], lags = 30, alpha = None)
plt.xlabel("k")
plt.ylabel("ACF")
plt.show()

まとめ

この記事では時系列データの要約に用いられる自己共分散・自己相関をプロットする方法について説明しました。

次回の記事では時系列の定常性について考えていきます。

  • 人気の投稿とページ

  • コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です