新しい機能を出したあと、機能を使った人ほど継続率が高いという集計を見たことはないでしょうか。その数字を見て、この機能が継続を押し上げたと結論づけたくなる気持ちはよくわかります。
けれども、もともと熱心な人ほど新機能を試し、熱心な人ほど継続する、という可能性は消えていません。機能を使うかどうかはユーザーが自分で決めるので、使った人と使わなかった人は最初から別の集団なのです。
この記事では、こうした自分で選ぶ行動の効果を測るための操作変数法を解説します。考え方の土台、成り立つための条件、計算の仕組み、そしてプロダクトの現場での使いどころと落とし穴まで、順を追って見ていきます。
操作変数法とは何か
操作変数法(Instrumental Variables、略してIV)は、原因を直接ランダムに割り当てられないときに、その原因を外から動かすレバーを使って効果を推定する手法です。このレバーにあたる変数を操作変数と呼びます。
難しく聞こえますが、発想はシンプルです。機能を使わせることはできなくても、使ってみませんかと促すことならランダムにできる、という場面を思い浮かべてください。
動かせないものを、動かせるもので間接的に動かす
促しのバナーを、ランダムに選んだ半分のユーザーにだけ表示したとします。バナーを見た側では機能の利用率が上がり、見なかった側では上がりません。
このとき、両グループの継続率の差は、バナーが利用率を押し上げた分を通じてしか生まれないはずです。そこで、継続率の差を利用率の差で割れば、機能を使ったことそのものの効果が取り出せる、というのが操作変数法の骨格です。
経済学で育った手法
操作変数法は、もともと計量経済学の分野で発展してきました。人を教育や兵役にランダムに割り当てる実験はできないため、自然に生まれた偶然をレバーとして使う工夫が積み重ねられてきたのです。
有名な例には、生まれた四半期によって義務教育を受ける年数がわずかに変わる仕組みを使い、教育が収入に与える効果を測った研究があります。2021年のノーベル経済学賞は、こうした自然実験から因果関係を読み解く方法論への貢献が評価され、ジョシュア・アングリストとグイド・インベンスらに贈られました。
なぜ単純比較では機能の効果を測れないのか
操作変数法の価値は、単純な比較がどう間違えるかを理解すると見えてきます。プロダクトの分析で最もよく起きるのが、自己選択による偏りです。
使った人は最初から違う
新機能を自分から試す人は、そもそもプロダクトへの関心が高く、利用頻度も多い傾向があります。こうした人は、新機能がなかったとしても継続しやすいはずです。
この状態で利用者と非利用者の継続率を比べると、機能の効果ともともとの熱心さの差が混ざった数字になります。差が大きいほど機能の手柄に見えますが、実際には大半が熱心さの差かもしれません。
機能の利用状況そのものを測る方法は、機能の定着率(アダプション)|作った機能が使われない状態を測って直すで詳しく解説しています。定着率を測ることと、その機能が成果を生んだと言えることは、別の問題だと考えてください。
傾向スコアでも残る問題
比べる相手を揃える方法として、利用者と似た非利用者を選び出す傾向スコアがあります。考え方は傾向スコア(Propensity Score)とは?|機能を使った人ほど継続する理由を、比べる相手を揃えて確かめるで紹介しました。
ただし傾向スコアが揃えられるのは、データとして観測できている特徴だけです。やる気や社内での期待度のように記録に残らない差は、どれだけ丁寧に揃えても残ってしまいます。
操作変数法は、この観測できない差にも対処できる点が強みです。レバーがランダムに割り当てられていれば、熱心さのような見えない特徴も両グループで平均的に揃うからです。
操作変数が満たすべき3つの条件
どんな変数でもレバーとして使えるわけではありません。操作変数法が正しい答えを返すには、次の3つの条件を満たす必要があります。
| 条件 | 意味 | 確かめ方 |
|---|---|---|
| 関連性 | レバーが原因(機能の利用)を実際に動かす | 利用率の差をデータで確認できる |
| 独立性 | レバーが結果に関わる特徴と無関係に決まる | ランダムに割り当てれば満たしやすい |
| 除外制約 | レバーは原因を通じてしか結果に影響しない | データでは確かめられず、理屈で守る |
この3つのうち、関連性と独立性は設計とデータである程度まで確かめられます。最も難しいのは最後の除外制約で、ここが操作変数法の弱点にもなります。
関連性|レバーは本当に効いているか
促しのバナーを出しても、機能の利用率がほとんど変わらなければレバーとして役に立ちません。効きの弱いレバーは弱い操作変数と呼ばれ、推定値が大きくぶれたり、偏ったりする原因になります。
独立性|レバーの割り当ては公平か
バナーを出す相手を、利用頻度の高い人から順に選んでしまうと、レバー自体が熱心さと結びついてしまいます。プロダクトの中で操作変数を作るなら、ユーザーIDなどでランダムに割り当てるのが最も確実な方法です。
除外制約|レバーに抜け道はないか
バナーそのものが、機能を使わなくてもユーザーの気分を変えて継続を押し上げるとしたらどうでしょうか。その場合、継続率の差にはバナーの直接の影響が混ざり、機能の効果を過大に見積もってしまいます。
除外制約はデータだけでは検証できないため、レバーの中身を機能への誘導だけに絞る設計で守ります。割引やキャンペーンの告知を同じバナーに載せると、この条件はすぐに崩れます。
計算の仕組み|ワルド推定量と2段階最小二乗法
操作変数法の計算は、最も単純な形なら割り算一回で済みます。まずは仮の数字で手順を追い、そのあと実務で使われる回帰の形を紹介します。
割り算で求めるワルド推定量
レバーが表示するかしないかの二択で、原因も使うか使わないかの二択なら、効果は2つの差の比で求められます。この形はワルド推定量と呼ばれます。
分子はバナーの有無による継続率の差で、ITT(Intention-To-Treat)効果と呼ばれます。分母はバナーの有無による利用率の差で、レバーがどれだけ原因を動かしたかを表します。
# 促しバナーのランダム化(数値は説明用の仮定)
人数 機能の利用率 90日継続率
バナーあり群 10,000人 30.0% 62.0%
バナーなし群 10,000人 10.0% 60.0%
ITT効果(分子) = 62.0% - 60.0% = 2.0ポイント
利用率の差(分母)= 30.0% - 10.0% = 20.0ポイント
操作変数法の推定 = 2.0 / 20.0 = 0.10 → 継続率を10ポイント押し上げる
# 参考:利用者と非利用者を単純比較した場合(同じく仮定)
利用者の継続率 75.0% - 非利用者の継続率 55.0% = 20.0ポイント
単純比較では20ポイントに見えた効果が、操作変数法では10ポイントになりました。差の半分は、機能ではなくもともとの熱心さが生んでいた、という読み方になります。
ITT効果の2ポイントだけを見て、機能の効果は小さいと判断するのも早計です。バナーで行動を変えたのは全体の2割にすぎないので、効果が薄められて見えているだけだからです。
2段階最小二乗法
実務では、割り算の代わりに2段階最小二乗法(2SLS)という回帰の形がよく使われます。1段目でレバーから機能の利用を予測し、2段目でその予測値を使って結果を説明する、という二段構えです。
回帰の形にすると、利用開始時期や契約プランといった他の変数を一緒に入れられ、推定の精度を上げやすくなります。Pythonでは、操作変数モデルを含む計量経済学のライブラリlinearmodelsや、因果推論の前提を明示しながら分析できるDoWhyなどが公開されています。
1段目の当てはまりは、レバーの強さを確かめる材料にもなります。1段目のF統計量が小さいときは弱い操作変数を疑うのが定石で、目安として10という値が長く使われてきましたが、近年はより厳しい基準を求める議論もあります。
推定値は誰にとっての効果か|LATEとコンプライアー
操作変数法の推定値を読むときに、最も誤解されやすい点があります。それは、この効果が全ユーザーの平均ではないということです。
促しへの反応で分かれる4つのタイプ
ユーザーは、バナーへの反応の仕方で次の4タイプに分けて考えられます。この整理は、操作変数法の推定値が誰を語っているのかを理解する鍵になります。
| タイプ | バナーあり | バナーなし | 推定への寄与 |
|---|---|---|---|
| 従う人(コンプライアー) | 使う | 使わない | この人たちの効果を測る |
| 常に使う人 | 使う | 使う | 差が出ないので寄与しない |
| 決して使わない人 | 使わない | 使わない | 差が出ないので寄与しない |
| 天邪鬼な人 | 使わない | 使う | いないと仮定する |
操作変数法が推定するのは、バナーによって行動が変わった従う人だけの平均効果です。これを局所平均処置効果(LATE)と呼びます。
最後の天邪鬼な人、つまり促されると逆に使わなくなる人はいないという仮定は、単調性と呼ばれます。促しの文面が押し付けがましいと、この仮定は崩れやすくなります。
LATEをどう読むか
従う人は、促されれば使うが、促されなければ使わない層です。自分から試す熱心な層でも、何をしても使わない層でもない、中間の層だと言えます。
この層の効果がわかると、機能の露出を増やす施策の価値を見積もるのに役立ちます。オンボーディングやメールで利用を後押しするとき、動くのはまさにこの層だからです。
反対に、すでに毎日使っている熱心な層に機能が効いているかどうかは、LATEからは読み取れません。推定値を全ユーザーに当てはめて売上予測を立てるのは、読みすぎだと考えてください。
プロダクトでの使いどころと落とし穴
操作変数法は経済学の道具に見えますが、プロダクトの現場とも相性の良い手法です。代表的な使いどころと、つまずきやすい点を整理します。
エンカレッジメントデザインという設計
機能そのものはすでに全員に公開していて、使わせない対照群を作れないことがよくあります。そんなときは、機能の利用ではなく利用の促しをランダム化する設計が使えます。
この設計はエンカレッジメントデザインと呼ばれます。促しの手段としてよく使われるのは、次のようなものです。
- アプリ内のバナーやツールチップ
- 機能を紹介するメールやプッシュ通知
- オンボーディングのチェックリストへの追加
どの手段でも、割り当てはユーザー単位でランダムに行い、促しの中身は機能への誘導だけに絞ります。ウェブサイト上の導線なら、MonaLensのようなノーコードのA/Bテストで案内バナーを片方の群にだけ出し、機能ページへの到達をファネルで測る、という組み合わせも考えられます。
閾値や偶然もレバーになる
レバーは自分で作ったランダム化に限りません。スコアが基準を超えたかどうかでサポートの手厚さが変わるといったルールも、操作変数として使えることがあります。
閾値の前後を比べる考え方は、回帰不連続デザイン(RDD)とは?|閾値で切り替わるルールの効果を、すぐ上とすぐ下の比較で測るで詳しく解説しています。閾値をまたいでも全員が切り替わるわけではない場合は、まさに操作変数法と同じ割り算で効果を求めます。
サンプルサイズが大きく膨らむ
操作変数法の最大の弱点は、推定の精度が低くなりやすいことです。分子のITT効果が薄められている分、同じ精度を得るには普通のA/Bテストよりはるかに多くのユーザーが必要になります。
先ほどの例のように、促しで利用率が20ポイントしか動かないなら、効果は5分の1に薄められています。必要な人数の考え方はA/Bテストのサンプルサイズ設計|検定力とMDEをどう決めるかを参考にしつつ、レバーの強さを設計段階で見積もっておくことが欠かせません。
除外制約を設計で守る
もう一つの落とし穴は、促しそのものが結果に直接効いてしまうことです。通知を受け取ったこと自体がサービスを思い出させ、機能と関係なくログインを増やす、という経路は十分にありえます。
結果の指標を機能と関係の深いものに絞る、促しの文面を中立にする、といった工夫で抜け道を減らします。それでも残る疑いは、分析の前提として文章で明記しておくことが、結果を共有するときの誠実さにつながります。
まとめ
操作変数法は、ユーザーが自分で選ぶ行動の効果を、ランダムに割り当てた促しというレバーを通じて推定する手法です。単純比較や傾向スコアでは消せない、観測できない熱心さの差にも対処できます。
成り立つには、関連性・独立性・除外制約の3条件が必要で、推定値は促しで行動が変わった層の効果であるLATEとして読みます。精度が落ちやすいため、レバーの強さとサンプルサイズの見積もりが設計の要になります。
次に機能の効果を問われたら、まず使わせない対照群を作れるかを考えてください。作れないなら、促しをランダムに分けるという一手が、相関ではなく因果で語るための入り口になるはずです。