第343話|時系列データを用いた反実仮想(Counterfactual)分析

第343話|時系列データを用いた反実仮想(Counterfactual)分析

ビジネスの世界は、売上データをはじめ時系列データで溢れています。

売上や利益のような時系列データに対し……

  • もし、ある施策を実施していたら、売上や利益がどのように変化しただろうか?
  • もし、ある施策を実施したら、売上や利益がどのように変化するだろうか?

……と思う人もいることでしょう。

ビジネスにおいて、実施した施策の振り返りや、施策を実施したらどうなるだろうかという予測は、非常に重要な意味をもつことでしょう。

今回は、「時系列データを用いた反実仮想(Counterfactual)分析」というお話しをします。

因果推論と反実仮想

反実仮想分析は因果推論の一部で、観察データを用いて特定の介入が結果にどのように影響を与えたかを推定します。

因果推論
因果関係が存在するかどうか」を検討するプロセスで、現実世界で観測されたデータを用いて因果関係を推定する。例えば、ある病人にある薬を投薬した状況と、その病人にその薬を投薬しなかった状況を比較することで、その薬がその病気に効果がある(投薬→治癒といった因果関係がある)かどうかを検討する。ただし、どちらか一方が観測される事実(実際の状況)で、もう一方は観測されない事実(反実仮想)である。

反実仮想分析
もしある事柄が違っていたら、どうなっていたかという仮説的な状況を推定し、その状況においてどのような結果が得られるかということを予測する。先程の病人と薬の例で考えると、ある病人にある薬を投薬した事実(実際の状況)に対し、その病人にその薬を投薬しなかった観測されない事実(反実仮想)を予測することで、投薬による効果の大きさを推定する。

適切なデータと統計的手法、そして因果関係と相関関係を混同しないような注意が必要となります。

さらに、データから導き出された因果関係は、本当の因果関係である保証はないため、そのあたりも注意が必要です。

反実仮想分析

反実仮想分析(counterfactual analysis)は、「もし~だったらどうなっていたか」という「IF 分析」の一種です。

これは、特定の条件下で何が起こったかではなく、代替的な状況や行動が取られた場合に何が起こったかもしれないかを評価することを目指します。

例えば……

  • もし、ある広告をもっと多くの人に配信していたら、売上がどのように変化しただろうか?
  • もし、ある顧客にもっと頻繁に訪問していたら、その顧客がどのくらい購入しただろうか?
  • もし、ある商品の価格を下げたら、売上はどのように変化しただろうか?
  • もし、ある商品の宣伝方法を変えたら、売上はどのように変化しただろうか?

……を分析していきます。

反実仮想分析は、ビジネス戦略の策定、意思決定のプロセスの改善、そして新しいアイデアや戦略の評価において非常に有用です。

しかし、反実仮想分析は、適切なデータ、注意深い設計、そして厳密な統計的手法を必要とします。

それらを適切に適用しないと、誤った結論を導き出す可能性があります。

反実仮想の分析事例

反実仮想分析は、様々なビジネスの状況で有用な情報を提供できます。

以下に、具体的なビジネス事例をいくつか紹介します。

新製品の投入
ある企業が新しい商品を発売した場合、その商品の投入が売上にどのような影響を与えたのかを評価するために反実仮想分析を用いることができます。つまり、「もし新製品が投入されなかったら、売上はどうだっただろうか?」という疑問を考えることができます。

マーケティングキャンペーン
ある広告キャンペーンが終了した後、そのキャンペーンの真の効果を理解するために反実仮想分析を行うことができます。「もしこのキャンペーンが行われなかったら、我々の製品またはサービスに対する需要はどの程度だっただろうか?」という問いを考えることができます。

人事政策の変更
企業が新しい給与体系を導入した場合、その政策の効果を理解するために反実仮想分析を行うことができます。「もし我々が給与体系を変更していなかったら、従業員のパフォーマンスや離職率はどうだっただろうか?」という問いを検討することができます。

サプライチェーンの変更
企業がサプライチェーンを改善した後、その改善がどの程度の影響をもたらしたのかを理解するために反実仮想分析を行うことができます。「もし我々がサプライチェーンを改善していなかったら、生産性やコストはどうだっただろうか?」という問いを考えることができます。

DX効果
企業が新しいテクノロジーを導入、例えば、クラウドコンピューティングやAIなどのデジタル変革を行った場合、その変革が組織の生産性や効率にどの程度影響を与えたかを評価するための反実仮想分析が可能です。「もしデジタル変革を行っていなかったら、組織の生産性や効率はどうだっただろうか?」という疑問を解明することができます。

顧客サービス改善
ある企業が顧客サービスの改善策を実施した後、その取り組みが顧客満足度やロイヤルティにどの程度の影響を与えたかを評価するために反実仮想分析を行います。「もし我々がこの改善策を実施していなかったら、顧客満足度やロイヤルティはどうだっただろうか?」という問いを検討することができます。

価格戦略の変更
企業が製品の価格戦略を変更した場合、その変更が売上や市場シェアにどのような影響を与えたかを評価するための反実仮想分析が可能です。「もし我々が価格戦略を変更していなかったら、売上や市場シェアはどうだっただろうか?」という疑問を考えることができます。

販売チャネルの変更
企業が新しい販売チャネル(例えば、オンライン販売、直接販売、間接販売など)を導入した場合、その影響を評価するために反実仮想分析を行うことができます。「もし我々が販売チャネルを変更していなかったら、売上や市場シェアはどうだっただろうか?」という問いを考えることができます。

これらの反実仮想分析を通じて、企業は過去の決定や行動から学び、その結果を将来の戦略策定に役立てることができます。

特に、反実仮想分析は意思決定の影響を客観的に評価し、同じ問題が再度発生した場合の対策を立てるのに有用です。

因果効果の推定方法

 反事仮想時系列データ

時系列データを用いた反実仮想分析では、開始日がわかっているイベント(例えば広告キャンペーンや新機能の導入など)を想定し、そのイベントの影響で関心を持つ結果(例:売上)がどれだけ変化したのかを推定します。

例えば、ある都市でマーケティングキャンペーンを実施し、そのマーケティングキャンペーンによって売上が増加したかどうかを把握することができます。

では、どのようにして売上の増分を把握するのでしょうか?

イベント(例えば広告キャンペーンや新機能の導入など)が発生しなかった反事仮想時系列データを生成します。

実時系列データ反事仮想時系列データを比較することで、そのイベントの影響で関心を持つ結果(例:売上)がどれだけ変化したのかを推定します。

では具体的に、どのように推定するのでしょうか?

 簡易的な方法

いちばん簡単なのは、対象となる時系列データに対し、SARIMAXなどの伝統的な「説明変数付きの時系列モデル」を構築し、その説明変数を操作することで推定する方法です。

単に、対象となるイベントに関する変数をモデルの中に組み込み、その変数の値を0にすることで、反事仮想時系列データを生成します。

後は、実時系列データ反事仮想時系列データの予測結果の差を計算することで、イベントの因果効果を推定します。

 ベイズ構造時系列モデルを活用する方法

ベイズ構造時系列モデル(Bayesian Structural Time Series Model, BSTS)を用いる方法もあります。

このベイズ構造時系列モデルを構築するとき、次の2種類時系列データを使います。

テスト時系列データ
これはイベントが発生した時系列データです。このデータは介入の影響を受けるため、その影響を評価するための主要な対象となります。例えば、新機能の導入した自社製品のリニューアル後の月次売上。

コントロール時系列データ
これはイベントが発生しなかった時系列データで、テスト時系列データと何らかの関連性があると考えられる他の時系列から選ばれます。例えば、同じ市場で販売されている類似製品の売上。

これらのテスト時系列データコントロール時系列データを用いて、イベントが発生しなかった場合にテスト時系列データがどのような値になるのかを予測します。

そして、この予測(反事仮想時系列データ)実際のテスト時系列データとの差を計算することで、イベントの因果効果を推定します。

おまけ:ベイズ構造時系列モデルとは?

 BSTS超概要

ベイズ構造時系列モデル(Bayesian Structural Time Series Model, BSTS)は、時系列データの分析に用いられる統計的手法の一つです。

このモデルは、時間経過に伴うデータのパターンを捉えるために、トレンドや季節性、他の時系列との関連性(他の時系列データによって説明されるパターン)などのコンポーネントを組み合わせることができます。

ベイズ構造時系列モデル(Bayesian Structural Time Series, BSTS)では、これらの関連性を捉えるために、テスト時系列とコントロール時系列を同時にモデル化します。これにより、テスト時系列がコントロール時系列にどのように依存しているかを学習し、介入がなかった場合のテスト時系列の動き(反事実的な状況)を予測することが可能になります。

BSTSモデルは、これらのコンポーネントを組み合わせて時系列データをモデル化し、未来のデータポイントを予測するために使用されます。

 BSTSのメリット

モデルの柔軟性
トレンド、季節性、回帰成分など、多くの構造的なコンポーネントを組み合わせることができます。これにより、複雑な時系列パターンをより正確にモデル化することが可能になります。

不確実性の量化
ベイズモデルであるBSTSは、パラメータの不確実性を量化します。不確実性の量化とは、不確実性を数値的に表現することです。これは、予測区間などを生成することを可能にし、モデルの不確実性をより明確に理解するのに役立ちます。

自動変数選択
スパイク&スラブ事前分布(Spike and Slab Prior)を使用して自動的に変数選択を行うことができます。これにより、モデルが必要な情報をデータから自動的に抽出することが可能になります。

因果効果の推定
因果効果を推定するために使用することができます。これは、イベントが発生しなかった場合の反実仮想をモデル化することにより行われます。

 BSTSのデメリット

計算負荷
ベイズモデルであるBSTSは、パラメータの事後分布を推定するためにマルコフ連鎖モンテカルロ(MCMC)といった計算的に複雑な手法を使用することが多いです。これは大量のデータや複雑なモデルに対しては計算負荷が高くなる可能性があります。

モデルの設定と解釈の複雑さ
多くの構造的なコンポーネントを組み合わせることができますが、これはモデルの設定と解釈を複雑にする可能性があります。適切なモデルを選択し、結果を正しく解釈するためには専門的な知識が必要となる場合があります。

適切なコントロール時系列データの必要性
因果効果を推定する際には、適切なコントロール時系列データが必要となります。これはイベントは発生しないが、イベントの発生した時系列データと何らかの関連性があると考えられるデータでなければなりません。

過剰適合のリスク
BSTSは複雑なモデルを設定することが可能ですが、これは過剰適合のリスクをもたらす可能性があります。過剰適合はモデルが学習データに対しては良好な性能を示すものの、新しいデータに対してはうまく一般化できない状況を指します。

PythonとRのパッケージ

BSTSによる反実仮想分析を実務でするとき、PythonRを利用する方も多いです。

Pythonパッケージでは以下のようなものがあります。

PyCausalImpact(RパッケージであるCausalImpactをPythonで実装したもの)

Rパッケージでは以下のようなものがあります。

CausalImpact(Googleが開発したこのBTSTを利用した因果推論パッケージ)

bsts(CausalImpactのもとになっているBSTSパッケージ)

他には、StanやTensorFlow Probabilityなどでもモデル構築できるでしょう。

今回のまとめ

今回は、「時系列データを用いた反実仮想(Counterfactual)分析」というお話しをしました。

ビジネスの世界で頻繁に使用される時系列データについて、特に「反実仮想(Counterfactual)分析」の観点から解説しました。

反実仮想分析は、特定の施策や介入が結果にどのような影響を与えたかを推定するための手法で、因果推論の一部とされています。

例えば、新製品の投入、マーケティングキャンペーン、人事政策の変更、サプライチェーンの変更、デジタル変革の効果、顧客サービスの改善、価格戦略の変更、販売チャネルの変更など、反実仮想分析はビジネスの現場活用できます。

反実仮想分析を行うための手法として、例えばベイズ構造時系列モデル(Bayesian Structural Time Series Model, BSTS)を簡単に紹介しました。

BSTSは、時間経過に伴うデータのパターンを捉えるために、トレンドや季節性、他の時系列との関連性などのコンポーネントを組み合わせることができるモデルです。

このBSTSを用いることで、特定のイベントが発生しなかった場合にテスト時系列データがどのような値になるのかを予測し、その予測と実際のテスト時系列データとの差を計算することで、イベントの因果効果を推定することが可能になります。

最後に、BSTSによる反実仮想分析を実務で行う際に利用可能なPythonやRのパッケージを紹介しました。

興味のある方はチャレンジしてみてください。