将列向量合成矩阵_Synthetic Control 合成控制法

合成控制法(SC)是评估政策或事件影响的模型,通过构造虚拟控制组来估算反事实结果。与双重差分法(DiD)相比,SC更透明且基于面板数据,提供更客观的结果。本文以烟草控制法案对California的影响为例,阐述了如何通过合成控制矩阵合成虚拟控制组,强调了数据质量、平行趋势和权重选择在合成过程中的重要性。
摘要由CSDN通过智能技术生成

合成控制法(SC)最早由 Abadie and Gardeazabal(2003)提出,被Athey and Imbens(2017)称赞是过去 15 年间最重要的政策评价模型

SC 用于研究一项政策或者一个突发事件,对一个团体(aggregate entities,如公司,学校,行政区等)造成的影响。

比如,Abadie 等人研究了烟草控制法案对 California 人均烟草消费的影响,西班牙 Basque 地区的恐怖袭击对本地区人均 GDP 的影响。针对国内的研究有:房产税的实施对当地第三产业的影响,汶川地震对四川农民居民储蓄率的影响,等等。

想要分析具体的影响有多大,就需要构造一个“没有该政策/事件时,当地应该有的结果”(反事实结果,counterfactural),然后与真实结果一减,差值就是政策/事件的影响(effect)。

有一个常用的方法是双重差分法(DiD),其基本思想是:假设两个团体在没有受到影响时存在“平行趋势”,所以在政策实施后,可以用未受影响的团体(控制组,control)去估计受影响的团体(实验组,treatment)的 counterfactural,进而估计 effect。

以下图为例:假设 control 和 treatment 的就业率在没有受到政策影响时存在平行趋势,在政策实施后,把 control 的趋势曲线平移到 treatment 的位置就是对 counterfactural 的估计,两者之差就是 effect 的估计。

77c0304c3878af777ab6725cb33b544a.png

但是,DiD 的重要前提“平行趋势”,也是 DiD 的最大局限。因为这个假设太强,一般很难满足,尤其是 control 一般是人为选择的,具有很高的主观性。

SC 的基本思路和 DiD 是一致的,差别在于:SC 会在一组 controls 中,基于面板数据(panal data),选出部分 controls,去合成一个虚拟控制组,称之为 sythetic control。

我们可以简单的理解为,SC 构造了一个虚拟的 control,去替代 DiD 中人为选择的 control。

Abadie et al 提出,用 sythetic control 估计的 counterfactural,比仅用某一个 control 要更好。(为什么呢?看下去就知道啦。)

对比 DiD,SC 的优点在于“透明”,即完全基于 panal data,得到的结果相对客观,避免了人为的主观误差。

这一特点也给了 SC 很多改良空间,至于改良空间有多大,data-driven,大家都懂的。

那么,具体怎么去“合成”呢?我们以 Abadie 的文章:Synthetic Control Methods for Comparative Case Studies: Estimating the Effect of California's Tobacco Control Program 为例,该文研究烟草控制法案对 California 人均烟草消费的影响:

数据:
  • 一共有 个地区,其中第一个是 treatment,之后 个是 controls。这些 controls 组成 donor pool。(donor pool 中最好有超过 10 个地区。)

  • 一共有 个时间单位,其中政策影响开始于时刻 。即:时刻 1 到 时,所有地区都不受政策影响;时刻 到 时,treatment 受政策影响,controls 不受影响。

  • :第 个地区在时刻 的结果,其中 , 。同时,我们用上标 表示“未受到政策影响”时的结果, 表示“受到政策影响”。所以,

    • 对 ,在 所有时刻都有 。
    • 对 ,在 时有 ,而 时有 。
  • :由第 个地区的可观测变量组成的向量。这些可观测变量解释各地区结果,而且要与时间无关(很多金融领域的论文使用浮动性强的变量,最后拟合效果就不好)。比如此例中采用的是:平均收入,生活必需品的平均零售价,年轻人占总人口比例,啤酒税。

符号:
  • ,:treated 在时刻 后,没有受到政策影响时的结果。这就是需要我们合成的 counterfactual。

  • ,:政策效果。在政策实施后,用真实值减去合成值的估计,就是对政策效果的估计。

  • :城市权重向量,用于合成 。 是 * 1 维列向量,其中每个 代表 donor pool 中对应地区在合成中的权重。这里要求每个 非负,且。

  • :对 的估计,这就是 synthetic control。

合成步骤:

令 ,即依次列举第一个地区的所有属性,和政策实施前的结果,组成一个 *1 维的列向量。(这里, 后的元素可以是 的任意线性组合,这里取最简单的例子。)

类似的,依次定义 ,。(这些向量能反映了各城市的内在属性和外在结果。)

令 ,即由 donor pool 中的城市,按照各地区属性和政策实施前的结果,组成的 * 维矩阵。

最小化 ,得到 。(直观上理解,就是要让 synthetic control “内外兼修”,在属性和结果上都最接近 treatment。)

最后,,,  就是我们要估计的政策效果。

注意:
  1. 加权范数 :

文中采用了,定义为:

其中 的意义简单来说就是:给 中重要的因素更大的权重,以改善合成效果。

那么哪些数据重要呢?可以是我认为,即人为给定 的值,此时一般给外在结果变量赋予更大的权重,这样合成会更好;也可以是数据“认为”,完全的 data-driven,这需要加入最小化拟合的均方误差的过程,具体见代码部分。

  1. 权重矩阵的“稀疏性”:

在得到的权重向量 中,只会有几个值不为 0,其他都为 0。这意味着 donor pool 中只有少数几个地区会参加合成。这是 SC 的一个重要性质。

原因在直观上也很容易解释:SC 是一个优化问题,可行域采用 范数,其几何性质保证了解的稀疏性。

为了方便可视化,我们考虑两维的情况,左边为 范数,右边是 范数。左边的解更容易落在“角”上。

326750bb65bdff4b7374c44cb40eb6ff.png

  1. 误差:

Abadie et al 证明了,政策实施之前的数据越多于之后的数据,即 越大于 , 的误差越接近于 0。证明略,可见论文附录。

一般来说,SC 需要 15 个单位时间以上的政策实施前,和 5 个单位时间以上政策实施后的 panal data。

这是 SC 的一个缺点,对 panal data 的要求比较苛刻,在某些领域很难有这样的数据。而 DiD 有时候只要两年的截面数据就能得到结果。


代码:

先看下原始数据:

import pandas as pd
import numpy as np
from scipy.optimize import fmin_slsqp, minimize
from matplotlib import pyplot as plt

RawData = pd.read_table(r'MLAB_data.txt')
RawData
RawData.index   
RawData.columns

部分原始数据,行名与列名分别为:

b7b733a3af7944184ea96ef80716a66a.png

···

ea12c5274b425f68a0df568fbe5edd0a.png

共有 39 个州,其中 California 为 treatment,其余 38 个州组成 donor pool。数据从 1970 年到 2000

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值