Propensity Scores
基本的概念
符号 | 说明 |
---|---|
X | covariate, 用于决策何种treatment |
\(Z \in \{0, 1 \}\) | Treatment |
\(r_{ni}\) | 第\(n\)个实例, \(z_n=i\) 下的反应(outcome) |
Strongly ignorable treatment assignment:
即满足条件可交换性:
\]
Balancing Score:
一个关于随机变量\(X\)的函数\(b(X)\)被称为balancing score, 若:
\]
Propensity Score:
\]
重要的结果
\(X \perp Z | b(X)\)
一个函数\(b(X)\)是balancing score, 当且仅当存在一个映射\(f\)使得\(e(X) = f((b(X))\).
\(\Leftarrow\)
当, \(b(x) \not= b\)的时候, 显然\(P(Z=z, X=x|b(X)=b)=0\), 此时满足条件独立性, 故只需考虑\(b(x) = b\)的情况.
P(Z=z, X=x|b(X)=b)
&= P(Z=z| X=x, b(X) = b) \: P(X=x|b(X)=b) \\
&= P(Z=z| X=x) \: P(X=x|b(X)=b) \\
&\mathop{=}\limits^{?}P(Z=z|b(X)=b) \: P(X=x|b(X)=b).
\end{array}
\]
显然最后一个等式成立, 只需满足:
\]
注: 最后一个等式成立, 是因为\(e(x') = f(b(x')) = f(b)\).
又
P(Z=z|b(X)=b)
&= \sum_{x' \in \{b(X) = b\}}P(Z=z|X=x', b(X)=b)\: P(X=x'|b(X)=b) \\
&= \sum_{x' \in \{b(X) = b\}}P(Z=z|X=x')\: P(X=x'|b(X)=b) \\
&= \sum_{x' \in \{b(X) = b\}} e(x')^z \cdot (1 - e(x'))^{1-z} \: P(X=x'|b(X)=b) \\
&= e(x')^z \cdot (1 - e(x'))^{1-z}\\
&= P(Z=z|X=x).
\end{array}
\]
注: 显然上面的证明是要求\(Z \in \{0, 1\}\)的, 即二元的treatment.
除非有额外的条件, 比如:
\]
对所有的\(x, x' \in \{x| b(X) = b\}\).
\(\Rightarrow\)
首先, 如果\(b(X)\)本身从\(X\)的一个单射, 那么显然存在这样的\(f\).
若\(b()\)不是单射, 且不存在\(f\)使得\(e(X) = f(b(X))\), 则一定存在\(x, x'\)使得
\]
此时:
P(Z=1|X=x, b(x)) \not= P(Z=z|X=x', b(x')).
\]
故\(b(X)\)不是balancing score, 矛盾.
注: 显然\(e(X)\)以及\(b(X) = X\)均为balancing score.
\((r_0, r_1) \perp Z | b(X)\)
若:
\]
则:
\]
不等式的证明是显然的.
只需证明:
\]
P(Z=1|r_0, r_1, b(X)=b)
&= \mathbb{E}_{x} \mathbb{E}_{z} [[Z|X=x, r_0, r_1,b(X)=b)] |r_0, r_1,b(X)=b] \\
&= \mathbb{E}_{x} \mathbb{E}_{z} [[Z|X=x)] |r_0, r_1,b(X)=b] \\
&= \mathbb{E}_{x} [e(X) |r_0, r_1,b(X)=b] \\
&= e(X)
\end{array}
\]
最后一个等式成立, 是因为, \(b(X)=b \rightarrow e(X) = f(b)\).
倘若上面的额外的条件成立, 即
\]
则有:
P(Z=z|r_0, r_1, b(X)=b)
&= \sum_{x' \in \{b(X) = b\}} P(Z=z, X=x'|r_0, r_1, b(X)=b) \\
&= \sum_{x'} P(Z=z|r_0, r_1, X=x', b(X)=b)\: P(X=x'|r_0, r_1, b(X)=b) \\
&= \sum_{x'} P(Z=z|X=x')\: P(X=x'|r_0, r_1, b(X)=b) \\
&= \sum_{x'} p(z)\: P(X=x'|r_0, r_1, b(X)=b) \\
&= p(z) = P(Z=z|X=x) = P(Z=z|b(X)=b).
\end{array}
\]
总结为:
若:
\]
且:
\]
则:
\]
应用
假设\(X\)包含所有地confounders, 即
\]
Propensity Score Matching
既然, 在\(e(x)\)下:
\]
那么:
\]
这个期望的过程可以分解为:
- 随机采样\(e(x)\);
- 在所有\(e(X)=e(x)\)的样本中, 随机选择\(Z=0\)和\(Z=1\)的样本;
通过此过程构造的新的数据集, 显然只需要将treated group中的群体对\(r\)取平均减去control group中的平均就能得到最后的treatment effect的估计了.
通过 propensity score matching 重采样构造的数据集满足:
\]
因为对于每一个treated group 中有一个样本\(e(x) = e\), 在control group中就有一个对应的\(e(x') = e\).
propensity score matching 重采样的实际方式可以简化为:
- 从treated group 中随机采样一个样本\((x,z,r)\);
- 计算其propensity score \(e(x)\);
- 从control group 中找到一个对应的\((x',z',r')\) 满足\(e(x')=e(x)\);
- 若存在多个\(x'\), 在其中随机采样一个.
上述采样过程中, 会遇到的问题:
不存在\(x'\), 这种情况是很容易遇到的, 一般, 我们可以选取\(x'\)使得\(e(x')\)最接近\(e(x)\), 这种方式一般称为greedy matching; 或者, 我们可以指定一个threshold, 在threshold内的\(\{x'\}\)中采样, 若一个都没有, 则舍弃\(x\).
\(x, x'\)被选中之后, 是否仍有机会被采样, 这是俩种策略;
Stratification on the Propensity Score
即将\(e(X)\)的值域分割成互斥的K个部分, 每个部分所包含的样本数量相近.
然后对每一个部分计算treatment effect, 最后再平均(加权平均, 权重为样本数量).
一般情况下, \(K=5\), 就能使得每一个stratum内的\(e(X)\)的值非常接近, 这就能够近似保证:
\]
在每一个stratum内成立.
那么, 此时我们只需通过取平均就能直接计算出每一个stratum的treatment effect.
Inverse Probability of Treatment Weighting Using the Propensity Score
这个实际上就是普通的 IP weighting.
评估
显然, 我们多半需要从已有的数据中估计出 propensity score, 比如用常见的逻辑斯蒂回归模型. 自然地, 我们需要判断我们拟合的模型是否正确.
既然propensity score 也是一个 balancing score, 那么如果拟合的比较正确, 就应该有:
\]
也就是说, 我们需要判断, 在每一个\(e(x)\)下, \(X, Z\)是否独立.
对于matching, 若条件独立满足, 则有:
=\mathbb{E}_{e(x)}\{\mathbb{E}[X|Z=0, e(x)] | Z=0 \}
\]
一个期望里用了条件独立, 第二个条件期望相等是因为matching 保证:
\]
故, 我们只需要比较treated group 和 control group的一阶矩的差别:
\]
在实际中, 比较的是如下的标准化的:
\]
一般\(d < 0.1\)就可以认为这个propensity score拟合的不错.
对于stratification, 我们只需对每一个strata判断上面的结果.
对于IP weighing, 说实话没读懂:
For IPTW this assessment involves comparing treated and untreated subjects in the sample weighted by the inverse probability of treatment.
Propensity Scores的更多相关文章
- Chapter 15 Outcome Regression and Propensity Scores
目录 15.1 Outcome regression 15.2 Propensity scores 15.3 Propensity stratification and standardization ...
- Causal Inference
目录 Standardization 非参数情况 Censoring 参数模型 Time-varying 静态 IP weighting 无参数 Censoring 参数模型 censoring 条件 ...
- [LeetCode] Rank Scores 分数排行
Write a SQL query to rank scores. If there is a tie between two scores, both should have the same ra ...
- Codeforces Round #370 (Div. 2) D. Memory and Scores DP
D. Memory and Scores Memory and his friend Lexa are competing to get higher score in one popular c ...
- Faster RCNN 运行自己的数据,刚开始正常,后来就报错: Index exceeds matrix dimensions. Error in ori_demo (line 114) boxes_cell{i} = [boxes(:, (1+(i-1)*4):(i*4)), scores(:, i)];
function script_faster_rcnn_demo() close all; clc; clear mex; clear is_valid_handle; % to clear init ...
- LeetCode Database: Rank Scores
Write a SQL query to rank scores. If there is a tie between two scores, both should have the same ra ...
- LeetCode:Rank Scores
做到这题时卡了不少时间,参考了别人的解法,觉得挺不错的,还挺巧妙. SELECT s2.Score,s1.Rank From ( SELECT S1.Score, COUNT(*) as Rank F ...
- (Problem 22)Names scores
Using names.txt (right click and 'Save Link/Target As...'), a 46K text file containing over five-tho ...
- Memory and Scores
Memory and Scores 题目链接:http://codeforces.com/contest/712/problem/D dp 因为每轮Memory和Lexa能取的都在[-k,k],也就是 ...
随机推荐
- 字节面试问我如何高效设计一个LRU,当场懵
首发公众号:bigsai 转载请放置作者和原文(本文)链接 前言 大家好,我是bigsai,好久不见,甚是想念! 最近有个小伙伴跟我诉苦,说他没面到LRU,他说他很久前知道有被问过LRU的但是心想自己 ...
- 2019广东工业大学新生杯决赛 I-迷途的怪物
题目:I-I-迷途的怪物_2019年广东工业大学腾讯杯新生程序设计竞赛(同步赛) (nowcoder.com) 将(p-1)^n 按照多项式定理拆开,会发现只有一项没有p,其余项都有p,可直接约掉. ...
- 100个Shell脚本——【脚本8】每日生成一个文件
[脚本8]每日生成一个文件 要求:请按照这样的日期格式(xxxx-xx-xx)每日生成一个文件,例如今天生成的文件为)2017-07-05.log, 并且把磁盘的使用情况写到到这个文件中,(不用考虑c ...
- OpenStack之之一: 快速添加计算节点
根据需求创建脚本,可以快速添加节点#:初始化node节点 [root@node2 ~]# systemctl disable NetworkManager [root@node2 ~]# vim /e ...
- mysql之对象创建
1 --创建表空间 2 create tablespace tablespace_name 3 innodb and ndb: 4 add datafile 'file_name' 5 innodb ...
- 【Java 基础】 instanceof和isInstance区别详解
obj instanceof class 也就是说这个对象是不是这种类型, 1.一个对象是本身类的一个对象 2.一个对象是本身类父类(父类的父类)和接口(接口的接口)的一个对象 3.所有对象都是Obj ...
- matplotlib 画图中图和次坐标轴
一: fig.add_axes 画图中图 fig = plt.figure() x = np.arange(1, 9, 1) y = np.linspace(1, 10, 8) left, botto ...
- Java高精度基础+开根
在焦作站的acm网络赛中遇到了一个高精度开根的水题--但是那时候WA了 后面学写java补题还T了orz 所以写一篇文章来记录一下java的大整数类型的基础和开根还有一点心得体会吧 首先给那一题的题面 ...
- MySQL获取对应时间
一.查询当前时间包含年月日 SELECT CURDATE(); SELECT CURRENT_DATE(); 二.查询当前时间包含年月日时分秒 SELECT NOW(); SELECT SYSDATE ...
- de1ctf_2019_weapon(爆破_IO_2_1_stdout)
(这是我真正意义上的完完全全自己做的第一道堆题目,虽然花了快三个小时,谨以此篇纪念一下) 题目的例行检查我就不放了,将程序放入ida中 程序的逻辑十分简单,漏洞也非常明显 重点是这个程序没有给我们sh ...