同時方程式と広告とInstrumental Variable Method | インターネット広告代理店で働くデータサイエンティストのブログ

始めまして、第2回を担当させていただきます、安井です。 @housecat442 でツイッターの投稿も行っているので、データ分析等に興味がある方はフォローしていただけたらなと思います。


初めてなので、ちょっと自己紹介を。
今年7月にノルウェーの大学院で修士号を経済学で取得し、現在はサイバーエージェントの広告事業本部でデータアナリストとして働いています。ノルウェーでは、計量経済学の手法を用いてサーモンの養殖の分析をする研究をしていたり、環境税の税率を設定するプロジェクトにデータ分析要因として参加していたので、その経験で得た統計学・計量経済学の知識を生かしてインターネット広告の分析をしています。


さて、好きな事を書いて良いという事なので、今回は僕がインターネット広告業界で実はとても重要なんじゃないかと考えている
Instrumental Variable Methodという手法について解説したいと思います。 どんな手法なのか?なぜ大事なのか?というイメージを掴めていただければ良いなと思います。

イメージのしやすさを優先するので、正確性には欠く説明となってしまうかもしれませんがご了承ください。



さて、このInstrumental Variable Methodは以下の様な同時方程式を推定する為に用いることが出来ます。


上の二つの式はSEMにおける簡略化された順位決定メカニズムを表しています。
入札(CPC)を上げれば順位が上昇します。一方で入札の決定は順位を見ながら行われます。
つまり、互いが互いにとって重要な要素になっている状態だと言えます。

さて、このような状況の何か問題なのでしょうか?
さくっと回帰分析でそれぞれの式を推定してしまえば良い気もします。

仮に順位決定式(上の式)において誤差項 u が下降したとします。もっともらしい理由としては競合が入札を上げた等が考えられます。
競合の入札額が上昇すると、相対的に自分の入札が弱まり、結果順位が下落します。
そして入札決定式(下の式)において順位は入札額を変化させる要素となっているので、下落した順位は入札額を上昇させます。
(説明上モデルの簡略化を行っているので、実務でSEMの運用などをされている方は多少この点に疑問を持つかもしれません。競合が多く、入札が非常に競っている状況であると仮定していただければと思います。)

つまり、uが変化すると巡り巡ってcpcが変化するという状況が発生していることになります。これが同時方程式の特徴であり、この特徴が回帰分析の分析結果がバイアスされてしまい本当の関係性を表してくれないという状況を作り出します。

この関係性についてイメージを沸かせやすくするために少しグラフィカルな解説を加えたいと思います。
実際のデータは下の様な散布図になるかと思います。(データはイメージですのであしからず)

そしてこの散布図上で回帰分析を行っても横の線が引けるだけで、あまり意味のある結果を得ることが出来ません。

そこで先ほどの同時方程式のアイデアを導入してこの散布図を解釈します。
入札と順位の決定メカニズムがそれぞれにあって相互に関係している場合、入札と順位はそれらの決定メカニズムの交点として観測されると考えられます。

片方は入札を上げると順位が上昇する関係性を示し、もう片方は順位が下がると入札を上げて調整するという関係を示しています。これらを図に描写すると以下の様になります。

simulpic1

繰り返しになりますが、線と線の交点としてデータを得ているという認識です。
さて、この解釈を先ほどの散布図に当てはめると




こういう事が起きていると解ります。
ではこの点の移動は何によっておこされているのでしょうか?ここで一度数式に戻りましょう。


線を平行移動させるには誤差項(u か e)を変化させなくてはいけません。
よって外生的なショックによって以下の図のように線が平行移動していると考えられるわけです。

つまり、両方の線が外生的なショックによって常に移動してしまってるために、線の情報が隠されてしまっているわけです。
さて、では片方の線を動かないようにできたらどうなるでしょうか?

もし片方を固定することが出来れば、交点はその固定された線の上をなぞる様に現れます。つまり、この状況では固定されている線は誤差項によって平行移動しなくなっているわけです。
そして、この状況で回帰分析を行う事が出来れば固定された線を推定することが出来ます。

では問題はどの様にして固定するか?という事になります。
ここでやっと登場するのがInstrumental Variable(IV)というものです。

例えばcpcの決定式を固定したいとしましょう。
そのまま回帰分析を使うと、rankと誤差項が相関しているのでcpcの決定モデルは作れません。よって、rankと誤差項の相関が無い状況を作り出します。

まずrankと関係しているけれども、cpcとは関係していない変数(データ)を探してきます。※

※定義的に正しい書き方をすると実は「rankと関係しているけれども、cpc決定式の誤差項とは関係していない変数」となります。しかし、cpc決定式の誤差項が変化するとcpcが変化するので、誤差項の代わりに「cpcとは関係していない」という書き方でも問題ありません。そしてその方がイメージが付きやすいかと思います。




理想論を言えば競合の入札cpcなんかが適切でしょう。(ただ、これは不可能なので実務上ではもっと別のデータを使う必要があります)
そしてその変数を使ってrankの回帰分析を行います。


この回帰分析結果を使ってrankの推定値を計算します。
この推定値は競合cpcとの回帰分析から計算されたものなので、他の変数とは相関しておらず、誤差項との相関もない状態になっています。つまり、図で言う線が固定されている状況が出来上がっているわけです。


そしてcpc決定式のrankの代わりに、この計算した推定値を使って回帰分析を行うとcpcの決定式を推定する事が出来ます。
以上がInstrumental Variable Methodの流れになります。なんとなくイメージを持てたでしょうか?

簡単ではありますが一応Rのコードを載せておきたいと思います。興味がある方はぜひ試してみてください。さすがに実データを用いることは出来ないので今回はパッケージ付随のサンプルデータを分析するコードとなっています。

#############################################

#パッケージをインストール

library(systemfit)


#サンプルデータの読み出し

data(Kmenta)

#$マークが面倒だからアタッチ

attach(Kmenta)


#需要曲線 Q = a + b*price + c*income +error

eqDemand <- consump ~ price + income


#供給曲線 Q = d*price + e*farmPrice + f*trend +error

eqSupply <- consump ~ price + farmPrice + trend


#構造式として束ねる

eqSystem <- list(demand = eqDemand , supply = eqSupply)


#一回OLSで推定(結果比較用)

fitols <- systemfit(eqSystem)


#結果を出力

print(fitols)

summary(fitols)


#上の結果はこれと同じになる(Rで普通に回帰分析)

olsd <- lm(consump ~ price + income)

summary(olsd)

olss <- lm(consump ~ price + farmPrice + trend)

summary(olss)



#操作変数法を試してみる

#Instrumental Variable を指定

inst <- ~ income + farmPrice + trend


#2SLSでInstrumental Variableを利用して推定。

fit2sls <- systemfit(eqSystem,"2SLS", inst = inst)


#結果を出力

summary(fit2sls)


###########################################



さて、広告が運用されるようになった今日では、様々な広告主・代理店が運用を行いその結果として運用結果が出来、その結果をもとにまた運用を行い、それがまた結果に作用を及ぼすという状況がいたるところでみられるかと思います。

こういった状況では単純に回帰分析をしても論理的な決定は出来ず、ましてやデータを眺めるだけでは適正な判断をすることは出来ません。
広告で運用が行われる限り、この様に同時決定方程式を推定できるような分析手法がより重要にそして常識的になって行くのではないか?と考えています。

せっかくInstrumental Variableの解説を行ったので、次回の僕の記事では一般化モーメント法(Generalized Method of Moment)を使った推定方法を解説しようかと思います。