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

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

ビジネスの実務で「因果」を推測するということ

統計的因果推論と言えばすっかり統計学分野ではお馴染みのアプローチになった感があり、また機械学習分野でも扱うテーマが複雑化するにつれて注目が高まり続けているトピックスという印象があります。


このブログでも2016年ぐらいから因果推論に関する記事をちらほら書くようになり、僕個人にとってもまた因果推論と言えば馴染み深い概念になってきたという感があります。


一方で、ビジネス実務の現場においても「因果推論」という言葉は使われないにせよ、かなりはっきりと「因果」についての知見もしくは説明可能性が求められるようになってきた、という印象が個人的にはあります。それは良くも悪くもDXブームでありとあらゆるビジネスに関わる事由がデータ化され、「相関」だけなら簡単に見つけられるようになったことで、相関だけからは見えてこない「因果」をはっきりさせたいという願望が浮かび上がってきた、ということなのかもしれません。


そこで、今回の記事では近年のビジネスシーンにおいてどのような課題に対して「因果」を推測することが求められ、またどうしたらその「因果」を明らかに出来るか、というパターンを僕の見聞の範囲における知見に基づいて例示してみようと思います。

実験的マーケティング介入施策によって、KPIが増大するかどうか知りたい


これは一般的にはRCT(ランダムか比較対照試験)が求められるシチュエーションですが、ビジネス実務でRCTというのは環境面で結構難しいものがあると思われます。特にwebデータだとユーザーレベルデータを1st partyとして取れるケース以外では、3rd party cookie廃止の趨勢が強まり続ける昨今ではほぼ不可能なのではないでしょうか。


加えて、マーケティングデータに良くある問題として系列相関、特に季節調整(seasonality)の問題があります。例えば、何かのキャンペーンに販促効果があったかどうかを知りたい時に、漫然と「キャンペーンを打つ前の11月と打った後の12月とで比べる」というpre/postタイプのA/Bテストをやっても意味がないわけです。理由は簡単で、12月は歳末商戦の時期で何もしなくても売り上げが伸びることが明白だからです。


そういったseasonalityによるバイアスを調整しながらA/Bテストを行う方法として、差分の差分法(DID: Difference in Differences)があります。このやり方であれば、seasonalityがある場合でもキャンペーンによる介入に効果があったかどうかを検証することが出来ます。手前味噌ですが、このDID実験データの分析にCausalImpactを用いるとより情報量の多い効果検証になります。


実際にはきちんとした実験計画が組まれたケースではありませんが、あるオープンデータに対して仮に「地域ごとに異なる介入が行われた」地域テストの結果であると想定して、その介入効果をDIDの枠組みとして捉えてCausalImpactで分析した結果を以前まとめたことがあります。実はこれと全く同じプロセスの効果検証方式を僕の現在のチームでは常套的に実施しており、こちらの記事をお読みになればその雰囲気をご理解いただけるかなと思います。


個別にマーケティング施策を行ったら、行わなかった時よりも売上高が伸びるのかを観察データから知りたい


例えば、外資SaaS辺り*1で「各法人顧客向けにライセンス更新&拡大の販促営業をしているが、プリセールスによる個社販促イベントを行うと契約額のYoY(昨対比)が伸びるかどうかが知りたい」という課題があるとしましょう。


得られたデータがこんな感じだった場合、すんなり「プリセールスの個社販促イベントがあればYoYが伸びます!」と無邪気に上層部に報告して良いかというと、そうはいかない可能性が高いです。何故なら「個社販促をやったからYoYが伸びた」ケースと「YoYが伸びそうな顧客だから個社販促をやった」ケースとの区別がつけられないからです。


このような場合、理想的には傾向スコアを使って「個社販促イベントのありorなし」の割り付けによるバイアスを補正した上で、改めて二者のYoYを比較するというのがベストだと思われます。ただ、営業CRMデータでそこまでバッチリ傾向スコアを算出できるほどの共変量が手に入るケースは稀だと思われるので、現実的には担当営業にアンケートを取って「事前にYoYが伸びそうだと判断されたorされなかった」などのインデックスを得た上で、それらでグループ分けして層別解析するのが妥当なラインかなと。


あるKPI候補の指標が、実際にKGIに対して因果的影響があるのか知りたい


ビジネス実務で割とあるあるなのが「そもそもKPIを何にしたら良いか」という課題なんですが、これには「そのKPIを追えばKGIが上がるか下がるかが分かる」必要があるという制約がかかるので、意外と答えを出すのが難しい代物だったりします。


例えば、何かしらのapp/webで契約可能なちょっと大掛かりなサービスがあったとしましょう。この新規契約数をKGIとした場合、これに先行するKPIの候補として「SNSでの自社サービスの言及数」なるものが挙がった場合、採用するか否かをどう判断すれば良いでしょうか? イメージとしては以下のような感じです。

勿論、周辺データに共変量が沢山あれば、適当にDAGを書いてその因果関係に関する仮説を立てて、これを検証することでKPIとしての妥当性を示せるかもしれません。けれども、この手の「とりあえずマーケットの中にふんわりと存在する」系の指標に対して、そのようなきちんとした因果推論を行うのは結構難しい印象があります。


そこで、一つの考え方として「時系列的な因果性」をふわっとした代用品として用いるという方法もあり得ると思っています。勘の良い方はもしかしたらピンと来たかもしれませんが、例のアレです。


そう、VARモデルです。これでKGIとKPI候補との関係性をモデリングし、その上で「時系列的な因果性」の有無が分かれば、厳密な因果までは分かりませんが「KGIが増えればKPIも増える」ぐらいのことは言えるはずです。なお、ここで言う「時系列的な因果性」とはGranger因果の喩えで言うところの「稲光が見えたら雷鳴が轟く」ぐらいのものです。即ち実際の因果は「落雷→雷鳴」だが、時系列的には「(落雷→)稲光→雷鳴」が成立するので代用品になり得る、という。


ちなみに上掲のKGI / KPIのデータにVARモデルを当てはめ、インパルス応答を推定した結果が上図です。2-8日のタイムラグを置いて、KPIが変動すればKGIも同じように変動する、即ち「KPI→KGIなる時系列的な因果性がある」ということが推測できる、というわけです。このように、厳密な意味での統計的因果推論ではなくても、シチュエーション次第では役立つもっと平易な分析手法がある、ということはもっと広く知られても良いように思います。


コメントなど


以前どこかで「『これって難しいですよね……?』と恐る恐る持ってこられる分析課題ほど簡単で、逆に『これって簡単ですよね!』と無邪気に持ち込まれる分析課題ほど難しい」というようなことを吹聴した記憶がありますが、この手の「ビジネス実務のデータから『因果』を推測する」というのは典型的な後者の課題であるように常々思っています。


なればこそ、分析者としてはどんな課題にも対応できるように幅広い分析手法を身につけておくことが望ましいと考えていますが、NNであったり生成AIであったりの進歩と普及が急速過ぎるが故に、そういう考え方はもはや過去の遺物とみなされて見向きもされなくなったような気がしています。


けれども、少なくとも僕個人が日々直面する課題の中にそういう「最近の定番アプローチでは必ずしも満足に解決できない」代物が混じり続けるうちは口喧しくこういう問題提起をし続けていかなければならないと思いますし、特に「因果」のようなともすれば分析の「外側」にある枠組みからアプローチしていかなければならないテーマについては尚更と考える次第です。

*1:良い例が思いつかなかっただけで具体的な実例を書いているわけではありません