「調査観察データの統計科学」3.1章 傾向スコアの数式メモ(前半)

【追記】
社内勉強会資料を整えて公開しました。

【/追記】


みどりぼん(「データ解析のための統計モデリング入門」)を読み終わったから、というわけではないが、同じ岩波・確率と情報の科学シリーズの「調査観察データの統計科学」(星野崇宏)を読んでいる。

社内で週一開催している勉強会の自分の担当回でもこの「調査観察データの統計科学」を紹介。今は3章の傾向スコアの途中。
勉強会向けに資料も作っているが、closed ということでいろいろ遠慮なくやらかしており、そのままだとちょっと公開できない(苦笑)。どうせ傾向スコアまでいかないと内容無いので、3章終わったくらいに再構成して公開しようと思う。


最近は、社内のマーケティングなデータ解析っぽい仕事もしてて、先日開催された WebDB Forum 2014 の技術セッションでは「クラウドサービスにおけるユーザ動向予測について」といった発表をさせてもらった。資料は残念ながら公開できないのだが、概略を簡単に説明すると、BtoB クラウドサービスのように、利用できるデータに制限があってもデータ解析をするには、という感じの話。
そうした「いわゆるデータサイエンス」なお仕事をちょびちょびしていると、やりたいことの半分は「意思決定」なのだろうけど、もう半分は「施策の効果を測定したい」で占められるのでは、と思えてくる。ただしその「施策」もコストがかかるとなると、できるだけ効果の大きい(と希望的に推測している)ところを狙うことになるわけで。
そんな「無作為抽出した実験群」うんぬんが夢物語な状況でも公正な効果測定を行いたい。そういう欲張りな要件に、この本の言う調査観察研究が役立っちゃったりなんかするのかも? と、これが動機。


前置きが長くなったが、今日の本題。
そういうノリで読み始めた「調査観察データの統計科学」だが、この本の数式周りには「むむむ?」というツッコミどころがちょいちょいある。特に傾向スコアが導入される 3.1章は、わずか2ページちょっとながらこの本の中でも重要度が高いだろうと思われるので、ここの数式は疑問をなくしておきたい。
そのあたりをフォローするメモをまとめてみた。


まずバランシングスコアを定義する。
b(x) がバランシングスコアであるとは、\boldsymbol{x}\bot z\;|\;b(\boldsymbol{x}) が成立することとする(条件付き独立の記号が出ないので、縦棒一本で勘弁)。
なお Notaion は本の通りなので、新たに自前の記号を導入でもしない限りここでは一切説明しない。潜在的な結果変数が〜因果効果が〜ってやってたらキリないし。あくまで、「調査観察データの統計科学」を読んでて困ってる人向けのメモである。


続けて、「バランシングスコアは、関数 g を使って p(z=1|\boldsymbol{x})=g(b(\boldsymbol{x})) と表現できることが必要」とあって、式 (3.2) によってそれを証明しようとしているが、これは残念ながら証明になっていない。
A=B を証明せよという問題で、 A=B を使って「この等式が成り立つには A=B が必要である」と答え、「それは証明ではありません」と×される、という流れに身に覚えのある人もいるかと思う。それである。A=B を証明するのに A=B を使ってはいけない。
式 (3.2) を逆に見ると、p(z=1|\boldsymbol{x})=g(b(\boldsymbol{x})) を仮定して p(z=1|\boldsymbol{x})=p(z=1|\boldsymbol{x},b(\boldsymbol{x})) つまり \boldsymbol{x}\bot z\;|\;b(\boldsymbol{x}) が成り立つことを示すことになら使える。よって、{}^\exists g\;\rm{s.t.}\;p(z=1|\boldsymbol{x})=g(b(\boldsymbol{x})) の十分性なら 式 (3.2) によって証明できる。


それを踏まえつつ、そもそもこの命題は何のためにあるのかというと、実は次ページで登場する「傾向スコア」が {}^\exists g\;\rm{s.t.}\;p(z=1|\boldsymbol{x})=g(b(\boldsymbol{x})) を満たしていることから、傾向スコアはバランシングスコアであることを示すのに用いる。つまりここで示すべきは必要性ではなく十分性の方なのだ。
というわけで、ここは式 (3.2) はそのままに、その説明を「バランシングスコアは、関数 g を使って p(z=1|\boldsymbol{x})=g(b(\boldsymbol{x})) と表現できることが十分条件である。というのも {}^\exists g\;\rm{s.t.}\;p(z=1|\boldsymbol{x})=g(b(\boldsymbol{x})) であるとき 式 (3.2) が成立するからである」とし、次のページに「先の証明から傾向スコアがバランシングスコアであることがわかる」という一文を追加すれば論理がつながる(後半は傾向スコアを定義したあとにもう一度説明するのでご心配なく)。


ちなみに、実はこの命題は必要十分で、本の脚注にて「十分条件については Rosenbaum and Rubin(1983)の定理 2 を参照」と付記されている。まあ上での指摘を入れれば、参照すべきは必要条件の方であることは言わずもがなだろう。
せっかく勧めてくれたので Rosenbaum and Rubin(1983) "The Central Role of the Propensity Score in Observational Studies for Causal Effects" の定理 2 を見てみると、必要性を示すのに背理法を用いていた。めんどくさい。
ここは「 x を止めたとき b(x) は一意に決まるので、p(z=1|x,b(x))=p(z=1|x) が常に成り立つ」ことを認め、一方で b(x) がバランシングスコアであることから p(z=1|x,b(x))=p(z=1|b(x)) でもあるので p(z=1|b(x))=p(z=1|x) が言える。よって g(b(x)):=p(z=1|b(x)) とおけばよい。これで必要性の証明になる。背理法とかいらない。かんたん。


この関係式 p(z=1|x,b(x))=p(z=1|x) は本には明記されていないが頻繁に使用されており、例えば先の式 (3.2) の中でもバッチリ使われている。
でも今「 x を止めたとき b(x) は一意に決まるので、p(z=1|x,b(x))=p(z=1|x) が常に成り立つ」とさらっと流そうとしたけど、これもし数学科の演習だったら見逃してもらえない。「それ本当に成り立つの?」「はい、明らかに……*1」「明らかなら証明できるよね?(にっこり)」と真正面から刺されて見事な窮地に陥る。
まったく細かいことであり、傾向スコアを使いたいだけなら無条件に認めても困らないのだろう。が、ここは「3.1章の数式から疑問をなくすメモ」なので、道筋くらいはきっちりつけておこう。


といっても、この「簡単で難しい関係式」が「難しげ」なのは記号 b(x) のせい、ただそれだけである。
b(x) は確率変数でもあり x の関数でもあるかのように都合よく使いまわされている*2。要は手抜き。普段はそうしてズボラしているが、何がどうなっているのか説明しろと言われ、手抜きのしっぺ返しを食らってる、って寸法だ。
これは確率変数と関数をちゃんと分離した記号を導入するだけで解消できる。


今、b は関数 b(x) を表す記号とし、それとは別に確率変数 B を p(B|x)=1 (B=b(x) のとき)、p(B|x)=0 (B≠b(x) のとき) と定義する*3。この記号の下で、今まで p(z=1|x,b(x)) と書いていたのは実は p(z=1|x,B=b(x)) のことだったのだ。これが p(z=1|x) に一致することは確率の加法乗法定理でさくっと出るので以下略。記法重要。


ここまででやっと1ページ進んだが、それなりの分量になってしまい。
3.1 の残りの1ページのためのメモは更に長いので、残りは別記事に切り分けることにする。
社内勉強会もこんな調子でやってるので、なかなか進まない(笑)。1回のセミナーで1行しか進まないとかまあよくある話なんである。数学屋さんは。

*1:ここで「本にそう書いてあったから」と答えたら退場

*2:確率論の公理で「確率変数とは関数である」的な話とは全く別なので混同しないように

*3:B の動く範囲(= b の値域)が離散ならこれでいいが、連続なら本来はディラックデルタ使って指示分布? を構成しないといけない。実際、傾向スコアは連続値をとる。が、計算が煩雑になるだけで本質的には全く変わらないので、理解を得る分にはこの定義で十分だろう