渋谷駅前で働くデータサイエンティストのブログ

元祖「六本木で働くデータサイエンティスト」です / 道玄坂→銀座→東京→六本木→渋谷駅前

時系列データの「トレンド」はどう分析したら良いのか(追記あり)

このブログでは割と頻繁に計量時系列分析の話題を書いているので皆さん食傷気味かもしれませんが、経済・ファイナンス時系列データに頻出する要素として「系列相関(自己相関)」というものがあります。それが生じる理由は多岐に渡るのでここではいちいち取り上げませんが、マーケティング業界でフォーカスされるのは主に季節性(曜日などに依存する周期変動)とトレンド(大きな「上昇下降傾向」や「うねり」として見られる中長期のベースライン変動)の2点だと思われます。


これら2つの非線形要素に対して、季節性は一般的には「真のシグナルとは無関係な変動」とみなされ、調整されることが多いです。で、トレンドも一般的には「時系列回帰モデルなどの分析の関心外」ということで、やはり分離した上で分析のメインテーマからは外されることが多いです。……なのですが、マーケティング業界ではこの分離されて傍によけられた側の「トレンド」がむしろ注目されることが多いんですね。


理由は色々あるんですが、最も多く聞かれるのが「ブランドエクイティ(ブランド資産)の蓄積効果だと見做し得るから」というもの。これは直感的にも分かりやすい話で、例えばMMM (Marketing/Media Mix Models)では「広告やマーケティング施策という『刺激』に対する『反応』」として捉えられる部分を線形回帰可能パートとして分離し、残りのトレンドを「何かしらのそれ以外の要因による長期変動」とみなすことが多いのですが、後者は確かにブランドが浸透した結果としての「底上げ」であると解釈するのが自然であろうと思われます。


そういうわけで「トレンドが生じる要因を分析で突き止めたい」という要望は定期的に持ち上がってくるんですが、困ったことに「トレンドを直接分析する方法」って意外とないんですよね。そこで、過去にこのブログで取り上げてきた「トレンドを扱えるかもしれない分析手法」を改めて概観することで、今後の議論のタネとしていこうと思います。なおいつもながらで恐縮ですが、僕は時系列分析は過去に散々勉強したものの理論面の理解度にはまだまだ不安がありますので、内容に理解不足や誤認識の点などありましたら何なりとご指摘くだされば幸いです。

そもそも系列相関とは何か


系列相関については例えば東大出版会緑本*1など経済学分野の統計学のテキストを読んでいただいた方が早いかと思いますが、皆様お馴染み統計学WEBに端的なまとめが書かれているので引用させていただくと、

系列相関
serial correlation


回帰分析において、誤差項(残差、実測値と理論値の差)に自己相関がある場合、系列相関が認められる、または自己相関が認められると言う。

とあります。これは時系列データに限らず回帰分析の対象となるいかなる種類のデータに対しても当てはまる定義ですが、こと時系列データに関しては「トレンド」「季節性」がその代表例として挙げられるかと思います。


ちなみにトレンドや季節性がもたらす問題点とその解決策については、9年前の記事でざっくりまとめてありますので、興味がおありの方はお読みください。今回の記事では季節性は傍において、トレンドのみにフォーカスします。なお、記事冒頭のイラストはNano Bananaに今回のテーマを与えて描かせた物です(笑)。


トレンドとはどう表現されるものなのか



これまでこのブログでは何通りかの「トレンド」の概念を取り上げてきました。まず、お馴染み沖本本ベースの計量時系列分析のシリーズ解説をやった時に登場したのが、単位根過程とトレンド過程です。これはどちらかというとかなり広汎な「トレンド」の概念を表すもので、「定常過程を累積(cumulative sum)時系列にすると単位根過程になる」ということと、「トレンドを伴うたいていの時系列データは単位根過程なので差分系列を取れば定常過程になる」ということさえ覚えていれば概ね大丈夫です。


もう一つは、RStanでベイズ構造時系列モデルを扱う際に取り上げた二階差分トレンドで、

CV_t = Q_t + cumsum(trend_t)
trend_t - trend_{t-1} = trend_{t-1} - trend_{t-2} + \epsilon_t

のように「『前々期と前期の傾きの差』に正規分布ノイズが加わったものが『当期と前期の傾きの差』になる」という、いってみれば緩やかかつなだらかに傾き自体が変動するトレンドを表現するものです。これはベイズ推定&MCMCによるモデル当てはめにおいて使われることが多いようで、MMMでも用いられるようです。


 trend_t = \mu t^\kappa
 \mu \sim Normal(0, 1)
 \kappa \sim Uniform(0.5, 1.5)

なおMMM周りだとこういう指数系のトレンドも使われるようで、上記はLightweight MMMにおけるトレンドの表現です。実際にコード中でも同じように書かれています*2。他方で、例えばPyMC Marketing MMMでは「線形トレンド」を採用しています*3


ちなみに、動的線形モデル・状態空間モデルの文脈で「ローカル線形トレンド」という概念を取り上げたことがありますが、これはこれでまた別物です。


もっと初歩的なレベルで言えば、RにもPythonのstatsmodelsにも実装のあるSTLもトレンドを分離できる手法の一つです。ただし、これはLOESSという局所回帰系のアプローチで時系列を「季節性+トレンド+残差」に分解するもので、トレンド自体を分析するものではありません。


興味深いのは、これだけ多種多様な「トレンド」の表現が分立しているにもかかわらず、どの手法を使ってもどんなトレンドが対象であっても、いずれもそれなりにうまくフィッティングできてしまうということ。それはもしかしたら、トレンドが「解釈次第でどうとでもなる代物」だということの表れなのかもしれません。しかし、これらの「トレンド」の定式化はいずれであっても「トレンドを回帰分析可能なパートから分離する」のが主眼のものばかりです。では、トレンドそのものを扱おうと思ったらどうしたら良いのでしょうか?


トレンドを扱えるかもしれない分析手法


ということで、以下にトレンドを扱える「かもしれない」分析手法を列挙していきます。ただし、先に注記しておきますが基本的にはどの手法であってもトレンドそれそのものの要因分析(つまり回帰分析)ができるわけではありませんので、悪しからず。

ARIMA


この手の話題になると筆頭に挙がることが多いARIMAですが、本質的には和分過程(単位根過程と事実上同じ)を伴うAR過程をモデリングする単変量自己回帰モデルなので、トレンドの要因を特定できるわけではありません。未来値の予測はできます。

VAR / VECM


多変量自己回帰モデルであるVAR / VECMはそれこそMMMの代替としても挙げられることの多い手法で、確かに重回帰っぽい回帰分析(その気になれば目的変数への説明変数の影響をパラメータ推定の形で解釈することができる)もできますが、トレンドについては前掲の線形トレンドの定式化を用いて分離することが前提となっており、やはりトレンドの要因分析はできません。

状態空間モデル・カルマンフィルタ


状態空間モデルもカルマンフィルタも、多変量時系列モデルとして名高い分析手法ですが、これもトレンドについてはローカル線形トレンドなどで分離してしまうのが前提となっており、やはりトレンドの要因分析はできません。

ベイズ構造時系列モデル (BSTS)


ベイズ構造時系列モデルもトレンドを扱える多変量時系列モデルとして挙げられることが多い手法ですが、やっていることは状態空間モデルと同様であり、トレンドの扱いも同じく「要因分析ができるわけではない」です。

差分系列回帰(見せかけの回帰をヒントに)


MMM周りでは先述したように、二階差分トレンドや線形トレンドはたまたスプライン回帰などでトレンドを回帰分析可能パートから(季節性と共に)分離することが常態化しています。で、その分離したトレンドそのものを改めて回帰分析してみたい、という要望が出るという現場事情は既に記事冒頭で述べた通りです。しかしながら、分離されたトレンドが単位根過程なのは当然として、多くの場合説明変数となるメディア変数もまた単位根過程であることが多く、そのまま回帰分析すればどストレートに「見せかけの回帰」が生じます。では、どうしたら良いでしょうか?


最もシンプルなのは、トレンドもメディア変数も差分系列を算出して、その差分系列同士で回帰分析を行うというものです。これであれば見せかけの回帰は回避できますし、聞き及ぶところはMMMをサービスとして提供するコンサルや調査会社などでもこれを実施しているところもあるようです。


ただ、それをやったところで「そもそもそれは一体何を求めたことになるのか」という解釈の問題が残ります。言い換えればそれぞれの「傾き」同士を回帰していることになるわけですが、それで何がトレンドの要因だということになるのか、そしてどうすれば(例えば)トレンドを増大傾向に導くことができるのか、という説明をつけるのは難しい気がしています*4。また、当たり前ですがその結果が例えば回帰分析可能パートで得られた個々の説明変数のパラメータの大小関係と食い違った場合、どのように整合性をつけるかという問題もあります。いずれにせよ、現場としては無理筋であろうと思われます。

余談:Transformerで時系列回帰&SHAPで解釈


言うまでもなく昨今はLLMを筆頭にTransformerが持て囃されており、どんなデータを扱うにせよ「とにかくTransformerでモデル化すればOK」みたいな風潮が見受けられる有様で、時系列データにもTransformerを適用すれば何でもできると言わんばかりの言説も少なからず見受けられます。そこで思いつくのが、「Transformerで時系列回帰モデルを作ってSHAPで解釈すれば良い」というアイデア。これなら行けるかも?


……と言いたいところですが、以前の記事でも論じたようにTransformerの(multi-head) attentionはボラティリティの大きい時系列データとの相性が悪いようで、必然的に大きい「うねり」としてのトレンドが強い時系列データを扱うのには不向きであろうと思われます*5。ちなみに余談ですが、過去5年ほど「NNで汎用的な時系列基盤モデルを作ろう」という研究が流行っていたものの、最近になって「汎用性を追い求めるのは諦めて個々のドメイン特化モデルに専念すべき」という指摘が出ているようで*6、TransformerそしてNNといえども時系列データを扱うのは一筋縄ではいかない模様です。

追記:時変係数モデル(各種時系列回帰モデルにおいて)



id:hagijyun さんからコメントを頂戴した通り、状態空間モデルやベイズ構造時系列モデルにおいて、別個にトレンドを分離させるのではなく「回帰係数を全期間で固定する(時不変)のではなく変動を許容する(時変)」というやり方があります。これを時変係数モデルと呼びますが、ググってみたところこのブログの8年前の記事が2本も出てきたのでしたorz 我ながら記憶力の怪しさを感じます……。ただ、頂戴したコメントへのお返事にも書いた通りで、以下のような課題があると個人的には認識しております。

  • 時変係数モデルは解釈が難しい:時変係数だと「この時はAが良かった、あの時はBが良かった」のように「タイミングごとのROIのばらつき」という変動要因が増えてしまい、意思決定が難しくなる
  • 時変係数モデルだと汎化性能の検証(時系列交差検証)が難しくなる:時不変に比べて時変の方がパラメータの自由度が高くなり過ぎて、過学習しやすい(さらにはMCMCが収束しにくくなる)傾向を感じる。また複数のパラメータがランダムウォークに従うことになり、未来予測の不確実性がトレンドのみ時変の場合に比べて高くなるという印象がある

ということで、確かに時変係数モデルで得られるものは多くありますが、メリットだけが得られるのではなくデメリットもついてくるということを指摘しておく次第です。


結論とコメント


実は、今回冒頭に掲げたテーマに関してはお馴染み佐和本の6章に結論が書かれているんですね。端的に言えば「トレンドのような強い系列相関を伴うデータに対しては推定量のバイアスを論じることなら出来るが、トレンドそのものは回帰分析の対象外である」ということです。もっとどストレートに書くと「トレンドの要因を回帰分析のように分析する手法は目下のところ存在しない」んですね。

そしてこれまた実は、この記事を書く前にGemini 3.1 Pro Deep Researchに今回のテーマについて調べさせてみていたんですが、物の見事に僕にとって既知のこと以外ほぼ何も返してこない「ゼロ回答」だったので、仕方なく今回は過去記事からのピックアップという手抜きネタにせざるを得なかったのでした。


とは言え、記事冒頭に掲げた通り「トレンドの要因分析を行いたい」というモチベーションは各所で根強いので、それこそ問題の数理統計学的な定式化*7とその分析手法の理論構築から技術的実装まで含めて、基礎研究がなされることを期待したいところです。いや「お前がやれよ」という声が聞こえてきそうですが、数学大の苦手民の僕としてはどうかご勘弁を……というところで、お後がよろしいようで。

*1:人文・社会科学の統計学 (基礎統計学)

*2:https://github.com/google/lightweight_mmm/blob/main/lightweight_mmm/models.py#L412-L414

*3:LinearTrend — Open Source Marketing Analytics Solution

*4:MMMならメディアごとのROIを見たいわけだが、メディア出稿の「加速度」を高めれば……みたいな謎の結論になってしまってactionableではなくなるはず

*5:なお「multi-head attentionの作用はSHAPで表現しにくいはず」という指摘も見かけたのですが、上手い説明が思いつかなかったので一旦保留しておきます

*6:[2602.01736] Position: The Inevitable End of One-Architecture-Fits-All-Domains in Time Series Forecasting

*7:ウィーナー過程とか確率過程論みたいなサムシング