Time Series Analysis: ノート2章(その1)

以下の本を読みます。キャラクターは架空のものです。解釈の誤りは筆者に帰属します。お気付きの点がありましたらコメントでご指摘いただけますと幸いです。

Time Series Analysis

Time Series Analysis

f:id:cookie-box:20200101101603p:plain:w60

2章のタイトルは「ラグオペレータ」というのでしょうか。まず「オペレータ」とは時系列(たち)を受け取って新しい時系列を出力するものみたいですね。「時系列0を \beta 倍する」とか「時系列0と時系列1を足す」とかがその例のようです。いわば「掛け算オペレータ」と「足し算オペレータ」ですね。これらのオペレータについては「入力された時系列の時刻 t の値をつかって新しい時系列の時刻 t の値をつくる」ということしかしないので、「時系列0と時系列1をそれぞれ \beta 倍してから足す」ということをしても「時系列0と時系列1を足してから \beta 倍する」ということをしても結果は同じということです。

f:id:cookie-box:20200101101614p:plain:w60

時系列が値を取る空間で分配法則が成り立っていればそれはそうなるね。

f:id:cookie-box:20200101101603p:plain:w60

まあただ本当に利用したいのは「ラグオペレータ」なわけです。ラグオペレータ Ly_t = Lx_t \equiv x_{t-1} ということをするオペレータです。日本語でいうなら「入力された時系列の時刻 t-1 の値をそのまま新しい時系列の時刻 t の値にする」ですね。入力された時系列のインデックスを1ステップ遅らせるからラグというのでしょうか。入力された時系列の1ステップ昔を覗くメガネということもできそうです。

それで、ラグオペレータは掛け算オペレータや足し算オペレータと交換するということです。つまり、

  • 時系列0を \beta 倍してからインデックスに1を足す。
  • 時系列0のインデックスに1を足してから \beta 倍する。
はどちらも同じ時系列になりますし、
  • 時系列0と時系列1を足してからインデックスに1を足す。
  • 時系列0と時系列1それぞれインデックスに1を足してから両者を足す。
もどちらも同じ時系列になります…ということは、もしや任意のオペレータは交換するのでは?

f:id:cookie-box:20200101101614p:plain:w60

そんなわけないかな。例えば各インデックスが日付だったとして、「月曜日の値だけ2倍する」というオペレータがありうるけど、これはラグオペレータと交換しないよ。「月曜日の値だけ2倍する」オペレータを先に作用させると元の時系列の月曜日の値が2倍されてから火曜日にずらされるけど、先にラグオペレータを作用させると元の時系列の日曜日の値が月曜日にずらされてから2倍されるからね。

元時
系列
1234567
月曜
2倍
1434567
ラグ
  
0143456
元時
系列
1234567
ラグ
  
0123456
月曜
2倍
0223456
ラグオペレータと交換するには「新しい時系列の時刻 t の値が、元の時系列の時刻  \{t + c_i\}_{i = 0, 1, \cdots} の値たち(c_0, c_1, \cdotst によらない整数)および t に依存しない定数たちのみに依存する」ようなオペレータじゃないといけないんじゃないかな。「掛け算オペレータ」や「足し算オペレータ」の他に「値が10を超える場合は10にする」「その日を中心にした3日間の平均をとる」みたいなオペレータとかもありうると思う。無論ラグオペレータ自身もラグオペレータと交換するね。

f:id:cookie-box:20200101101603p:plain:w60

ぬ…。まあそれで、ラグオペレータをつかうと y_t = \phi y_{t-1} + w_t のような差分方程式が y_t = \phi L y_t + w_t とかけるとのことです。さらに移項することによって  (1 - \phi L)y_t = w_t \tag{2.2.2} となると。それはまあそうですが…それで、この両辺に以下をかける?

 1 + \phi L + \phi^2 L^2 + \cdots + \phi^t L^t \tag{2.2.3}
なぜこんなものをかけるんです…いくらなんでも唐突すぎるでしょう…。

f:id:cookie-box:20200101101614p:plain:w60

やりたいことは、y_t を、y_{t-1} に何をしたものかで表すんじゃなく、一番最初の y_{-1} に何をしたものかで表すことだね。そうするには  (1 - \phi L)y_t = w_t の左辺を  (1 - a L^{t+1})y_t にすればいい(a は適切な係数)。y_t にラグオペレータを t+1 回かければ y_{-1} に巻き戻せるからね。以下の因数分解の公式を思い出すと、

 1 - x^n = (1 - x)(1 + x + x^2 + \cdots + x^{n-1})
 (1 - \phi L)y_t = w_t の両辺に  1 + \phi L + \phi^2 L^2 + \cdots + \phi^t L^t をかければ以下のようにできるよね。
 (1 - \phi^{t+1} L^{t+1})y_t = (1 + \phi L + \phi^2 L^2 + \cdots + \phi^t L^t)w_t \tag{2.2.6}
このラグオペレータを適用して移項すると以下のようになる。
 y_t = \phi^{t+1} y_{-1} + w_t + \phi w_{t-1} + \phi^2 w_{t-2} + \cdots + \phi^t w_0 \tag{2.2.7}
最初の差分方程式と並べると、
 \begin{split} y_t &= \phi y_{t-1} + w_t  \\ y_t &= \phi^{t+1} y_{-1} + w_t + \phi w_{t-1} + \phi^2 w_{t-2} + \cdots + \phi^t w_0  \end{split}
それぞれ y_t がどのような値か説明しているけど説明の仕方が違うよね。前者は「前のステップの値 y_{t-1}\phi 倍に w_t を足したものです」と説明しているけど、後者は前のステップの値とか最近のステップの値とかつかわずに「一番最初の y_{-1}\phi^{t+1} をかけたものに  \sum_{\tau = 0}^t \phi^{t-\tau} w_\tau を足したものです」といっているからね。前ステップの出力を用いる前者が Recurrent Neural Network 的で、前ステップの出力を用いない後者が Temporal Convolutional Network 的にもみえる(もし2つ以上前のステップの値にも依存する差分方程式だったら RNN 的にはならないけど)。

f:id:cookie-box:20200101101603p:plain:w60

いや、後者の説明の仕方のほうがだいぶ面倒ではないですか? 「前のステップの値 y_{t-1}\phi 倍に w_t を足したものです」の方が簡潔ですよね? 唐突に (2.2.3) 式を持ち出してきた意義がよくわかりません。

f:id:cookie-box:20200101101614p:plain:w60

前者が簡潔にみえるのはこの差分方程式が前者が簡潔になるものだからかな。それに、 (1 - \phi L)y_t = w_t という時系列 \{y_t\} の性質を調べるのに、(1 - \phi L) というオペレータの逆数のようなオペレータがあったら便利そうだよね。…もし |\phi| < 1y_{-1} が有限の値だったら、t \to \infty \phi^{t-1} y_{-1} \to 0 だから、大きな t で以下の1行目が成り立つ。ということは、大きな t で以下の2行目も成り立つ。

 \begin{split} (1 - \phi^{t+1} L^{t+1})y_t & \approx y_t \\ (1 + \phi L + \phi^2 L^2 + \cdots + \phi^t L^t)(1 - \phi L)y_t & \approx y_t \end{split}
さらに、どの y_t も有限の値をもつ( bounded である)と仮定する。このとき上の2行目から、「オペレータ (1 - \phi L) を適用してオペレータ  (1 + \phi L + \phi^2 L^2 + \cdots + \phi^t L^t) を適用することは何もしないことと同じである」といえるよね(オペレータの順序は逆でもいい; もし bounded でなかったらこのようなオペレータの分解はできない、不定形になっちゃってるかもだから)。だったら、以下のようなオペレータを考えることができる(これは定義だと思うからイコールではなくあえて \equiv にしてみたよ)。
 (1 - \phi L)^{-1} \equiv \lim_{j \to \infty} (1 + \phi L + \phi^2 L^2 + \cdots + \phi^j L^j) \tag{2.2.8}
このオペレータ (1 - \phi L)^{-1} は、(1 - \phi L) と合わせて適用すると何もしないことになるようなオペレータだ。…これを利用すると、以下のような時系列 \{y_t\} があるとき、
 (1 - \phi L)y_t = w_t
|\phi| < 1 かつ \{y_t\} が bounded だったら( \{y_t\} がな場合は定常だったら)、(1 - \phi L)^{-1} というオペレータが定義されるのでこれを両辺にかけて、
 y_t = (1 - \phi L)^{-1} w_t
が成り立つ。つまり、以下が成り立つ。
 y_t = w_t + \phi w_{t-1} + \phi^2 w_{t-2} + \phi^3 w_{t-3} + \cdots \tag{2.2.9}
\{y_t\}, \{w_t\} が確率的だったら、この式を使えば \{w_t\} の分布から \{y_t\} の分布が出るんじゃないかな。

f:id:cookie-box:20200101101603p:plain:w60

うーん…逐次的に y_t の実現値を求めたいとかではなくて y_t の定常分布を知りたいとかならその (2.2.9) 式が便利かもしれないですね。しかし、\{y_t\} が bounded とか定常とかでなかったら駄目なんですか? だって、その式の両辺に (1 - \phi L) をかければ  (1 - \phi L)y_t = w_t になるので (2.2.9) 式はいつでも正しいのではないですか?

f:id:cookie-box:20200101101614p:plain:w60

(2.2.9) 式が  (1 - \phi L)y_t = w_t 式を満たすのはいつでも正しいよ。その逆が真じゃない。(2.2.9) 式の右辺に a_0 \phi^ta_0 は任意の定数)を足したものだって  (1 - \phi L)y_t = w_t を満たすからね。だから一般には (1 - \phi L)^{-1} というオペレータが定まってない。でも、\{y_t\} が bounded とか定常という条件が課されていればこの a_0 \phi^t の項は a_0 = 0 でないといけない。でないと、|\phi| < 1 なら t \to -\infty にしたときこの項(の絶対値)は発散しちゃうから、という説明だけど…結構違和感あるな…オペレータ (1 - \phi L)^{-1} を定義したときに t \to -\infty の側の極限の議論なんてしてないし…a_0 = 0 という要請は t \to -\infty で発散してしまうからではなくて単に初期条件としてそうすべきって話じゃないのかな…。

f:id:cookie-box:20200101101603p:plain:w60

面倒なので次節に行きましょう。今度は2次の差分方程式 (1 - \phi_1 L - \phi_2 L^2) y_t = w_t になりました。それでこれを (1 - \lambda_1 L)(1 - \lambda_2 L) y_t = w_t因数分解しようとしてますね。\lambda_1, \lambda_2 を求めるには式 (2.3.5)z の方程式と考えて解けばいいです。解が \lambda_1^{-1}\lambda_2^{-1} になります。\lambda_1, \lambda_2 は1章で出てきた行列 (2.3.17)固有値でもあります…いやまあそうなんですけど、だから何というか…。

f:id:cookie-box:20200101101614p:plain:w60

結局 \lambda_1, \lambda_2 の絶対値が1より小さいとき時系列は定常になるんだよね。1章と2章はAR過程が定常になる条件を異なるアプローチで求めてるんじゃないかな。1章では「繰り返し掛け算するのはどんな行列だろう?」って発想で、\lambda_1, \lambda_2 はその行列の固有値って形で出てきた。繰り返し掛け算する行列の固有値の絶対値が1より小さくないと任意の時刻の平均が等しくはならないよね。発散か振動していって平均が移動していっちゃうから。他方、2章では「ノイズ(\{w_t\})の式で表すとどうなるだろう?」って発想で、ノイズの係数として \lambda_1^t, \lambda_2^t が出てきたのかな。これも絶対値が1より小さくないといずれ発散か振動して困る。2章の発想はAR過程をMA(∞)過程でかき直したともいうかな。

f:id:cookie-box:20200101101603p:plain:w60

急にめちゃくちゃ沖本本参照しないでください…。

その2があればつづく