時系列解析初心者が始める時系列解析(2)

2022/12/20に公開

時系列の相関を見る

参照:https://elf-c.he.u-tokyo.ac.jp/courses/379

1変量時系列の平均、分散、自己共分散


前提

  • y_n:時系列
    • n: 時刻、N: データ数, y_1,\cdots,y_N
  • E: 期待値(平均)

実際に表すと、、、

  • 平均 : \mu = E[y_n]
  • 分散 : Var(y_n) = E[(y_n - \mu_n)^2]
  • 共分散 : Cov(y_n,y_m) = E[(y_n-\mu_n)(y_m-\mu_m)
筆者のコメント
  • 時系列データについては、ある確率分布に従うデータと捉えることができるため、上記のような式が表される。

定常性


定義

  • 時系列の確率構造が時間変化しないこと
  • 定常性には2種類ある。
    • 弱定常: 平均・分散・共分散が(存在して)変化しない(2次モーメントまでが不変)
      • 任意のシフト量(ラグ), k \in \lbrace{0,\pm1, \pm2,\cdots}\rbraceに対して以下が成り立つ。
        \begin{align}E(y_n) &= E(y_{n+k})\\Var(y_n) &= Var(y_{n+k})\\Cov(y_n,y_m) &= Cov(y_{n+k}, y_{m+k})\end{align}
    • 強定常: 確率分布が時間変化しない。(全てのモーメントが不変)
      • k: 任意のシフト量
      • m: 任意の次元(時点数)~~~(=1,2,...)
      • n_1,...n_m: 任意の時点
        確率分布が時間変化しない\\ \begin{align}p(y_{n_1}, y_{n_2},\cdots,y_{n_m})= p(y_{n_1+k},y_{n_2+k}, \cdots , y_{n_m+k})\end{align}

強定常と弱定常の関係

  1. 弱定常かつ正規分布 --> 強定常
    • 弱定常で、2次モーメントまで変化しないことが担保される。
    • 正規分布は2次モーメントまでが設定されることで、形が決まる分布を持つ。
  2. 平均、分散、共分散が存在するとき[強定常 --> 弱定常]
  3. 強定常だが弱定常ではないこともある。
    • 例)コーシー分布に従う時系列

自己共分散関数


定常時系列の自己共分散関数

前提 --> y_n: (弱)定常時系列

  • 下記2つの前提を追加で設けると数式を下記のように表すことができる。
    • 時刻nだけに依存しない
    • 時間差kだけに依存
      \mu_n \dashrightarrow \mu \equiv E[y_n]

      Cov(y_n,y_{n-k}) \dashrightarrow C_k \equiv Cov(y_n,y_{n-k}) = E[(y_n - \mu)(y_{n-k}-\mu)]
用語 意味
C_k 自己共分散
C_k, k=0,\pm1,\cdots,\pm{L} 自己共分散関数
k ラグ(lag)
コレログラム 自己共分散関数を図示したもの

自己共分散関数の性質

  1. 自己共分散関数は偶関数
    C_{-k} = C_k
  • 1変量だけに成り立つ性質
  • ARモデルが簡単に推定できる理由としても挙げられる
  • 以下、導出。
    \begin{align}C_k &= Cov(y_n, y_{n-k})\\C_{-k} &= Cov(y_n, y_{n+k}) \\&=Cov(y_{n+k}, y_n) ~※\\&= Cov(y_n, y_{n-k}) ~※\\&= C_k\end{align}
  • ※:式変形の補足
    • (7)1変量のため、順番を入れ替えてもOK
    • (8)定常性があるという過程のため、時間軸を置き換えても影響なし
  1. 絶対値の最大はC_0
    |C_k| ≤ C_0
  • 以下、導出。
    E(a^2)E(b^2)≥E(ab)^2

    a=y_n-\mu, b=y_{n-k}-\mu
\begin{align}E(a^2) &= E(y_n - \mu)^2 &= C_0 ※\\E(b^2) &= E(y_{n-k} -\mu)^2 &= C_0※\\E(ab) &= E(y_n - \mu)(y_{n-k} - \mu) &= C_k\end{align}
  • 元の式に当てはめると

    C_0C_0 ≥ C_k^2 \dashrightarrow C_0 ≥ |C_k|

  • ※:式変形の補足

    • (10)(11)C_0はラグ0の自己共分散関数を表すということ。
  1. 半生定値(\forall:は全称記号)
    \sum_{i=1}^m\sum_{j=1}^m{\alpha_{i} \alpha{_j} C_{i-j}} ≥ 0, ~\forall~{\alpha_1,\cdots, \alpha_m}
  • これが成り立つことで、Yule-Walker方程式が解を持つ。

    • 時系列のモデルを解くときに使用。C_{i-j}は自己共分散関数の行列式となる。
    • C_{i-j} = \begin{bmatrix}C_0&C_1&\cdots&C_{n-1}\\ C_1&C_0&\ddots&\vdots\\ \vdots&\ddots&\ddots&C_1\\ C_{m-1}&\cdots&C_1&C_0 \end{bmatrix}
  • 以下、導出。

    \begin{align}E\Big(\sum_{i=1}^m{\alpha_i y_{n-i}}\Big)^2 &=\sum_{i=1}^m\sum_{j=1}^m{\alpha_{i} \alpha{_j} E[y_{n-i}y_{n-j}]}&= \sum_{i=1}^m\sum_{j=1}^m{\alpha_{i} \alpha{_j} C_{i-j}} ≥ 0\end{align}

  • ※:式変形の補足

    • (13)は元々が2乗の式から展開しているため、0以上(非負)であるということを表す。

自己相関関数


自己相関関数

R_k\equiv Corr(y_n,y_{n-k})=\frac{Cov(y_n,y_{n-k})}{\sqrt{Var(y_n)Var(y_{n-k})}}
  • 上記式は自己相関関数を表すが、つまりは、(y_n, y_{n-k})の相関係数である。
  • これが定常時系列の場合は下記のように変形できる。
    \begin{align}R_k &= \frac{Cov(y_n,y_{n-k})}{\sqrt{Var(y_n)Var(y_{n-k})}}\\&= \frac{C_k}{\sqrt{C_0C_0}}\\&= \frac{C_k}{C_0}\end{align}

白色ノイズ(雑音)

時間的に相関がない時系列\\C_k = 0, R_k = 0, k ≠ 0
  • 上記式については、k=0の時にだけ、値を取るというふうに解釈できる。

モデリングにおいて重要な概念

  • 決定論的モデル: f(y_n,y_{n-1},\cdots) = 0
    • 決定論的モデル:対象としている物事の挙動などが一意に予測できると考えるモデル。
    • <---> 確率論的モデル:対象としている物事がある確からしさである範囲にあると予測するもの。
  • 時系列モデル: f(y_n,y_{n-1},\cdots) =w_n,  w_n:白色ノイズ
  • w_nは乱数のようなもの。

エルゴード性


エルゴード性とは

  • 期待値(空間平均)=時間平均 が成り立つこと
  • ある時点での取り得る値で平均を取った時に、データ数を増やして、その時系列データの平均を取った場合、その2つは一致するということ。
    • 例)出る目が一定のサイコロを1人が5,000回振って出た目の平均(時間平均)と、5,000人が一度に振って出た目の平均(空間平均)が等しい。
  • 分散についても同様。
  • 通常、時系列解析については、エルゴート性を前提にしている。
    • ただし、エルゴート性が成り立たない定常時系列も存在する。
    • 成り立たない場合、対応が難しいため、基本的には、成り立つ前提で進めるのがセオリー。

自己共分散関数と自己相関係数の推定


自己共分散関数の推定

定常時系列 y_1,\cdots, y_n

名前 数式
標本平均 \hat{\mu} = \frac{1}{N}\sum_{n=1}^{N}{y_n}
標本自己共分散関数 \hat{C_k}=\frac{1}{N}\sum_{n=k+1}^{N}{(y_n-\hat{\mu})(y_{n-k}-\hat{\mu})}
標本自己相関関数 \hat{R_k} = \frac{\hat{C_k}}{\hat{C_0}}
  • 上記の推定量を用いて推定をしていく。
  • 実際に自己相関を計算し、コレログラムとして図示することで、周期性が見て取れるようになる。
筆者のコメント
  • \hat{C_k}については、平均と分散でそれぞれ性質を持つという説明があったが、具体的な活用方法が理解できなかったために、詳細および数式については、一旦割愛。
  • 概要としては、モデリング後の(最尤)推定時に色々といい性質をも持っているということ。また、\hat{C_k}は不偏推定量ではないが、あえて不偏推定量として扱わないようにしているということ。理由としては、不偏推定量としてしまうと、その性質が担保されなくなるため、そのまま使うらしい。

相互共分散関数と相互相関関数


多変量時系列の定義

  • 多変量(m変量)時系列の場合、y_nについては、m変量分のベクトルとなる。

  • つまり、関連する複数の特徴量について、その時系列を同時に記録したデータということ。

  • 以下、数式。

    y_n \in R^m, n=1,\dots,N

    y_n=\begin{bmatrix}y_n(1)\\y_n(2)\\\vdots\\y_n(m)\end{bmatrix}

  • まずは、ヒストグラムと散布図で可視化するといい。

    • Pythonで言うと、seabornのpairplot()

定常時系列の相互共分散関数

  • 相互共分散関数を数式で表すと下記のようになる。
  • i,jはそれぞれ別の特徴量ということである。
    \begin{align}C_k(i,j) &= Cov(y_n(i), ~~ y_{n-k}(j))\\&= E[(y_n(i) - \mu{_i})(y_{n-k}(j) - \mu{_j})]\end{align}
  • また、C_kについては、多変量の場合、その変量間の共分散行列を表している。
  • 対角成分については、自己共分散である。
    C_k=\begin{bmatrix}C_k(1,1)&\cdots&C_k(1,m)\\\vdots&\ddots&\vdots\\C_k(m,1)&\cdots&C_k(m,m)\end{bmatrix}

相互相関関数

  • 相互相関関数
    R_k(i,j) = \frac{C_k(i,j)}{\sqrt{C_0(i,i)C_0(j,j)}}
  • 相互相関行列
    R_k=\begin{bmatrix}R_k(1,1)&\cdots&R_k(1,m)\\\vdots&\ddots&\vdots\\R_k(m,1)&\cdots&R_k(m,m)\end{bmatrix}

相互共分散(相関)関数の性質

  • 相互共分散関数、相互相関関数ともに、行列であり、下記のような性質が成り立つ。
  • 相互相関関数は偶関数ではないため、1変量時と異なり、前後それぞれでモデリングが異なる。
    C_{-k}=C^T_k, R_{-k} = R^T_k
  • 以下、導出。
    \begin{align}C_{-k}(i,j) &= Cov(y_n(i), ~~ y_{n+k}(j))\\&= Cov(y_{n+k}(j),~~ y_n(i))~~※\\&= Cov(y_n(j),~~y_{n-k}(i))~~※\\&= C_k(j,i)~~※\end{align}
  • ※:式変形の補足
    • (20)はy_n(i),y_{n+k}(j)がともにスカラーであるため、可能な式変形。
    • (21)は定常性を過程しているため、時間軸を変化させても影響がないということ。
    • (22)はC_k(j,i)については、j,iが入れ替えられているが、今回は多変量なため、順番が変わると中身も変わる。この場合、転置を取ることで、解決する。

Discussion