マーケティング・キャンペーンのROIをGoogleが開発したCausal Impactをつかって5分で計測してみる

![image.png](https://qiita-image-store.s3.amazonaws.com/0/48026/d1ce51d9-0ed2-0b90-3aac-0551ea06d705.png)


もしあなたが、マーケティング担当者でマーケティングキャンペーンを実施しているとします。そして、キャンペーンが実際にあなたのウェブサイトのトラフィック、サインアップ、課金率などを向上させるために、どのように役立ったのかを知りたいとします。

あるいは、あなたが製品担当者であるとしましょう。そして、特定の機能や製品のリリースが実際にユーザーアクティビティ、製品に費やした平均時間などの改善にどのように影響しているかを知りたいとします。

これは、イベント（例：マーケティングキャンペーン）前とイベント後の測定値を比較したり、A/Bテストのような2つのグループの測定値を比較するだけの簡単なことのように思うかもしれません。しかし、結果に影響する多くの他の要因が存在するため、現実には、そのような単一の要因の影響力を測定することは困難です。

やはり、天下の広告会社であるGoogleも同じ問題を抱えていたようで、ちょっと前になりますが、Kay Brodersenと彼の仲間がそうした要因の分析を簡単にするためのアルゴリズムをCausal Impactという名の下に開発し、オープンソースとして公開しています。

詳しくは[こちら](https://github.com/google/CausalImpact)のページにありますが、簡単に言うと、ターゲットになるマーケットもしくはセグメントがあったとすると、それと相関関係にある他の複数のマーケットを探してきて、それを元に評価の対象となっているイベント（マーケティング・キャンペーン等）がなかった場合のターゲットのマーケットの期待値を時間軸に沿って予測し、その期待値と実際の値を比べることによって、そのイベントの真のインパクトを効果的に分析できるようにするというアルゴリズムです。

今回は、そのCausal Impactというアルゴリズムを用いて、マーケティングキャンペーンがどれだけ効果があったかを分析してみます。

# ツール
今回もプログラミングなしでデータサイエンスができる[Exploratory](https://exploratory.io/?utm_campaign=blog_causal_impact&utm_medium=blog&utm_source=qiita)を使います。

# データのインポート

今回、あるキャンペーンを**日本でだけ**行った場合の、あるウェブサイトにおけるユニークページビューの上昇を計測します。そのために、Google Analyticsからデータを取得してきます。

まずは、"データフレーム"という表示の右にある + アイコンから、"クラウドアプリケーションデータをインポート"を選択します。
<img width="565" alt="Screen Shot 2017-06-09 at 7.16.13 AM.png" src="https://qiita-image-store.s3.amazonaws.com/0/48026/23a7a396-0be1-5389-dc92-99ad08b92ef1.png">

そこで、Google Analyticsを選択すると、以下のようなダイアログが開きます。

<img width="1188" alt="Screen Shot 2017-06-09 at 7.19.42 AM.png" src="https://qiita-image-store.s3.amazonaws.com/0/48026/f91021f6-6b4b-678a-1245-3473b4b62bf4.png">

そこで、Google Analyticsアカウントからデータをとってこれるように、"コネクション"の右の"作成"ボタンからコネクションを作成します。これは、自分のGoogleアカウントを選択するだけで簡単にできます。

そして、データを取得する対象のウェブサイトを、View IDから選びます。

次に、必要な分の期間のデータが取れるように、"Last N Days"で、何日前のデータを取ってきたいかを指定します。

そして、今回、日本でのキャンペーンにおける上昇度合いを調べたいので、何日にどの国から、どれだけのユニークページビューがあったかというデータを取得します。そのために、Dimensionsで"Date"と"Country"、Metricsで"Unique Pageviews"を選択し、データの取得を行います。すると、"date"、"country"、"uniquePageviews"という列のデータがプレビューで現れるので、最後に右下の"インポート"ボタンをクリックします。

すると、以下のようなサマリービューが現れます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/48026/a5c133da-b688-da6c-0104-0e6a4321a1e4.png)

このデータは、何日に、どの国から、どれだけのユニークページビューがあったかというデータになります。

これを、日本からのトラフィックに限定するように、データをフィルタしてそのトレンドを可視化すると以下のようになります。
<img width="1166" alt="Screen Shot 2017-06-06 at 8.25.43 PM.png" src="https://qiita-image-store.s3.amazonaws.com/0/48026/6887c023-c6a0-ca9a-9d46-9a769014a3b4.png">

オレンジの点が日本でのマーケティング・キャンペーンを開始した日（2017年5月10日）になります。実際、キャンペーンの直後に、大きく増えているのが確認できますが、その増えた分のどれだけがこのキャンペーンによってもたらされたのか、つまりは実際のインパクトがあったのかは、このチャートだけではわかりかねます。そこで、このCausal Impactのアルゴリズムを使って分析してみましょう。

Causal Impactは、簡単にメニューから呼び出すことが出来ます。uniquePageviewsのカラムメニューから"分析"->"マーケット・インパクト分析を実行"を選択します。

<img width="800" alt="Screen Shot 2017-06-06 at 8.35.09 PM.png" src="https://qiita-image-store.s3.amazonaws.com/0/48026/c1822efd-b536-2575-bf88-9a62b8cb8059.png">

そこで現れるダイアログで、パラメーターを設定していきます。

<img width="1007" alt="Screen Shot 2017-06-06 at 9.05.39 PM.png" src="https://qiita-image-store.s3.amazonaws.com/0/48026/2a562b14-53df-eb6b-4972-9ad09045b1e3.png">

* 今回、日々のユニークページビュー数が分析対象なので、日付/時間の列は"date"で、集計レベルは"Day"にします。
* 値は、ユニークページビュー数を分析したいので、"uniquePageviews"を選択します。
* そして、"country"列の中にある、"Japan"だけで起こった、キャンペーンという出来事のインパクトを計測したいので、マーケット列は"country"を指定し、ターゲット・マーケットを"Japan"に指定します。
* そのキャンペーンは、2017-05-10に実施したので、イベント時刻は2017-05-10を指定します。
* また、ダイアログの右側にある、Number of Predictor Marketsは、他の幾つのマーケットを用いて、比較対象とするかです。5を指定するということは、日本と似たようなマーケットの動きをしている国5つをもとに、キャンペーンが無かった時の値を予測するということになります。
* 最後に、日によっては、ある国からアクセスが無い場合があり、その場合、データが欠損しているので、そこをどう埋めるのかも決める必要があります。今回のケースは、欠損しているということは値が0だったということになるので、NA Fill Typeは"Specific Value"で、Value to Fill NAは0とします。

以上の設定で実行すると、以下のように、新しい列が作成されていることがわかります。

<img width="1434" alt="Screen Shot 2017-06-07 at 6.20.54 AM.png" src="https://qiita-image-store.s3.amazonaws.com/0/48026/bf0dd54f-09af-34cf-7227-93e4bab6c32c.png">

これらの列の意味を、可視化をしながら説明をしていこうと思います。まずは、Vizタブに移り、タイプを"ライン"、X軸を"time"に設定してオプションを"日に丸める"にします。Y軸は、"actual"を設定します。すると、以下のようなチャートが現れます。

<img width="1203" alt="Screen Shot 2017-06-07 at 11.38.03 AM.png" src="https://qiita-image-store.s3.amazonaws.com/0/48026/e27c1358-aa58-11eb-4d72-2bfc5807f25b.png">

これは、ターゲット・マーケットであるJapanにおける、実際のuniquePageviewsの推移ということになります。

次に、actual_at_event_timeという列をY軸に追加してみます。その際に、そのマーカー設定を"Circle"にするとこのように、イベントのあったタイミングでのactualの値がハイライトされます。

<img width="1206" alt="Screen Shot 2017-06-07 at 12.06.53 PM.png" src="https://qiita-image-store.s3.amazonaws.com/0/48026/a25328d5-8fcd-1a7d-6395-4ff6ae33339e.png">

そして、こんどは、"expect"列を追加します。その際に、同時に"Range"をチェックすると、"expect_low"と"expect_high"も可視化されます。

<img width="1200" alt="Screen Shot 2017-06-07 at 12.14.39 PM.png" src="https://qiita-image-store.s3.amazonaws.com/0/48026/e8591511-50e2-fd2c-c642-d65651d533a6.png">

この緑の線が、"expect"列に入っている値で、イベントが無かったであろう場合に予測される値です。この、緑の範囲の上限、下限がそれぞれ、"expect_high"と"event_low"で、それ以上、それ以下になることは、ほとんどの場合無いだろうという予測値が入っています。こうしてみると、キャンペーンがあった後の大きなピークは、キャンペーンが無かった場合に想定される値より、かなり大きいということがわかります。

さらに、"impact"列を追加すると、以下のように、赤い線が現れます。

<img width="1162" alt="Screen Shot 2017-06-08 at 9.12.48 AM.png" src="https://qiita-image-store.s3.amazonaws.com/0/48026/97b58e49-5930-5406-09d4-fb8849a48672.png">

これは、イベントのインパクトの大きさ、つまり、actualとexpectedの値の差ということになります。

そして、最後にcumulative_impactを選択します。これは、impactの累積値、すなわち、そのキャンペーンの累積としてのインパクトの大きさになります。これによって、そのキャンペーンがユニークページビューの上昇に、これまででどれだけ貢献したのかがわかります。

<img width="1176" alt="Screen Shot 2017-06-08 at 9.24.02 AM.png" src="https://qiita-image-store.s3.amazonaws.com/0/48026/87026773-4094-6afa-c8cd-5938b6aae096.png">

こうして見ることによって、今回のマーケティング・キャンペーンによって、おおよそ3500~4300のユニークページビューの増加を得たということが、統計的に確認できました。

# まとめ

最初にも述べたように、こうした、マーケティング・キャンペーンであったり、製品のリリース、何かビジネス上の対策や処方などのイベントを行った後の実際のインパクトを理解するというのは大変難しいだけに、業種によっても様々なやり方があると思われます。しかし、統計学者でもデータサイエンティストでもない、しかし自分の担当する業務のプロであるあなたが、こうしてCausal Impactのようなアルゴリズムを使うことですばやくこのような洞察を得ることができることで、実際のビジネスにインパクトのある対策につながる分析になるのでなないでしょうか。そして、これこそが昨今のオープンソースのAI並びに機械学習のアルゴリズムの力なのです。

# データ分析をさらに学んでみたいという方へ

今月６月に、シリコンバレーのExploratory社によって行われる[データサイエンス・ブートキャンプ](https://exploratory.io/training-jp?utm_campaign=blog_causal_impact&utm_medium=blog&utm_source=qiita)が東京で行われます。本格的に上記のようなデータサイエンスの手法をプログラミングなしで学んでみたい方、そういった手法を日々のビジネスに活かしてみたい方はぜひこの機会に、参加を検討してみてはいかがでしょうか。[こちら](https://exploratory.io/training-jp?utm_campaign=blog_causal_impact&utm_medium=blog&utm_source=qiita)に詳しい情報がありますのでぜひご覧ください。