合成控制法 (Synthetic Control Method) 及 Stata實現

作者:何慶紅(北京大學中國衛生經濟研究中心)

連享會:(知乎 | 簡書 | 碼雲 | CSDN)

2019暑期“實證研究方法與經典論文”專題班-連玉君-江艇主講

2019暑期“實證研究方法與經典論文”專題班-連玉君-江艇主講

本推文介紹合成控制方法及其 Stata 的實現命令。合成控制方法(Synthetic Control Method)由Abadie and Gardeazabal (2003)提出。目前,該方法已被廣泛使用。

1. 背景介紹

經濟學家常要評估某政策或事件的效應。此政策可能實施於某國家或地區(省、州或城市)。爲此,常使用“魯賓的反事實框架”(Rubin’s counterfactual framework),即假想該地區如未受政策干預將會怎樣,並與事實上受到干預的實際數據進行對比,二者之差即爲“處理效應”(treatment effect,借用醫學術語)。常用解決方法是,尋找適當的控制組(control group),即在各方面都與受干預地區相似卻未受干預的其他地區,以作爲處理組(treated group,即受到干預的地區)的反事實替身(counterfactuals)。

比如,要考察僅在A市實施的某政策效果,自然會想到以之相近的B市作爲控制地區;但B市畢竟與A市不完全相同。或可用其他城市(B市、C市、D市)構成A市的控制組,比較B市、C市、D市與A市在政策實施前後的差別,此方法也稱“比較案例研究”(comparative case studies)。但如何選擇控制組通常存在主觀隨意性(ambiguity),而B市、C市、D市與A市的相似度也不盡相同。

爲此,Abadie and Gardeazabal (2003)提出“合成控制法”(Synthetic Control Method)。其基本思想是,雖然無法找到A市的最佳控制地區,但通常可對若干大城市進行適當的線性組合,以構造一個更爲優秀的“合成控制地區”(synthetic control region),並將“真實A市”與“合成A市”進行對比,故名“合成控制法”。合成控制法的一大優勢是,可以根據數據(data-driven)來選擇線性組合的最優權重,避免了研究者主觀選擇控制組的隨意性。

  • 合成控制方法(Synthetic Control Method)的優點
    • 作爲一種非參數的方法,是對傳統的雙重差分法DID的拓展
    • 通過數據驅動確定權重,減少了主觀選擇的誤差,避免了政策內生性問題
    • 通過對多個控制對象加權來模擬目標對象政策實施前的情況,不僅可以清晰地反映每個控制對象對“反事實”事件的貢獻,同時也避免了過分外推
    • 可以對每一個研究個體提供與之對應的合成控制對象,避免平均化的評價,不至於因各國政策實施時間不同而影響政策評估結果,避免了主觀選擇造成的偏差
    • 研究者們可在不知道實施效果的情況下設計實驗

2. 合成控制法原理

原理介紹請看以下鏈接:
Stata: 合成控制法程序
合成控制法:一組文獻
合成控制法簡介及代碼

3. 合成控制法的 Stata 實現

3.1 命令安裝

在 Stata 命令窗口中輸入如下命令即可自動安裝 synth 命令:

ssc install synth, replace

3.2 語法格式

synth 的基本語法格式如下:

synth depvar predictorvars(x1 x2 x3) , trunit(#) trperiod(#)   ///
   [ counit(numlist) xperiod(numlist) mspeperiod()  ///
   resultsperiod() nested allopt unitnames(varname) ///
   figure keep(file) customV(numlist) optsettings ]

具體解釋如下:

  • y ”爲結果變量(outcome variable)
  • x1 x2 x3 ”爲預測變量(predictors)。
  • 必選項“ trunit(#) ”用於指定處理地區(trunit表示 treated unit)。
  • 必選項“ trperiod(#) ”用於指定政策干預開始的時期(trperiod表示 treated period)。
  • 選擇項“ counit(numlist) ”用於指定潛在的控制地區(即donor pool,其中counit表示 control units),默認爲數據集中的除處理地區以外的所有地區。
  • 選擇項“ xperiod(numlist) ”用於指定將預測變量(predictors)進行平均的期間,默認爲政策干預開始之前的所有時期(the entire pre-intervention period)。
  • 選擇項“ mspeperiod() ”用於指定最小化均方預測誤差(MSPE)的時期,默認爲政策干預開始之前的所有時期。
  • 選擇項“ figure ”表示將處理地區與合成控制的結果變量畫時間趨勢圖,而選擇項“resultsperiod()”用於指定此圖的時間範圍(默認爲整個樣本期間)。
  • 選擇項“ nested ”表示使用嵌套的數值方法尋找最優的合成控制(推薦使用此選項),這比默認方法更費時間,但可能更精確。在使用選擇項“nested”時,如果再加上選擇項“ allopt ”(即“ nested allopt ”),則比單獨使用“nested”還要費時間,但精確度可能更高。
  • 選擇項“ keep(filename) ”將估計結果(比如,合成控制的權重、結果變量)存爲另一Stata數據集(filename.dta),以便進行後續計算。

3.3 加州控煙案例

背景:1988年11月美國加州通過了當代美國最大規模的控煙法(anti-tobacco legislation),並於1989年1月開始生效。該法將加州的香菸消費稅(cigarette excise tax)提高了每包25美分,將所得收入專項用於控煙的教育與媒體宣傳,並引發了一系列關於室內清潔空氣的地方立法(local clean indoor-air ordinances),比如在餐館、封閉工作場所等禁菸。Abadie et al. (2010)根據美國1970-2000年的州際面板數據,採用合成控制法研究美國加州1988年第99號控煙法(Proposition 99)的效果。

. sysuse smoking      (打開數據集)
. xtset state year       (設爲面板數據)
. synth cigsale retprice lnincome age15to24 beer  ///
    cigsale(1975) cigsale(1980) cigsale(1988),    ///
    trunit(3)trperiod(1989) xperiod(1980(1)1988)  ///
    figure nested keep(smoking_synth)

具體解釋如下:

  • cigsale(1975) cigsale(1980) cigsale(1988) 分別表示人均香菸消費在 1975、1980 與 1988 年的取值。
  • 必選項 “trunit(3)” 表示第 3 個州(即加州)爲 處理組 (實驗對象)。
  • 必選項 “trperiod(1989)” 表示控煙法在 1989 年開始實施 (政策實施時點)。
  • 選擇項 “xperiod(1980(1)1988)” 表示將預測變量在 1980-1988 年期間進行平均,其中 “1980(1)1988” 表示始於1980年,以 1 年爲間隔,而止於 1988 年;其效果等價於 “1980 1981 1982 1983 1984 1985 1986 1987 1988”,而前者的寫法顯然更爲簡潔。
  • 選擇項 “keep(smoking_synth)”將估計結果存爲 Stata 數據集 smoking_synth.dta (自動存放於當前工作路徑下)。

由 Table2 可知,大多數州的權重爲 0,而只有以下五個州的權重爲正,即 Colorado (0.161),Connecticut (0.068),Montana (0.201),Nevada (0.235) 與 Utah (0.335)。我們隨後會用這五個州的實際香菸消費量的加權平均值作爲 合成加州 的替代指標。
合成控制法-權重設定

考察加州與合成加州的預測變量是否接近:
在這裏插入圖片描述

從上表 Table1 可知,加州與合成加州的預測變量均十分接近,故合成加州可以很好地複製加州的經濟特徵。然後比較二者的人均香菸消費量在 1989 年前後的表現:
在這裏插入圖片描述

從上圖可知,在 1989 年控煙法之前,合成加州的人均香菸消費與真實加州幾乎如影相隨,表明合成加州可以很好地作爲加州如未控煙的反事實替身。在控煙法實施之後,加州與合成加州的人均香菸消費量即開始分岔,而且此效應越來越大。

緊接着,調用前面已存的數據集 smoking_synth.dta,計算加州與合成加州人均香菸消費之差(即處理效應),然後畫圖:

. use smoking_synth.dta, clear //如不打開另一Stata程序,則此數據集將覆蓋原有的數據集smoking.dta
. gen effect= _Y_treated - _Y_synthetic//定義處理效應爲變量effect,其中“_Y_treated”與“_Y_synthetic”分別表示處理地區與合成控制的結果變量
. label variable _time "year"
. label variable effect "gap in per-capita cigarette sales (in packs)"
. line effect _time, xline(1989,lp(dash)) yline(0,lp(dash))

上圖顯示,加州控煙法對於人均香菸消費量有很大的負效應,而且此效應隨着時間推移而變大。具體來說,在 1989-2000 年期間,加州的人均年香菸消費減少了 20 多包,大約下降了 25% 之多,故其經濟效應十分顯著(economically significant)。

3.4 房產稅對產業轉移的影響:來自重慶和上海的經驗證據

(研究背景請看原文鏈接)

. synth 工業相對產值 工業相對產值(2006(1)2010) 相對工資 ln人均GDP 財政支出佔GDP比重 ln人口密度人平方公里   ///
ln年末金融機構存款餘額萬元 ln醫院衛生院牀位數張 ln國際互聯網用戶數戶  工業相對產值(2006) 工業相對產值(2008) ///
工業相對產值(2010), trunit(26) trperiod(2011) nested fig
------------------------------------------------------------------------------------------------------------------------------------------
Synthetic Control Method for Comparative Case Studies
------------------------------------------------------------------------------------------------------------------------------------------

First Step: Data Setup
------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------
Data Setup successful
------------------------------------------------------------------------------------------------------------------------------------------
                Treated Unit: 26
               Control Units: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 30 31 32 33 34
------------------------------------------------------------------------------------------------------------------------------------------
          Dependent Variable: 工業相對產值
  MSPE minimized for periods: 2006 2007 2008 2009 2010
Results obtained for periods: 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015
------------------------------------------------------------------------------------------------------------------------------------------
                  Predictors: 工業相對產值(2006(1)2010) 相對工資 ln人均GDP 財政支出佔GDP比重 ln人口密度人平方公里
                              ln年末金融機構存款餘額萬元 ln醫院衛生院牀位數張 ln國際互聯網用戶數戶 工業相對產值(2006) 工業相對產值(20008) 工業相對產值(2010)
------------------------------------------------------------------------------------------------------------------------------------------
Unless period is specified
predictors are averaged over: 2006 2007 2008 2009 2010
------------------------------------------------------------------------------------------------------------------------------------------

Second Step: Run Optimization
------------------------------------------------------------------------------------------------------------------------------------------
Nested optimization requested
Starting nested optimization module
Optimization done
------------------------------------------------------------------------------------------------------------------------------------------
Optimization done
------------------------------------------------------------------------------------------------------------------------------------------

Third Step: Obtain Results
------------------------------------------------------------------------------------------------------------------------------------------
Loss: Root Mean Squared Prediction Error

---------------------
   RMSPE |   .028082 
---------------------
------------------------------------------------------------------------------------------------------------------------------------------
Unit Weights:

-----------------------
    Co_No | Unit_Weight
----------+------------
        1 |           0
        2 |        .084
        3 |           0
        4 |           0
        5 |           0
        6 |        .672
        7 |           0
        8 |           0
        9 |           0
       10 |           0
       11 |           0
       12 |           0
       13 |        .244
       14 |           0
       15 |           0
       16 |           0
       17 |           0
       18 |           0
       19 |           0
       20 |           0
       21 |           0
       22 |           0
       23 |           0
       24 |           0
       25 |           0
       27 |           0
       28 |           0
       29 |           0
       30 |           0
       31 |           0
       32 |           0
       33 |           0
       34 |           0
-----------------------
------------------------------------------------------------------------------------------------------------------------------------------
Predictor Balance:

------------------------------------------------------
                               |   Treated  Synthetic 
-------------------------------+----------------------
     工業相對產值(2006(1)2010) |  1.150089   1.150037 
                      相對工資 |  1.619055   1.013639 
                     ln人均GDP |  9.817525   10.73459 
             財政支出佔GDP比重 |    .18338   .1116527 
          ln人口密度人平方公里 |  5.977395   6.399682 
    ln年末金融機構存款餘額萬元 |  18.25113   17.72419 
          ln醫院衛生院牀位數張 |  11.27253   10.37265 
          ln國際互聯網用戶數戶 |   14.7616   13.70787 
            工業相對產值(2006) |  .9416254   .9369883 
            工業相對產值(2008) |  1.132921   1.150078 
            工業相對產值(2010) |  1.377864   1.325148 
------------------------------------------------------

在這裏插入圖片描述

4. 安慰劑檢驗

4.1 安慰劑檢驗一

Abadie et al. (2010)認爲,在比較案例研究中,由於潛在的控制地區數目通常並不多,故不適合使用大樣本理論進行統計推斷。爲此,Abadie et al. (2010)提出使用“安慰劑檢驗”(placebo test)來進行統計檢驗,這種方法類似於統計學中的“排列檢驗”(permutation test),適用於任何樣本容量。

  • “安慰劑”(placebo)一詞來自醫學上的隨機實驗,比如要檢驗某種新葯的療效。此時,可將參加實驗的人羣隨機分爲兩組,其中一組爲實驗組,服用真藥;而另一組爲控制組,服用安慰劑(比如,無用的糖丸),並且不讓參與者知道自己服用的究竟是真藥還是安慰劑,以避免由於主觀心理作用而影響實驗效果,稱爲“安慰劑效應”(placebo effect)。
  • 安慰劑檢驗借用了安慰劑的思想。具體到加州控煙法的案例,我們想知道,使用上述合成控制法所估計的控煙效應,是否完全由偶然因素所驅動?換言之,如果從donor pool隨機抽取一個州(而不是加州)進行合成控制估計,能否得到類似的效應?
  • 爲此,Abadie et al. (2010)進行了一系列的安慰劑檢驗,依次將donor pool中的每個州作爲假想的處理地區(假設也在1988年通過控煙法),而將加州作爲控制地區對待,然後使用合成控制法估計其“控煙效應”,也稱爲“安慰劑效應”。通過這一系列的安慰劑檢驗,即可得到安慰劑效應的分佈,並將加州的處理效應與之對比。

在這裏插入圖片描述

在上圖中,黑線表示加州的處理效應(即加州與合成加州的人均香菸消費之差),而灰線表示其他38、34、29、19個控制州的安慰劑效應(即這些州與其相應合成州的人均香菸消費之差)。顯然,與其他州的安慰劑效應相比,加州的(負)處理效應顯得特別大。假如加州的控煙法並無任何效應,則在這39、35、30、20個州中,碰巧看到加州的處理效應最大的概率僅爲 1/39 = 0.0256,1/35 = 0.0286,1/30 = 0.0333,1/20 = 0.05,而這都小於常用的顯著性水平0.05,故初步可知黑線處理效應的確是加州控煙的效果。

****穩健性檢驗*****************************
//有效性檢驗(僅展示重慶房產稅對工業相對產值影響的穩健性檢驗程序)
************************************穩健性檢驗一(工業相對產值爲目標變量)************************************
//政策實施前均方預測誤差的平方根
tempname resmat  //設定一個臨時矩陣叫做resmat
        forvalues i = 1/35 { //這裏的循環是指將1到4個州分別做一次合成控制,也就是把2-4州,分別當做處理組進行合成控制
        synth 工業相對產值 相對工資 ln人均GDP 財政支出佔GDP比重 ln人口密度人平方公里  ln年末金融機構存款餘額萬元   ///
        ln醫院衛生院牀位數張 ln國際互聯網用戶數戶  工業相對產值(2006) 工業相對產值(2008) 工業相對產值(2010), trunit(`i')  ///
        trperiod(2011) xperiod(2006(1)2010) mspeperiod
        matrix `resmat' = nullmat(`resmat') \ e(RMSPE)  //臨時矩陣等於每個城市做處理進行合成控制時候的rmspe值
        local names `"`names' `"`i'"'"'  //設定暫元names 爲 1 2 3 4 ''' 35
        }
        mat colnames `resmat' = "RMSPE"  //臨時矩陣的列名定義爲RMSPE
        mat rownames `resmat' = `names' // 臨時矩陣的行名爲names
        matlist `resmat' , row("Treated Unit") //展示臨時矩陣,並在行的打頭表示爲“treated unit”
		** loop through units
  		** loop throu
//各城市預測誤差分佈圖
forval i=1/35{
qui synth 工業相對產值 相對工資 ln人均GDP 財政支出佔GDP比重 ln人口密度人平方公里  ln年末金融機構存款餘額萬元 ln醫院衛生院牀位數張 ln國際互聯網用戶數戶  工業相對產值(2006) 工業相對產值(2008) 工業相對產值(2010), xperiod(2006(1)2010) trunit(`i') trperiod(2011) keep(synth_`i', replace)
}

forval i=1/35{
use synth_`i', clear
rename _time years
gen tr_effect_`i' = _Y_treated - _Y_synthetic
keep years tr_effect_`i'
drop if missing(years)
save synth_`i', replace
}
**

use synth_1, clear
forval i=2/35{
qui merge 1:1 years using synth_`i', nogenerate
}

**
**刪除擬合不好的城市及上海市(干預組)
drop tr_effect_2     //刪除天津
drop tr_effect_20    //刪除武漢
drop tr_effect_35    //刪除上海


local lp1
forval i=1/1 {
   local lp1 `lp1' line tr_effect_`i' years, lpattern(dash) lcolor(gs8) ||
}
** 
local lp2
forval i=3/19 {
   local lp2 `lp2' line tr_effect_`i' years, lpattern(dash) lcolor(gs8) ||
}
 
 local lp3
forval i=21/34 {
   local lp3 `lp3' line tr_effect_`i' years, lpattern(dash) lcolor(gs8) ||
}
 
 **create plot
twoway `lp1' `lp2' `lp3'  || line tr_effect_26 years, ///
lcolor(black) legend(off) xline(2011, lpattern(dash))

在這裏插入圖片描述

4.2 安慰劑檢驗二

安慰劑檢驗的另一方式是直接將每個州“干預後的MSPE”與“干預前的MSPE”相比,即計算二者的比值。其基本邏輯如下。對於處理地區加州而言,如果控煙法有效果,則合成控制將無法很好地預測真實加州干預後的結果變量,導致較大的干預後MSPE。然而,如果在干預之前,合成加州就無法很好地預測真實加州的結果變量(較大的干預前MSPE),這也會導致干預後MSPE增大,故取二者的比值以控制前者的影響。如果加州控煙法確實有較大的處理效應,而其他州的安慰劑效應都很小,則應該觀測到加州的“干預後MSPE”與“干預前MSPE”之比值明顯高於其他各州,而這爲下圖所證實。

在這裏插入圖片描述

從上圖可知,加州的干預後MSPE是干預前MSPE的大約130倍,高於所有其他38個州。如果加州控煙法完全無效,而由於偶然因素使得此比值在所有39州中最大的概率僅爲 1/39 = 0.026。

5. 參考資料


連享會計量方法專題……

關於我們

  • Stata 連享會(公衆號:StataChina)】由中山大學連玉君老師團隊創辦,旨在定期與大家分享 Stata 應用的各種經驗和技巧。
  • 公衆號推文同步發佈於 CSDN-Stata連享會簡書-Stata連享會知乎-連玉君Stata專欄。可以在上述網站中搜索關鍵詞StataStata連享會後關注我們。
  • 點擊推文底部【閱讀原文】可以查看推文中的鏈接並下載相關資料。
  • Stata連享會 精品專題 || 精彩推文

聯繫我們

  • 歡迎賜稿: 歡迎將您的文章或筆記投稿至Stata連享會(公衆號: StataChina),我們會保留您的署名;錄用稿件達五篇以上,即可免費獲得 Stata 現場培訓 (初級或高級選其一) 資格。您也可以從 連享會選題平臺 → [002_備選主題] 中選擇感興趣的題目來撰寫推文。
  • 意見和資料: 歡迎您的寶貴意見,您也可以來信索取推文中提及的程序和數據。
  • 招募英才: 歡迎加入我們的團隊,一起學習 Stata。合作編輯或撰寫稿件五篇以上,即可免費獲得 Stata 現場培訓 (初級或高級選其一) 資格。
  • 聯繫郵件: [email protected]

往期精彩推文

點擊此處-查看完整推文列表推文列表")


image

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章