多期DID:平行趨勢檢驗圖示

2021-02-13 君泉計量

本文轉載自Stata連享會       作者:侯新爍

本期責任編輯:王俊

編者按: 平行趨勢假設檢驗是多期 DID 模型中必不可少的檢驗步驟,本期為大家介紹在 Stata 中如何進行多期平行趨勢假設檢驗並繪製平行趨勢檢驗圖。

資料參考來源:mostly-harmless-replication - 05 Fixed Effects, DD and Panel Data

連享會 · 最受歡迎的課

🍓 2021 Stata 寒假班

⌚ 2021 年 1.25-2.4

🌲 主講:連玉君 (中山大學);江艇 (中國人民大學)

👉 課程主頁:https://gitee.com/arlionn/PX

1. 導言

雙重差分模型( Difference in Differences , DID )是政策效果評估中常用的一種計量識別策略。其原理是基於反事實框架來評估政策發生和不發生這兩種情景下被觀測變量(因變量)的變化,因而樣本被劃分為實驗組( Treated 或 Treat )和對照組( Untreated 或 Control )。

使用該方法的一個尤為重要的假設條件即滿足 「平行趨勢」( Parallel Trend ),即兩組樣本在衝擊或者政策發生前必須具有可比性,因為控制組的表現被假定為實驗組的反事實。本次推文,將結合 coefplot 命令為大家介紹多期 DID 模型平行趨勢檢驗圖形的繪製。

2. 資源準備2.1 基本原理圖示

在僅有兩期的DID模型中,我們通常使用如下圖形展示其原理,以 2008 年為政策發生時間點為例:

其中,C 對應 Control 組,T 對應 Treat 組,TD 代表 T 的反事實情形,則此時 T 與 TD 在 2008 年的差值即為 DID 識別的處理效應,而此時因為前後各僅有一期,實際上較難以識別平行假設是否成立,因而我們通常會對通過樣本本身的匹配性加強這一假設的穩健性。

而在多期情形中,圖形可能展示如下:

多個時間節點信息的出現,使我們可以對不同樣本中組因變量的變化趨勢進行觀察。此時,平行趨勢要求處理組 T 和控制組 C 在政策時點前具有一致的趨勢(平行)。當然,不同組別樣本前具有平行趨勢,並不代表著政策發生之後的時間段內依然具有反事實意義上的平行趨勢。

從文獻來看,最為常見的展示是否符合平行趨勢假設的檢驗方法有兩個:其一,對比不同組別因變量均值的時間趨勢;其二,回歸中加入各時點虛擬變量與政策變量的交互項(如本例中年份虛擬變量乘以實驗組虛擬變量),若政策或稱為處理發生前的交互項係數不顯著,則表明的確有著平行趨勢。

接下來,本推文將給出 Stata 中進行第二種檢驗方法的代碼操作和圖形輸出。

2.2 安裝 coefplot

該命令由 Ben Jann ( University of Bern, ben.jann@soz.unibe.ch )於 2017 年 9月編寫,用於對回歸係數和其他結果進行圖形繪製,展示係數結果和置信區間範圍,更多信息參見 help coefplot 。

若您的電腦尚未安裝該命令,請執行如下代碼:

ssc install coefplot, replace

若安裝出現問題請使用 findit 命令手動安裝

findit coefplot

3. 多期 DID 平行趨勢圖

本期推介的是由 vikjam 編寫的 Replication of tables and figures from "Mostly Harmless Econometrics" in Stata, R, Python and Julia 中關於 DID 的圖形輸出部分代碼。

Step 1: 準備與數據下載

clear all

set more off

eststo clear

capture version 14

* 下載 zip 壓縮包數據文件

. shell curl -o outsourcingatwill_table7.zip   ///

   "http://economics.mit.edu/~dautor/outsourcingatwill_table7.zip"  

* 解壓到當前文件夾

. unzipfile outsourcingatwill_table7.zip

此時,若正常運行,則會在 dos 窗口中看到如圖情形。

解壓後得到文件夾 table7 ,其中的 `autor-jole-2003.dta 數據即為本次示例數據。經驗證,部分 Stata 用戶可能無法正確執行上述 dos 下載過程,此時需要將網址http://economics.mit.edu/~dautor/outsourcingatwill_table7.zip 複製到瀏覽器進行下載,然後手動解壓獲得數據文件。

Step 2: 調用數據及數據預處理

作者對數據進行了論文的仿製處理,具體經濟含義請參考原文,或者請忽略,因為不是敲黑板呦。

use "table7/autor-jole-2003.dta", clear

/* 對數總就業人數:來自勞工統計局(BLS)就業和收入數據 */

gen lnemp = log(annemp)

/* 非商業服務部門就業:來自美國海關( CBP ) */

gen nonemp  = stateemp - svcemp

gen lnnon   = log(nonemp)

gen svcfrac = svcemp / nonemp

/* 商業服務部門總就業:來自美國海關( CBP ) */

gen bizemp = svcemp + peremp

gen lnbiz  = log(bizemp)

/* 生成時間趨勢 */

gen t  = year - 78 // 線性時間趨勢

gen t2 = t^2       // 二次時間趨勢

/* 限制樣本時間區間 */

keep if inrange(year, 79, 95) & state != 98

/* 生成更多的統計數據 */

gen clp     = clg + gtc

gen a1624   = m1619 + m2024 + f1619 + f2024

gen a2554   = m2554 + f2554

gen a55up   = m5564 + m65up + f5564 + f65up

gen fem     = f1619 + f2024 + f2554 + f5564 + f65up

gen white   = rs_wm + rs_wf

gen black   = rs_bm + rs_bf

gen other   = rs_om + rs_of

gen married = marfem + marmale

/* 修正工會變量 */

replace unmem = . if inlist(year, 79, 81)

replace unmem = unmem * 100              

Step 3: 估計 DID 模型

數據中,各時間節點與政策處理的交互項都是手動生成的,具體說明如下:

此時可以直接展開多期 DID 回歸了。因此,在應用該方法時,需要事先生成交互項,此處需注意。

reg lnths lnemp admico_2 admico_1 admico0 admico1 admico2 admico3 mico4 admppa_2 admppa_1   ///

   admppa0 admppa1 admppa2 admppa3 mppa4 admgfa_2 admgfa_1 admgfa0 admgfa1 admgfa2 admgfa3 ///

   mgfa4 i.year i.state i.state#c.t, cluster(state)

該回歸通過 i.year 、 i.state 和 i.state#c.t 對時間固定效應、個體固定效應和個體與時間趨勢的交叉效應進行了控制。

step 4 圖形的輸出與優化

使用 coefplot 可較便捷和快速的生成多期動態效應圖,更多使用方法請 help coefplot 。

coefplot, keep(admico_2 admico_1 admico0 admico1 admico2 admico3 mico4)   vertical  addplot(line @b @at)

通過 coefplot 選項對圖形進行優化,對橫縱坐標的標記、標題以及樣式等進行設定:

coefplot, keep(admico_2 admico_1 admico0 admico1 admico2 admico3 mico4)                     ///

         coeflabels(admico_2 = "2 yr prior"                                                ///

        admico_1 = "1 yr prior"                                                ///

        admico0  = "Yr of adopt"                                               ///

        admico1  = "1 yr after"                                                ///

        admico2  = "2 yr after"                                                ///

        admico3  = "3 yr after"                                                ///

        mico4    = "4+ yr after")                                              ///

        vertical                                                                          ///

        yline(0)                                                                          ///

        ytitle("Log points")                                                              ///

        xtitle("Time passage relative to year of adoption of implied contract exception") ///

        addplot(line @b @at)                                                              ///

        ciopts(recast(rcap))                                                              ///

        rescale(100)                                                                      ///

        scheme(s1mono)

當然,也可以通過 scheme() 將風格更改為自己熟悉或常用的格式,例如 qleanmono 風格:

最後,圖片的輸出保存:

graph export "figure.png", replace

4. 代碼匯總

ssc install coefplot, replace

*findit coefplot

clear all

set more off

eststo clear

capture version 14

shell curl -o outsourcingatwill_table7.zip "http://economics.mit.edu/~dautor/outsourcingatwill_table7.zip"

unzipfile outsourcingatwill_table7.zip

use "table7/autor-jole-2003.dta", clear

gen lnemp = log(annemp)

gen nonemp  = stateemp - svcemp

gen lnnon   = log(nonemp)

gen svcfrac = svcemp / nonemp

gen bizemp = svcemp + peremp

gen lnbiz  = log(bizemp)

gen t  = year - 78

gen t2 = t^2      

keep if inrange(year, 79, 95) & state != 98

gen clp     = clg + gtc

gen a1624   = m1619 + m2024 + f1619 + f2024

gen a2554   = m2554 + f2554

gen a55up   = m5564 + m65up + f5564 + f65up

gen fem     = f1619 + f2024 + f2554 + f5564 + f65up

gen white   = rs_wm + rs_wf

gen black   = rs_bm + rs_bf

gen other   = rs_om + rs_of

gen married = marfem + marmale

replace unmem = . if inlist(year, 79, 81)

replace unmem = unmem * 100              

reg lnths lnemp admico_2 admico_1 admico0 admico1 admico2 admico3 mico4 admppa_2 admppa_1   ///

   admppa0 admppa1 admppa2 admppa3 mppa4 admgfa_2 admgfa_1 admgfa0 admgfa1 admgfa2 admgfa3 ///

   mgfa4 i.year i.state i.state#c.t, cluster(state)

coefplot, keep(admico_2 admico_1 admico0 admico1 admico2 admico3 mico4)   vertical  addplot(line @b @at)

coefplot, keep(admico_2 admico_1 admico0 admico1 admico2 admico3 mico4)                     ///

         coeflabels(admico_2 = "2 yr prior"                                                ///

        admico_1 = "1 yr prior"                                                ///

        admico0  = "Yr of adopt"                                               ///

        admico1  = "1 yr after"                                                ///

        admico2  = "2 yr after"                                                ///

        admico3  = "3 yr after"                                                ///

        mico4    = "4+ yr after")                                              ///

        vertical                                                                          ///

        yline(0)                                                                          ///

        ytitle("Log points")                                                              ///

        xtitle("Time passage relative to year of adoption of implied contract exception") ///

        addplot(line @b @at)                                                              ///

        ciopts(recast(rcap))                                                              ///

        rescale(100)                                                                      ///

        scheme(s1mono)

graph export "figurename.png", replace

後記:本質上是根據平行假設檢驗的回歸設計,獲得係數和對應標準誤信息,然後利用標記置信區間的 connected 進行繪圖。

關於我們

連享會 ( 主頁:lianxh.cn ) 由中山大學連玉君老師團隊創辦,定期分享實證分析經驗。直達連享會:【百度一下:連享會】即可直達連享會主頁。亦可進一步添加 主頁,知乎,面板數據,研究設計 等關鍵詞細化搜索。📊 公眾號推文分類:歷史推文分為多個專輯,主流方法介紹一目了然:DID, RDD, IV, GMM, FE, Probit 等。連享會主頁  lianxh.cn

連享會小程序:掃一掃,看推文,看視頻……

掃碼加入連享會微信群,提問交流更方便

連享會學習群-常見問題解答匯總:

https://gitee.com/arlionn/WD

相關焦點

  • 傳統DID的平行趨勢檢驗2:不同類型的平行趨勢檢驗圖 - 多期DID、平行趨勢檢驗系列專題
    拓展1  多期DID及平行趨勢檢驗(多時點DID、異時DID、漸進DID)(含33個教學視頻)1.1 傳統DID及平行趨勢檢驗(含Stata操作演示)(Standard Difference-in-Difference,Standard DID,標準DID、兩期DID、
  • 多期DID理論簡介【理論微課】- 多期DID、平行趨勢檢驗系列專題
    拓展1  多期DID及平行趨勢檢驗(多時點DID、異時DID、漸進DID)(含33個教學視頻)1.1 傳統DID及平行趨勢檢驗(含Stata操作演示)(Standard Difference-in-Difference,Standard DID,標準DID、兩期DID、
  • Stata: 多期倍分法 (DID) 詳解及其圖示
    圖示處理前後各期的處理效應及檢驗平行趨勢假設3.3 論文實例演示 - 使用 `tvdiff` 命令3.4 論文實例演示 - 使用 `coefplot` 命令手動畫圖背景介紹經濟學家在評估某項政策或事件的處理效應時,常使用反事實框架,將受到處理 (處理組) 的數據 (實際可觀測到),與假如未受到處理的數據 (反事實),之間的差異稱為「處理效應」。
  • tfdiff:多期DID的估計及圖示
    DSGE模型需要設定經濟主體所處宏觀環境和決策行為,同時引入外生性隨機衝擊來研究政策影響;RD 方法則強調存在一個連續變量能夠隨機影響個體是否會接受政策幹預;而DID的核心假設則在於共同趨勢假設 (詳見後文)。本文重點介紹 tfdiff 命令,在分析多期 DID 時非常好用。
  • DID的平行趨勢檢驗步驟和程序再發一次, 此次附上例文參考!
    我們希望政策出現之前那些年份都不顯著(即包括0),這樣就會出現平行趨勢。例,使用Coefplot命令畫圖,檢驗平行趨勢:從2個文獻中理解平行趨勢檢驗:20.多期DID的big bad banks中文翻譯版本及各細節講解,21.DID中行業/區域與時間趨勢的交互項, 共同趨勢檢驗, 動態政策效應檢驗等,22.截面數據DID操作程序指南, 一步一步教你做,23.DID的研究動態和政策評估中應用的文獻綜述,24.連續DID經典文獻, 土豆成就了舊世界的文明,25.DID雙重差分方法, 一些容易出錯的地方,26.連續DID, DDD和比例DID, 不可觀測選擇偏差
  • 雙重差分安慰劑檢驗代碼
    DID安慰劑檢驗DID進行政策分析的重要假設是滿足平行趨勢。在實證分析中,除了要檢驗平行趨勢,一般情況還需要進行安慰劑檢驗。本文主要介紹如何隨機抽取樣本作為處理組來進行安慰劑檢驗。以下是全部代碼,在進行分析前手頭需要有placebo.dta這一數據集,id這一數據集是僅包括個體識別碼和時間的數據,從placebo.dta中截取。本文未能提供原始數據(樣本量太大)。下面對代碼進行逐一解讀。
  • 圖示「平行志願」
    平行志願在報考時,被分為A、B、C、D等四個志願範圍,但是它們之間各個院校並沒有階梯關係。在平行志願的錄取時,有幾點需要明確,第一,首先填報範圍是是同一批次,現在很多地方已經取消二本和三本的劃分,也就是填報時分為本科一批和本科二本,因此在一個投檔時間段內,再一個是可以填幾個並列的院校志願。
  • P for trend-CATT趨勢檢驗
    今天給大家分享一下如何實現SPSS做不了的Cochran-Armitage趨勢檢驗(CATT)。CATT是用來評估一個二分類變量和一個有序分類變量(至少3個)之間的關聯性,即2*R列聯表資料,又稱趨勢卡方檢驗。
  • 似然比檢驗 - CSDN
    、輪廓分析(趨勢比較)、模型適合度等等。重複度量:同一個指標在同一個主體上進行多次測量,檢驗多次測量值之間是否有差異(比如是否存在時間效應及治療效應)。輪廓分析:以兩組的輪廓為例,當重複測量發生在兩組主體中時,想考量兩組的重複測量趨勢是否一致。
  • 帶異質性處理效應的雙向固定效應估計不穩健時,Fuzzy-DID來幫忙|補充更新
    當處理效果在組間和時間上是恆定的,這種回歸估計了在標準共同趨勢假設下的效果。然而,通常很難相信處理效果是恆定的。例如,最低工資對就業的影響在美國各個縣可能不同,而且可能會隨時間而改變。本文研究了違反常數效應假設時雙向有限元回歸的性質。
  • 促進理解的圖示:結構模型和設計原則
    他建議將研究重點放在符號層次和感覺層次,並將認知科學、心理學和教育學多學科的知識納入考慮範圍內。過去30年,Mayer等研究者一直遵從這個較為務實的研究策略。他們的研究沒有局限於某一媒體,而是通過利用多元的研究手段獲得了大量可靠的研究證據[8,11-12],從而使得圖示的有關研究在感覺層次上得到長足發展。多媒體學習理論、認知負荷理論已趨於完善[13-14]。
  • 用SPSS做方差分析趨勢檢驗
    我之前寫的所有方差分析的案例文章,均沒有提及趨勢檢驗,當我們的數據分析中有這樣的需求之時,自然而然的就會想到應該考察一下是不是存在某種趨勢。
  • matlab模型檢驗 - CSDN
    根據圖示,ACF的特徵類似於拖尾,PACF則沒有明顯的特徵模式。當ACF,PACF沒有明顯特徵時,需要通過赤池信息來判斷。赤池信息準則:通過AIC作為衡量統計模型擬合優良性的一種標準。通過單位根檢驗判斷此時間序列是否為平穩時間序列:dfuller ln_wpi,lag(3) trend regress (此處假設滯後3期,lag(3)。正常做法是要進行多次滯後項的驗證,然後去評判擬合回歸的顯著性效果。)
  • 應急照明圖示_2020年應急照明圖示資料下載_築龍學社
    消防應急照明和疏散指示系統施工安裝前,應首先檢查產品的外包裝是否破損、外觀及結構是否存在問題,並嚴格按照施工過程質量控制要求,對系統設備、材料及配件進行現場檢查(檢驗)和選型符合性檢查,不合格的設備、材料、配件及不符合設計圖紙要求的產品不得使用。
  • 圖示工具在協作學習中的影響一一基於協作學習項目的調查
    這裡以「圖示」強調與過去多媒體方式的不同,是指學習者在學習中以可視方式接收、處理、操作並表達呈現,這種內外部學習行為的「風格」很不相同,「圖示」方式將成為一種習慣,並產生某種力量。國外有關心智模型[4][5][6]、視覺認知[7]和圖示或圖解工具[8]的研究,都預示了這種方式可能的潛力。我們對圖示功用的研究也支持了這一點。
  • 毛線編織棒針針法基礎教程及符號圖示
    毛線編織棒針針法基礎教程及符號圖示大家在這裡看到的這篇解析是一個手工編織入門級的教程,一定會受到廣大手工編織愛好者們的普遍關注
  • Chineasy圖示漢字趣味多 克服中文教學難題
    Chineasy將漢字差分成基本部分,並配以生動形象的圖示加以說明。例如「閃」這個漢字,Chineasy就畫出了一個門,並在門裡畫出人,表現出人要逃跑,以此解釋「閃」的意思。Chineasy的創始人薛曉嵐(音譯)出女士生於臺北,是為風險投資家,現在在倫敦工作。同時她還是位狂熱的設計愛好者。