{CausalImpact}のcovariateの与え方について

web vignetteや元論文を見ても微妙に分かりにくかったところが、議論を経てクリアになっていく過程です。
1
TJO @TJO_datasci

ブログ更新しました。タイトル変更がサムネイルに反映されていませんがご容赦を / 機械学習のビジネス上の価値を「効果測定」して「数値評価」する方法 - 六本木で働くデータサイエンティストのブログ - 六本木で働くデータサイエンティストのブログ tjo.hatenablog.com/entry/2019/04/…

2019-04-15 08:10:41
リンク google.github.io CausalImpact 7 users 63
リンク GitHub google/CausalImpact An R package for causal inference in time series. Contribute to google/CausalImpact development by creating an account on GitHub. 5 users 7
だみ〜 @guiltydammy

tjo.hatenablog.com/entry/2019/04/… あれ?この場合比較対象はベイズ推定した時系列なので、厳密な意味でのDIDになってないのでは?DIDは介入群と非介入群両方の時系列が取れてる状態で行うもので、それができないのでDIDの非介入群をベイズ推定しちゃうよ、それっぽいよというのがcausalimpactの気持ちでは?

2019-04-15 20:50:09
TJO @TJO_datasci

あえて書かなかったことを。。。。。。笑 twitter.com/guiltydammy/st…

2019-04-15 21:05:47
だみ〜 @guiltydammy

@TJO_datasci ちなみに、causalちゃんに非介入群の時系列ぶちこむoptionがあった気がするんですが、使ったことないのでわからんでした

2019-04-15 21:08:07
TJO @TJO_datasci

@guiltydammy {bsts}でモデル作ってからそいつを引数で与えるというのは出来ますね

2019-04-15 21:19:06
だみ〜 @guiltydammy

@TJO_datasci おおなるほど。ちょうど自分でDIDするのつれえなあ〜テスト書かないといけないしな〜って思ってたのがあったので、今度やってみます!ありがとうございます!

2019-04-15 21:20:27
TJO @TJO_datasci

@guiltydammy 原論文のp.259以降にその辺の話が書いてあるんですが、あまりきちんと説明されてないのでGitHubで実装見た方が早そうです ai.google/research/pubs/…

2019-04-15 21:39:34
TJO @TJO_datasci

@guiltydammy 今見たら介入(y)&非介入ペア(x)で時系列与えた時は、y〜xなるモデルをbstsで推定してこれを反実仮想予測の算出に使ってますね github.com/google/CausalI…

2019-04-15 21:43:40
だみ〜 @guiltydammy

@TJO_datasci ありがとうございます!便利っすね〜

2019-04-15 21:43:57
TJO @TJO_datasci

@guiltydammy でもこれって結構強い仮定ですよね。うちでも当然使ってるんですが、時々謎の結果になることがあるのは仮定に合わない時なのかなと

2019-04-15 21:48:22
だみ〜 @guiltydammy

@TJO_datasci 非介入群与えないときの話ですか?そうなると所詮状態空間モデルなので、そこから逸脱してるとハマらないっすよねえ。。。

2019-04-15 21:49:45
TJO @TJO_datasci

@guiltydammy 非介入群与えていても(というか与えるのがデフォルトだと思ってました)、互いにかなり強い回帰関係がないと反実仮想予測が当たらないわけで。。。

2019-04-15 21:52:41
だみ〜 @guiltydammy

@TJO_datasci あれ?まじで勘違いしてたかもしれません。最後の論文Resultって、empiricalとsimulation(ベイズ推定)の結果比べてるから、デフォルトの使い方は非介入群与えないんだと思ってました。論文読めてないかも。。。

2019-04-15 21:57:56
TJO @TJO_datasci

@guiltydammy web vignetteでは非介入群与えてやってますね。振る舞いについては多分論文よりもコード見た方が早いです。ConstructModel関数を見ると1列しか与えなければご指摘のようなやり方で、2列与えればy~xをbstsで推定して反実仮想予測をかけます github.com/google/CausalI…

2019-04-15 23:11:10
TJO @TJO_datasci

@guiltydammy ちなみにweb vignetteはこちら。 google.github.io/CausalImpact/C… 今論文読み返したら、empirical dataでの実験については"Pairs of regions were then randomly assigned to treatment/control"と言っているので、介入群と非介入群とにsplitさせているようです。

2019-04-15 23:16:35
だみ〜 @guiltydammy

@TJO_datasci あれ、すみません、これ読むとやっぱりoptional covariates = xで、非介入群じゃなくて、共変量に見えるのですが……物分りが悪くてすみません

2019-04-15 23:19:59
TJO @TJO_datasci

@guiltydammy これ僕も疑問に思っていて、vignetteを読むとこう書いてあります。なので「ココロ」としてはxは多分非介入時系列なんでしょうが(その後のsection 2でもそういう趣旨でx1からyを作っているように見える)、表現としては一貫してcovariateなんですよね。 google.github.io/CausalImpact/C… pic.twitter.com/hpl4z7IEE5

2019-04-15 23:24:14
拡大
だみ〜 @guiltydammy

@TJO_datasci すみません、covariatesの係数betaが一定だという仮定に読めるのですが、理解が悪くてココロとしてなぜxが非介入時系列になるのかが全然わからんです、betaが一定だっていう仮定をおいてるからこそbiasの上昇が捉えられるよね、betaが一定じゃなかったらbiasの上昇に吸い付くよねという話に読めます

2019-04-15 23:29:38
TJO @TJO_datasci

@guiltydammy あとは、うちの社内で広告効果をテストする際に{CausalImpact}を用いる際は、covariate xにDiDで得た非介入時系列を充てています(グローバルのオペレーションがそうなってる)

2019-04-15 23:30:35
だみ〜 @guiltydammy

@TJO_datasci なるほど〜ありがとうございます。じゃあ私が論文読み間違ってるっぽいですね。。。反省します。。。

2019-04-15 23:31:15
TJO @TJO_datasci

@guiltydammy いえいえ、僕も"covariate"扱いになってる理由を完全には理解してない(実際やろうと思えばcovariateに3つとか4つとか変数を充てられる)ので、真面目に論文読んでみます。。。

2019-04-15 23:33:06
だみ〜 @guiltydammy

@TJO_datasci 一応この辺読むと、covariatesはinventionの介入を絶対受けてないものを使ってねとあって、非介入群の同時系列が得られるなら絶対それ入れるよねというのはわかったので、そういう話なのかなと思いました。議論ありがとうございました! pic.twitter.com/oQenahc7AB

2019-04-15 23:35:02
拡大