はじめに
気になっていたこちらの書籍を読みました。
元々学生の時に少し齧った内容だったので、非常に楽しかったです。
12章仕立てで様々な話題を広く薄く扱っており、読みやすかったです。
しかし、終盤の応用系の話がかなりさらっとしているのは、残念でした。
とわ言え面白い内容だったので、基本的なところをまとめておきます。
時系列データのカオス性
この書籍では非線形な時系列データを力学系理論を用いて解説している。
力学系(dynamical systems)では、現在や過去の状態からその将来の状態が決まるシステムのことです。
単純なルールで将来の状態が決まるのに複雑な振る舞いが現れるのが特徴。
これを代表例が決定論的カオスであり、典型例としてエノン写像があげられる。
エノン写像は次の式で定義される。
ここで、とは実パラメータであり、よく用いられるのは とである。
DChaos packageを利用して、エノン写像の時系列を生成する。
library(DChaos) N <- 500 ts <- henon.sim(a=1.4, b=0.3, s=0, n=N)
また、このエノン写像をリターンプロットと呼ばれるt時点とt+1時点の値のペアをプロットしたグラフも示す。
すると特定の部分にのみ点がプロットされる。 この特定の点の集まりをアトラクタと呼ぶ。
ランダムな時系列の場合は、アトラクタは存在しない。 カオス性を持つ時系列の代表例は他に、ロジスティック写像とガウス写像がある。
ロジスティック写像
# ロジスティック写像 ts <- logistic.sim(n=N, a=4, s=0)
# ガウス写像 ts <- gauss.sim(alpha=6.2, beta=-0.5, s=0, n=N)
また、 ローレンツモデルと呼ばれる3変数常微分方程式で定義されるモデルもある。
パラメータを, , とし、初期値を, , とした時系列データとアトラクタは次のようになる。
初期値鋭敏性
カオス性を持つ時系列は、初期値が少し変化しただけで、その後の時間経過があると大きく異なる軌道を示すことが知られている。
これを初期値鋭敏性やバタフライ効果と呼ぶ。
自己相似構造
アトラクタには、一部を拡大すると全体の構造と類似の幾何学的構造が見られる。
このような、構造があることを自己相関構造やフラクタル性があると言う
時系列データのカオス性指標
時系列のカオス性を測る指標の代表例として相関次元と最大リャプノフ指数が挙げられる。
相関次元
相関次元とは、距離rのよりも小さな2つの点の対の数が に比例しているとき、 が相関次元となる。
相関和と呼ばれる、時系列の相関性を表現する統計量が次のように定義される。
ここで は、が0以上なら1、そうでないなら0を取るヘビサイド関数と呼ばれる関数である。
が十分小さいところで次の関係が成り立つ。
の対数を取るとが十分小さいところで次のようになる。
この時のDが相関次元となる。
例としてエノン写像における相関次元を求める。
nonlinearTseries packageを利用する。
N=2000 ts <- henon.sim(a=1.4, b=0.3, s=0, n=N) cd = corrDim(time.series=as.numeric(ts), min.embedding.dim=2, max.embedding.dim=5, time.lag=10, min.radius=1e-3, max.radius=50, n.points.radius=100, theiler.window=100, number.boxes=100, do.plot=F) plot(cd, type="l") estimate(cd, regression.range=c(0.01,1)) # 1.804719
相関次元を推定するために必要な時系列データの長さは次のようにもとまる。
最大リャプノフ指数
最大リャプノフ指数は、2つの近傍点を初期条件とする2つの軌道が、時間経過とともにどのぐらいの速さで指数関数的に離れていくかを示す量。
初期値鋭敏性の評価に利用することができる。
決定論的カオスである場合、tステップ後の2点間の距離は、一般的に指数関数的に大きくなっていく性質がある。
係数を用いると、次のように変化していくと考えられる。
これの対数を取ると次のようになる。
左辺は時間tに対して線形に増加している。 iに関して平均をとる。
最大リャプノフ指数は、これをtの関数としてプロットして、その傾きを求めることで得られる。
例として、エノン写像の最大リャプノフ指数を推定する。
RではnonlinearTseries packageを用いる。
library(nonlinearTseries) ts = as.numeric(henon.sim(a=1.4, b=0.3, s=0, n=5000)) estimation = maxLyapunov(time.series = ts, embedding.dim = 2, time.lag = 1, radius = 0.001, theiler.window = 4, min.neighs = 2, min.ref.points = 500, min.time.steps = 5, max.time.steps = 20) estimate(estimation) # [1] 0.3617881
推定された傾きは0.36となり、これは1回の観測あたり平均して0.36bit分の情報が生成される程度の機動不安定性があることを意味している。
リカレントプロットと含まれる情報量
リカレントプロットとは、縦軸横軸の両方に時間ステップをもつグラフである。
具体的には、時刻iと時刻jの値がある閾値以下である場合に点を打っている。
このリカレントプロットにはダイナミクスにおける様々な情報が含まれている。
例えば、sin カーブ、エノン写像、ランダム時系列のリカレントプロットは次にようになる。
sinカーブ
エノン写像
ランダム
時系列に相関がある場合、斜めに点が並ぶ。
もしリカレントレートがの場合のランダムな時系列で斜めに点が並ぶ確率は [tex: p2] である。
上三角形部分に点が置かれることが二項分布に従うと考えれば、その情報から系列相関の検定を行うことができる。
また、リカレントプロットから元の時系列情報を復元することもできる。