時系列解析の方法

私のおおざっぱな理解。時間につれて変化する値から、周期などを自動的に得る方法。
Dec. 6, 2004

コサイナー法 cosinor method

時系列信号に余弦曲線を最小二乗法であてはめ、周期、振幅、頂点位相を求める方法。 線形回帰のように定式化できるかと思って5分ほどやってみたが、めんどうで飽きた。 勾配法かなんか、繰り返し計算でやるのが楽でよい。 しかしどんな信号にもとりあえず当てはめてしまうので、 当てはまり具合を判定する必要があり、 またパラメータ探索の初期値依存がかなり高いので、 いったんDFTやって初期値の目星を付けるとか、やっぱり現場の経験が欠かせない。

gnuplot> f(x) = a*cos(6.2832/b*x+c)
gnuplot> fit f(x) 'data.txt' via a, b, c
...
a = ... # 振幅、fと同じ単位
b = ... # 周期、xと同じ単位
c = ... # 位相、xと同じ単位
gnuplot>

自己相関 auto correlation method

信号を複製して、一方では時刻にオフセットを加え、 元の信号と時刻が共通する点だけで相関係数を計算し、 相関係数が極大になるオフセットの大きさをもって周期とみなす方法。 オフセットが大きくなるにつれ相関係数を計算する点数が減り、 信頼性が下がるので、大きな周期は見つけられない。 またこの方法だけでは振幅と位相は決められない。

フーリエ変換 Fourier transform

時系列信号をフーリエ級数に展開して、 どの周波数成分がどの程度寄与しているかをスペクトルとして表現する方法。 これだけでは振幅と位相は決められない。