콘텐츠로 이동

TWFE와 DID

2그룹x2기간 DID

  • d는 이진 정책변수
  • 데이터는 \(t=1,2\)에 대하여 있고 정책은 표본의 일부에 대하여 \(t=2\)에 시행
  • 정책의 적용을 받은 \(i\)들은 \(d_{i1}=0\), \(d_{i2}=1\)이고, 정책의 적용을 받지 않은 \(i\)들은 \(d_{i1}=d_{i2}=0\)
  • DID (평균 Y의 증분의 그룹 간 차이)는 2가지 명령으로 계산 가능

    reg y d i.tgroup i.after, vce(cl id)
    xtreg y d i.after, fe vce(r)
    
    • dtgroup1.after를 곱한 것과 같으므로 더미 상호작용항
    • d의 계수는 DID
    • xtreg, fe는 two-way fixed effects (TWFE) 회귀
  • 두 명령 간 약간 차이가 있는데, reg 명령은 평균을 구한 다음 그 차이들의 차이를 구하는 반면, TWFE (xtreg, fe)는 차이를 구한 다음 그 평균들의 차이를 구함

    • 균형패널이면 둘은 일치
    • 불균형패널이면 사용되는 자료가 달라 상이할 수 있음
기간 통제집단 처치집단
ABCDEF
1OXOOXO
2XOOXOO

fastfood.dta 자료에서 fte는 성과변수(고용), nj는 처치군 더미변수, after는 정책 도입 이후 시기임을 나타내는 더미변수이다. 두 방법(reg를 사용하는 방법과 xtreg, fe를 사용하는 방법)으로 DID 회귀를 하고 OLS 결과를 그림으로 설명하라. 또한 두 회귀의 결과를 서로 비교하라. 왜 차이가 있는가?

코드 보기
use fastfood, clear
xtset id after
gen d = nj & after
reg fte d i.nj i.after, vce(cl id)
xtreg fte d i.after, fe vce(r)

특이한 회귀를 하고자 한다. 앞서 TWFE를 했는데 이제는 그 대신 one-way FE 회귀를 해 보자. xtreg fte d, fe vce(r) 회귀를 하고 d의 계수가 무엇을 말하는지 수식을 이용하여 설명하라.

balanced 변수는 2 기간에 모두 관측된 fastfood 점의 경우 1의 값을 가진다. balanced가 1인 관측치로 한정하여 위의 두 회귀를 하고 결과가 일치함을 확인하라.

코드 보기
use fastfood, clear
xtset id after
gen d = nj & after
reg fte d i.nj i.after if balanced, vce(cl id)
xtreg fte d i.after if balanced, fe vce(r)

불균형패널에 횡단면 DID와 패널 고정효과 DID를 하면 추정 결과가 상이하다. 실제로 위 회귀에서 if balanced를 제외시키면 결과가 다른 것을 확인할 수 있다. reg를 사용한 추정값은 얼마이고 TWFE 추정값은 얼마인가? 이렇게 차이가 나는 이유가 무엇인지 최대한 직관적으로 설명하라.

코드 보기
use fastfood, clear
xtset id after
gen d = nj & after
reg fte d i.nj i.after, vce(cl id)
xtreg fte d i.after, fe vce(r)

DID는 평균을 직접 계산한 후 차이의 차이를 계산함으로써도 구할 수 있다. 그럼에도 굳이 회귀분석을 하는 이유는 무엇이겠는가?

regxtreg,fe를 사용하여 DID 분석용 회귀를 할 때에는 어떤 표준오차를 사용해야 하겠는가? 그 이유는?

다기간 패널과 동시 처치

  • 다기간 패널 자료가 있고 2개 그룹(처치군과 통제군)이 있음
  • 처치군 소속 개체들은 동시에 처치를 받음
  • 사전 시기에 \(T_0\) 기간이 있고 사후 시기에 \(T_1\) 기간이 있으면 총 \(T_0\times T_1\)개의 2×2 DID가 가능
  • TWFE는 이들의 (가중)평균(균형패널이면 단순평균)

    use did3ex, clear
    xtset
    gen d = tgroup & after
    table period tgroup, statistic(sum d)
    xtreg y d i.period if inlist(period,0,1), fe vce(r)
    xtreg y d i.period if inlist(period,0,2), fe vce(r)
    di (.4548742+.6403278)/2
    xtreg y d i.period, fe vce(r)
    
  • 그러므로 TWFE는 평균 처치효과라는 의미를 가짐

  • 처치효과가 시간에 따라 이질적일 때에도 TWFE는 이들의 (가중)평균을 측정

Stata 18 이후 xtdidregress

  • Stata V18 이후 버전에는 didregressxtdidregress 명령이 내장되어 있음
  • didregressareg 명령을 사용하여 DID를 구현하고 xtdidregressxtreg, fe 명령을 사용하여 DID를 구현함
  • 사전 기간 평행 추세 검정 등 여러 가지 일을 할 수 있음(그림 포함)

다음 명령을 실행하고 데이터의 구조를 설명하고 아래의 didregress 명령과 같은 결과를 주는 areg 명령을 쓰고 실행해서 같은 결과를 얻는 것을 확인하시오. estat trendplots, omeans 그림이 무엇인지 설명하고, estat ptrends 검정 결과를 설명하고, estat granger 그림이 무엇을 말하는지 설명하시오. Stata didregress 도움말을 참조하시오.

webuse hospdd, clear
didregress (satis) (procedure), group(hospital) time(month)
estat trendplots, omeans
estat ptrends
estat grangerplot

Staggered Adoption

Staggered adoption

  • 지금까지는 모든 \(i\)에서 한 시점에 정책이 적용되는 경우를 살펴보았음
  • 이 경우 평균적인 DID는 TWFE (two-way fixed effects) 추정으로 구현할 수 있음
  • 이제 staggered adoption을 고려함

    d Early (A) Late (B) Never (C)
    t=0 0 0 0
    t=1 1 0 0
    t=2 1 1 0

Staggered adoption하 TWFE

  • 정책 채택 시점이 그룹마다 다르면 TWFE는 흥미로운 문제를 야기함
  • TWFE는 다양한 정방향 DID (0 → 0을 대조군, 0 → 1을 처치군으로 하는 DID)와 역방향 DID (1 → 1을 대조군 0 → 1을 처치군으로 하는 DID)의 가중합(de Chaisemargin & D'Hautfouille 2020; Goodman-Bacon, 2021)
  • 정방향 DID이든 역방향 DID이든 처치효과들의 선형결합을 추정하는데, 중요한 점으로 역방향 DID의 경우 잠재미처치 성과의 ‘평행추세’ 가정하에 그 계수에 음수(−)가 포함됨
  • 예) de Chaisemargin & D'Hautfouille (2020)

    d Early (A) Late (B)
    t=0 0 0
    t=1 1 0
    t=2 1 1
    • 이 경우 TWFE를 대수적으로 풀어보면 DID(0,1)과 DID(1,2)의 단순평균임을 알 수 있음
      • DID(0,1)은 1, 2기에 A를 처치군, B를 통제군으로 하는 DID (정방향 DID)
      • DID(1,2)는 2, 3기에 B를 처치군, A를 통제군으로 하는 DID (역방향 DID) “forbidden comparison”
    • 미처치 성과에 평행추세 가정이 성립하면
      • DID(0,1)은 ate(A,1)을 추정함
      • DID(1,2)는 ate(A,1) + ate(B,2) − ate(A,2)를 추정함
    • 그래서, 만약 ate(A,1)=0, ate(B,2)=0, ate(A,2)=1이면, 모든 ate(j,t) ≥ 0임에도 TWFE는 음수(−)를 추정함
  • Stata의 xtdidregress (V18 이후)는 일반적인 경우 Goodman-Bacon decomposition을 제공

    use https://friosavila.github.io/playingwithstata/drdid/mpdta.dta, clear
    table year first
    xtset county year
    gen d = treat & year >= first_treat
    xtdidregress (lemp) (d), group(countyreal) time(year)
    estat bdecomp
    

Staggered adoption하 처치효과의 식별

  • Callaway & Sant'Anna (2021), csdid
  • 처치 직전 시점을 기준 시점으로 하는 그룹·시기별 처치효과를 2×2 DID로 계산한 후 다양한 방식으로 평균을 냄

    use https://friosavila.github.io/playingwithstata/drdid/mpdta.dta, clear
    tab year first_treat
    *ssc install csdid
    csdid lemp, ivar(countyreal) time(year) gvar(first_treat)
    estat simple
    estat calendar
    estat event
    
  • 다른 방법(예를 들어 jwdid)도 기본적으로 동일

    *ssc install jwdid
    jwdid lemp, ivar(countyreal) tvar(year) gvar(first_treat) group never
    estat event
    estat plot
    
  • Counterfactual (처치군 처치 시점의 untreated outcome)을 예측하여 실제값과 예측값 간 차이를 정책효과로 보고 평균을 내는 방법도 사용됨(Borusyak, Jaravel & Spiess, 2024)

    * Data from https://ars.els-cdn.com/content/image/1-s2.0-S0014292123002210-mmc1.zip
    * ./replication/data/monthly-panel.dta
    use bjs-monthly-panel, clear
    *ssc install did_imputation
    did_imputation Y city_id month_stat month_intro, horizons(0/18) pretrend(12) avgeffectsby(cohorts_half_year) leaveout
    event_plot, default_look
    
  • 2025 재정전문가 네트워크 정책연구방법론분과, 『조세 및 재정제도 분석위한 방법론: 이론과 실제 활용』’ 제1장 참조(sign-up과 log-in 필요). pdf