らくがき入門

機械学習を始めとしたコンピュータサイエンスを主に扱っています。

時系列分析における系列変換

沖本本のアウトプットを共有目的と自分用のメモ目的で書きます。

時系列分析の目的

時系列分析の目的は、複雑な観測データが持つ多様な特徴のうち 分析者にとって重要な特徴のみを簡単に表現できるモデルを構築することです。 このように作成したモデルを基に、目的に応じた分析を行います。

時系列分析における変換の目的

何も加工されていない観測データそのものの時系列データは原系列 と呼ばれます。 原系列は観測データそのものですが、 自然現象を観測データにする際にもある程度の情報の取捨選択が行われていることは一応念頭に置いておくべきです。

基本的に時系列分析の目的は、この原系列の性質を明らかにして予測などを行うことが多いですが、 原系列に対して時系列分析をするよりも何らかの変換を施して分析を進めるほうがいいことが多いです。 なので、分析におけるざっくりとした方針は以下のようになります。

  1. 原系列に対して何らかの変換を施す
  2. 原系列を変換した系列に対して分析を行う
  3. 変換を逆変換して原系列に戻すことで、原系列の性質を明らかにする

変換の種類

  • 対数変換

原系列に対して対数の変換を施します。 たとえば、経済・ファイナンスデータなどは、値が大きくなるにつれてばらつきが大きくなるデータなどがあり、 時系列分析において重要な性質である定常性の仮定を満たさない場合があります。 そのような場合は対数変換を施した対数系列 にすることで定常過程に従う時系列データにする場合があります。

  • 差分変換

原系列に対して1時点離れたデータの差を新たな系列に変換して分析することもあります。 これを差分系列と呼びます。 時系列データには、定常性を持つ定常過程に従う時系列データの他に、単位根過程に従う時系列データなどが存在します。 今回は、単位根過程の詳しい説明は省略しますが、単位根過程の差分系列は定常過程 になるということだけは抑えておいても良さそうです。 基本的に時系列分析において時系列データが定常過程に従うと仮定できると解析しやすくなるので、 その点でも単位根過程の差分系列が定常過程に従うという事実は重要です。

  • 対数差分変換

上記の対数系列の差分系列である対数差分系列に変換します。 この変換を施す動機は変化率に興味がある場合です。 離散データの場合は、対数差分系列に100を掛けて変化率とする ことができます。 対数差分系列がなぜ変化率を表現しているのかに関しては1次のテイラー展開の近似から説明できます。

  • 季節調整

時系列データには季節性を含んだデータも多いです。たとえば株価などがわかりやすい例として考えられます。 たとえば、一般的に株価は年の前半は上昇トレンドですが、年の後半は減少トレンドであることが知られています。 時系列分析において、季節変動では説明できない時系列データの動きに興味のあることが多いように思います。 季節調整自体は難しい問題で、僕自身も勉強不足なので扱いきれていませんが、Pythonのstatsmodelsというライブラリの中で季節調整のできる関数が実装されています。

from statsmodels.tsa.seasonal import seasonal_decompose
seasonal_decompose(x, freq)

xにはarray-likeな時系列データを渡して、freqで季節性の周期を渡します。たとえば、日次のデータだとfreq=7 にすることで一週間の季節性を排除します。説明のために簡易的になってしまいましたが、その他も調整するパラメータが存在するので 公式ドキュメントを確認してみてください。

まとめ

今回は時系列データの変換に関してまとめました。 機械学習におけるデータのスケール変換と同様に上記で示した変換はモデルの精度に影響が及ぶため、 重要だと思います。 統計モデリングにおいてなぜこの変換をするのか、今現在どういう仮定の下でモデリングをしているのかは 常に人に説明できるようにしておくことが重要だと日々感じています。 まだまだ勉強不足なのでアウトプットと並行しながらインプットも進めていきたいですね。

経済・ファイナンスデータの計量時系列分析 (統計ライブラリー)

経済・ファイナンスデータの計量時系列分析 (統計ライブラリー)