Rこんにちは、開発本部データサイエンティストの山口です。製品やサービスのユーザー向けにコンテンツを制作している方は、一度は以下のように考えたことがあるのではないでしょうか。「このコンテンツは本当に効果があったのだろうか?」と。ここでは「コンテンツ」を「特定の認識・行動を、ユーザーに促す情報のまとまり(テキスト、音声、動画など)」を指すものとします。コンテンツの「効果」は「コンテンツの狙い通りにユーザーの行動が変化したこと」を意味するものとします。多くの場合、コンテンツの視聴回数だけではユーザーの行動の変化までを知ることはできません。ユーザーの行動に変化があることがわかったとしても、それがコンテンツの効果なのか、別の要因によるものなのか、判別が難しい場合が多いでしょう。この記事では、サイボウズが制作した製品の機能解説動画を例として、CausalImpactというパッケージを用いた効果分析の方法を紹介します。仕事上コンテンツ制作に関わりがあり、分析に興味のある方向けに、効果分析のおおまかな流れをお伝えできればと思います。製品の機能解説動画サイボウズのテクニカルコミュニケーションチームでは、ユーザーの方に製品をより良く活用してもらうために、製品の機能解説動画を制作しています。動画制作の詳細については、以下の2つの記事にまとめています。ご興味あれば、ぜひ御覧ください。〜改善編〜さて、上記の取り組みで動画を制作し、視聴回数の改善まで行うことができました。実際に本来の目的である「ユーザーの機能活用促進」は達成できているのでしょうか?それを確かめるために、今回はCausalImpactというRのパッケージを利用して分析を行いました。(Rは統計解析向けのプログラミング言語です。詳細は記事末尾の参考文献に譲ります)以降、分析方法の選択から実際にCausalImpactを使った分析までの流れを説明していきます。適切な分析方法を選択するCausalImpactを利用する分析結果を次のアクションにつなげるなお、本分析はサイボウズの個人情報保護の規約に則り、個人を特定できないかたちで分析を行っています。適切な分析方法を選択するこの記事ではCausalImpactを利用した分析について紹介すると述べました。状況に応じて最適な分析方法は変わります。どのようにして最適な分析方法を選ぶかについて、最も望ましい方法から順番に説明します。可能なら実験を行う効果分析で最も有効な方法は、「実験」を行うことです。「実験」とは具体的にどういうものを指すのでしょうか。ここでは動画を例として、効果分析の基礎的な内容をかいつまんで説明します。理想的な効果分析の方法は、以下のようなものです。同じ集団に対して完全に同じタイミングで介入を行った場合と介入を行わなかった場合の両方のデータを取って比較するここでは、「介入」を「対象者に影響を与える何らかのアクション」だと定義します。動画の場合、「対象者に動画を配信すること」が介入に相当します。同じ相手に同じ条件で、介入を行った結果と介入を行わなかった結果の両方があれば、2つの結果の「差」が介入の効果であると言えそうです。理想的な効果分析の方法を利用することはできるのでしょうか。残念ながら、この方法は絶対に実現が不可能です。同じ相手に完全に同じタイミングで「動画を配信する」ことと「動画を配信しないこと」の両方を実行することが不可能だからです。この理想的な効果分析の方法の代替として、「実験」を行うという選択肢があります。ここでは「実験」を「分析ができるように予め計画した介入を行い、必要なデータを収集すること」だと定義します。動画の場合、「予め決めたグループに動画を配信(介入)し、介入したグループと介入しなかったグループの両方のデータを収集すること」が実験に当たります。実験であれば、一定の条件を満たせば実現することが可能です。適切に条件を満たした上での実験は、理想的な効果分析とかなり近い結果を出すことができます。この適切な条件とは具体的にどういうものを指すのでしょうか。詳細な説明は省きますが、理想的な実験を行うための条件の1つに「分析者が対象者をランダムに選んで介入できる」というものがあります。動画の場合、「分析者が動画を配信するグループと配信しないグループをランダムに決めて、確実にそのとおりに動画を配信できる」というのが実験の理想的な条件になります。WEBページ改善などで用いられる、いわゆる「A/Bテスト」は実験の方法のうちの1つです。このような実験ができる場合、条件を揃えて実験をすることが最も有力な効果分析の選択肢になります。ユーザーに提供するコンテンツを、こちら側の都合で見せたり見せなかったりするのは気軽にできることではありません。ユーザーに不平等感を与えてしまったり、そもそも技術的に出し分けが難しい場合も考えられます。いった実験を行うのが難しいときは、比較対象となるグループを利用して、「実験をしたかのように」分析を行う方法を検討します。比較対象が用意できる場合は、比較対象を利用した分析を行う「実験をしたかのように」分析を行うとはどういうことでしょうか。それは「対象者をランダムに選んだかのように」分析を行うということです。「ランダム」にこだわるかというと、もし対象者の選択がランダムではなかった場合、分析が誤った結論を導く可能性があるからです。動画の場合で、「動画の配信(介入)を受けるかどうかを本人の希望によって決める」という状況を考えます。動画の視聴を希望するユーザーはもともと製品活用への意欲が高く、動画の視聴を希望しないユーザーは相対的に製品活用への意欲が低いかもしれません。この状況で動画を配信(介入)しても、製品活用の度合いが上がったのが介入の効果なのか、もともとのモチベーションによる違いなのかを判別することができません。介入の対象者をランダムに選択できれば、もともとの属性(ここでは製品活用への意欲)に左右されない分析結果を得ることができます。これが実験の利点です。実験ができない場合には効果分析ができないのかというと、そうではありません。介入を受けるかどうかに影響する「もともとの属性」が予めわかっていれば、それを調整することで正しい分析結果を得ることができます。この記事では詳細を省きますが、これには回帰分析や傾向スコア分析などの手法があります。この方法にも限界があります。分析対象者が全員介入を受けていた場合は、介入の効果を比較する対象がいないので分析ができません。動画の場合、すべてのユーザーに同時に動画を配信した場合には、比較対象となるグループがいないので、この方法では効果分析ができません。比較対象を用意できない状況で効果分析をするための選択肢の1つが、CausalImpactです。比較対象が用意できない場合は、CausalImpactの利用を検討するCausalImpactはGoogleが公開しているRのパッケージです。マーケティングのキャンペーンの効果を推定するためにつくられました。CausalImpactは仮想的に比較対象をつくりだすことで、介入の効果を推定します。動画の場合、動画配信を行う前のデータを用いて「もしも動画配信をしなかったら」という仮想の世界をつくり、それと現実世界とを比べます。動画配信が全く効果のないものであれば(悲しいですが)、動画配信をしていない仮想の世界と動画配信をした現実世界はだいたい同じになるはずです。動画配信をしなかった仮想の世界と現実世界が全然違うものであれば、動画配信に効果があったと考えることができます。同じ原理はマーケティング以外の分野でも応用できると紹介されています。機能解説動画はユーザーに一斉に配信する形式で、比較対象のデータを用意できなかったため、CausalImpactを利用しました。CausalImpactを利用するCausalImpactを使った具体的な分析方法について説明します。データの具体的な値などは伏せています。データを準備するはじめに分析に必要なデータを準備します。今回は製品の各機能がどの程度利用されているかを記録したログデータを使用します。以下にログデータのサンプルを一行分だけ示します。データは架空のものです。200ここでの「ドメイン」はお客さまごとの製品環境を指します。分析用のコードを実行する分析対象となるログデータに対してCausalImpactを実行します。今回は「製品へのログインユーザー数」を共変量として、「動画で解説した機能の利用回数」が有意に増加しているかを推定します。介入の期間はユーザーに動画の案内を出したタイミング(2021/11/14〜2021/11/15)としました。以下にCausalImpactのプロット用のRのサンプルコードを示します。y軸の値を非表示plot(impact.plot)コードの実行結果を以下に示します。詳しいグラフの見方は次の項で説明します。y軸の値は伏せています。CausalImpactで出力したグラフ今回分析対象の「Garoon」は主にビジネスで利用される製品のため、土日に利用回数が落ちる傾向が表れています。分析結果を解釈する先ほどプロットしたグラフの3つの要素について説明します。黒の実線が実際に観測された値です黒の点線が「介入が行われなかった世界」ならこうなっていただろうという予測の値です青い帯はその予測の黒の点線が「偶然」ぶれたとしても、よっぽどのことがない限りこの範囲に収まるだろう、という予測の幅になります(いわゆる95%信頼区間です)今回のグラフでは、グラフの中間あたり(11/15時点)で黒の実線(実際の値)が青い帯(予測された値の幅)の範囲を越えています。これは介入によって11/15に統計的に有意な変化があったことを意味しています。動画の配信によって本来の目的である「ユーザーの機能活用促進」が(少なくとも短期的には)達成されていると言えそうです。分析結果を次のアクションにつなげるここまでの手順で、CausalImpactを利用して分析結果を得ることができました。この結果をもとに、今後どのようなアクションが必要になるかを考えます。ここでは動画配信の介入を例として、介入や分析を改善するアクションについて考えてみます。効果をより長い期間持続させる今回の分析で、動画配信は機能活用の促進に効果があることがわかりました。引き続き動画を制作することは有益だと考えられます。一方で、今回確認された範囲では、効果の持続期間はごく短期的なものでした。本来は長期的に機能を利用し続けてもらえるほうが望ましいです。そのためには、効果がより長い期間持続する介入と、それを推定できる分析が必要になります。機能利用の習慣化を促すような動画を配信し、その効果を数週間の累積で評価するとよいかもしれません。効果を個別ドメインごとに推定する今回の分析では全ドメインの機能利用回数の合計値を使って効果分析を行いました。合計値で計算するとユーザー規模が大きいドメインの影響が大きくなり、相対的に小規模なドメインの変化を見落とす可能性があります。そのような見落としを避けるためには、個別のドメインごとに効果を評価する必要があります。各ドメインに対して個別にCausalImpactを実行し、有意差が出たドメインの割合を検定するとよいかもしれません。効果を推定するための共変量を増やす今回は共変量として「ログインユーザー数」という1つの変数を使いました。一般には適切な共変量が複数あるほうが推定の精度が高くなります。共変量として追加できる変数にはいくつか条件があるため、それらを満たす変数を選定・追加することが必要になります。用途が近しい他製品のログデータを共変量として追加するとよいかもしれません。「それで、そのコンテンツに効果はあったの?」という問いに答えるこの記事ではCausalImpactを使った動画の効果分析について紹介しました。今回の事例については「動画配信にはユーザーの機能活用を促進する効果があった」と答えることができそうです。その効果の大きさや持続性についても一定の客観性をもって評価できました。本来は実験などができるように、コンテンツの提供面などの設計を考えることが重要です。いった選択肢がない中でコンテンツの効果分析をする必要に迫られる場合もあります。そんなときに、今回紹介したCausalImpactが役に立つ可能性は十分にあると考えます。考え方について効果分析について興味のある方は、入門書として個人的に以下の2冊がおすすめです。(amazon)豊富な事例を用いて、効果分析(因果推論)の考え方について丁寧に説明しています。最初に読む本としておすすめです。(amazon)因果推論の枠組みを説明しつつ、よりビジネスの実践的な内容に踏み込んでいる印象です。Rのコードも紹介されています。CausalImpactに関する記述もあります(4章)。CausalImpactについてCausalImpactの公式のドキュメント等のリンクを記載します。それぞれ英語ですが、必要な部分だけピックアップして読んでも(視聴しても)参考になると思います。(Youtube)CausalImpactについて開発者自らが説明しているYoutubeの動画です。個人的には概要をつかむ上で一番理解しやすかったです。google.github.ioCausalImpactの使い方について説明しているドキュメントです。具体的なコードの書き方に迷ったらここを参照すると良いかと思います。modelsCausalImpactの元になった論文です。理論的な背景などが知りたい場合に参考になると思います。理論的背景についてCausalImpactの使い方や理論的背景について、以下のサイトも参考にさせていただきました。-渋谷駅前で働くデータサイエンティストのブログ日本語で書かれており、CausalImpactの概要を理解するのに適した記事だと思います。diaryこちらも日本語記事です。理論的背景により踏み込んで書かれている印象です。Solidさんの動画を参考にさせていただきました。「ベイズってなに?」という方向けのわかりやすい動画だと思います。階層ベイズの気持ちを理解するのに参考にさせていただきました。Rについて筆者は今回のCausalImpactを使った分析を機にRを学習したので、その際に参考にした書籍も紹介します。(amazon)Rのプログラミング的側面の学習にとても良い書籍だと感じました。(amazon)RStudioの利用が初めてだったので、作業の際に頻繁に参照していました。(amazon)Rでグラフを作る時に細かい設定方法などをパッと引けるので、レポート作成時に重宝しました。(amazon)Rmarkdownでレポートを作成する際に有用な情報が多く、レポート作成の手間がだいぶ減らすことができました。本番ログを活用した品質向上こんにちは、QA(品質保証)エンジニアの矢引です。モバイル端末の利用行動を調査する(日記調査編)こんにちは。モバイルチームの今野です。〜制作編〜このブログは2部構成です。2021の2日目の記事です。cli-kintoneのテス...こんにちは。プロダクトセキ...こんにちは!Cy-PSIRTの田口です。プロダクトセキュリテ...2024-11-05kintoneライターチームのチームビルディング開...こんにちは。テクニカルライターチームのueです。引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。