Різниця в відмінностях від даних окремих панелей рівня


11

Який правильний спосіб визначити різницю в різницькій моделі з даними окремих панелей рівня?

Ось така настройка: Припустимо, що дані панелей на індивідуальному рівні вбудовуються у містах протягом декількох років, і лікування залежить від рівня міста. Формально, нехай буде результатом індивідуального в місті і рік і є фіктивною чи заходи ураженого міста в році . Типовий оцінювач DiD, такий як той, викладений у Bertrand et al. (2004, стор. 250), заснований на простій моделі OLS з фіксованими термінами ефекту для міста та року: i s t D s t s tyististDstst

yist=As+Bt+cXist+βDst+ϵist

Але чи не враховує цей оцінювач структуру панелі індивідуального рівня (тобто численні спостереження за кожною особою в межах міст)? Чи має сенс розширити цю модель терміном фіксованим рівнем індивідуального рівня ? Багато програм DiD використовують дані повторного перерізу без даних панелі індивідуального рівня.Si


Бертран, Маріанна, Естер Дуфло та Сендхіл Муллайнатан. 2004. "Скільки слід довіряти оцінкам відмінностей у відмінностях?" Щоквартальний економічний журнал 119 (1): 249–75.


Якщо ви хочете зафіксувати ефекти манекенів сутності, чому б не зробити модель фіксованих ефектів? DID еквівалентний FE з двома часовими періодами, тому включаючи манекени, а потім виконання DID призведе до їх випадання.
VCG

Виправте мене, якщо я помиляюся, але я бачу дві відмінності: а) модель fe використає порівняльну характеристику в одиниці для оцінки ефекту (наприклад, чи дохід вищий чи нижчий після певної життєвої події). Ідея DiD-підходу полягає у використанні інших спостережень як контрольної тенденції для фіксації того, що сталося б без лікування. b) DiD фокусується на груповому рівні, а не на індивідуальному рівні лікування. Тепер питання в тому, що станеться, якщо я просто додаю рівняння fe рівня до рівняння у своєму прикладі. Чи використовує це контрольний блок як тенденцію контролю? Усі контрольні товари не залежать від
способу

Відповіді:


11

Приємною особливістю відмінностей у відмінностях (DiD) є те, що для цього вам не потрібні дані панелі. Зважаючи на те, що лікування відбувається на певному рівні агрегації (у ваших випадках містах), вам потрібно лише відібрати вибіркові випадки з міст до та після лікування. Це дозволяє оцінити і отримати причинний ефект від лікування як очікувану різницю після результатів перед обробляється за вирахуванням очікуваної різниці після контролю для контролю.

yist=Ag+Bt+βDst+cXist+ϵist

Є випадок, коли люди використовують індивідуальні фіксовані ефекти замість індикатора лікування, і це коли ми не маємо чітко визначеного рівня агрегації, на якому відбувається лікування. У такому випадку ви оціните де є показником періоду після лікування для осіб, які отримали лікування (наприклад, програма ринку праці, яка відбувається повсюдно). Більш детальну інформацію про це дивіться у цих конспектах лекцій Стіва Пішке.

yit=αi+Bt+βDit+cXit+ϵit
Dit

У ваших налаштуваннях додавання окремих фіксованих ефектів не повинно нічого змінити стосовно бальних оцінок. Індикатор лікування буде просто поглинений індивідуальними фіксованими ефектами. Однак ці фіксовані ефекти можуть затримати частину залишкової дисперсії і, отже, потенційно зменшити стандартну помилку коефіцієнта DiD.Ag

Ось приклад коду, який показує, що це так. Я використовую Stata, але ви можете скопіювати це у вибраному статистичному пакеті. "Особи" тут насправді є країнами, але вони все ще групуються за деяким показником лікування.

* load the data set (requires an internet connection)
use "http://dss.princeton.edu/training/Panel101.dta"

* generate the time and treatment group indicators and their interaction
gen time = (year>=1994) & !missing(year)
gen treated = (country>4) & !missing(country)
gen did = time*treated

* do the standard DiD regression
reg y_bin time treated did

------------------------------------------------------------------------------
       y_bin |      Coef.   Std. Err.      t    P>|t|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
        time |       .375   .1212795     3.09   0.003     .1328576    .6171424
     treated |   .4166667   .1434998     2.90   0.005       .13016    .7031734
         did |  -.4027778   .1852575    -2.17   0.033    -.7726563   -.0328992
       _cons |         .5   .0939427     5.32   0.000     .3124373    .6875627
------------------------------------------------------------------------------

 * now repeat the same regression but also including country fixed effects
 areg y_bin did time treated, a(country)

------------------------------------------------------------------------------
       y_bin |      Coef.   Std. Err.      t    P>|t|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
        time |       .375    .120084     3.12   0.003     .1348773    .6151227
     treated |          0  (omitted)
         did |  -.4027778   .1834313    -2.20   0.032    -.7695713   -.0359843
       _cons |   .6785714    .070314     9.65   0.000       .53797    .8191729
-------------+----------------------------------------------------------------

Отже, ви бачите, що коефіцієнт DiD залишається колишнім, коли включаються окремі фіксовані ефекти ( aregє однією з доступних команд оцінки фіксованих ефектів у Stata). Стандартні помилки дещо жорсткіші, і наш оригінальний показник лікування був поглинений індивідуальними фіксованими ефектами, і тому впав у регресію.

У відповідь на коментар
я згадав приклад Пішке, щоб показати, коли люди використовують індивідуальні фіксовані ефекти, а не індикатор групи лікування. Ваша установка має чітко окреслену групову структуру, тому спосіб написання вашої моделі - це чудово. Стандартні помилки повинні бути кластеризовані на рівні міста, тобто рівень агрегації, на якому відбувається лікування (я цього не робив у прикладі коду, але в налаштуваннях DiD стандартні помилки потрібно виправити, як показано в роботі Bertrand et al. ).

Щодо переїздів, то тут вони не мають великої ролі. Індикатор лікування дорівнює 1 для людей , які живуть в обробленому місті в доочистки періоду . Для обчислення коефіцієнта DiD нам насправді просто потрібно обчислити чотири умовні очікування, а саме s t c =Dstst

c=[E(yist|s=1,t=1)E(yist|s=1,t=0)][E(yist|s=0,t=1)E(yist|s=0,t=0)]

Отже, якщо у вас є 4 періоди після лікування для особи, яка проживає в обробленому місті протягом перших двох, а потім переїжджає до контрольного міста протягом двох інших періодів, перші два з цих спостережень будуть використані для обчислення і останні два в . Щоб було зрозуміло, чому ідентифікація походить від групових відмінностей у часі, а не від рушіїв, ви можете уявити це простим графіком. Припустимо, зміна результату є справді лише завдяки лікуванню та тому, що воно має сучасний ефект. Якщо у нас є людина, яка проживає в обробленому місті після початку лікування, але потім переїжджає до контрольного міста, їх результат повинен повернутися до того, що було до того, як до них зверталися. Це показано на стилізованому графіку нижче.E ( y i s t | s = 0 , t = 1 )E(yist|s=1,t=1)E(yist|s=0,t=1)

введіть тут опис зображення

Можливо, ви все ще хочете подумати про вантажників з інших причин. Наприклад, якщо лікування має тривалий ефект (тобто воно все-таки впливає на результат, навіть якщо індивід перейшов)


2
Гарна відповідь. Ви також рекомендуєте кластеризувати помилки на рівні міста тут?
Мастеров Димитрій Васильович

Чудова відповідь, дякую. Ваш еквівалент eq 3 зі сторінки 12, правда? Пішке вводить цю частину з "Однак, іноді немає природних одиниць, де призначено лікування. Натомість, деякі люди отримують лікування в певний момент часу, а інші - ні". Але це насправді не так. Лікування ІС на рівні міста (або будь-якої групи) у моїх настройках + у мене є дані панелі. Це все ще може бути правильна модель, можливо, з кластером se. Що б ти сказав? Що робити, якщо люди роками можуть пересуватися між містами? У такому випадку кофе для "оброблених" буде визначений на основі тих, хто рухається, правда?
greg

@ DimitriyV.Masterov Рекомендація Bertrand та ін. Полягає в групуванні стандартних помилок на рівні групи, на якому відбувається лікування. Крім того, ви можете використовувати блок завантаження з заміною, хоча це також буде на рівні міста знову.
Енді

@greg Я відредагував відповідь, щоб відповісти трохи детальніше на ваш коментар. Сподіваюся, це допомагає :-)
Енді

чи має значення, якщо ми використовуємо кілька періодів? манекен D_i_t буде нульовим для всіх періодів до події і буде будь-яким для всіх періодів після події в будь-якому випадку. Чи не було б те саме, якби я просто використав два періоди? @Andy
Jinhua Wang

1

Коротка відповідь полягає в тому, що використання фіксованого ефекту на рівні одиниці або на рівні обробленої групи не змінює оцінку, а лише умовивід. Зазвичай використання одиничного фіксованого ефекту поглинає більше варіацій, а значить, у вас будуть менші стандартні помилки.

Незалежно від того, чи є одиниці в одній агрегованій групі, це не змінює цей результат (він змінює лише те, як ви визначаєте рівень обробленої групи , і те, що вам потрібна панель замість повторних перерізів).

Однак зауважте, що еквівалентність виконується лише тоді, коли немає коваріату X. Як тільки у вас є Xs, результати відрізняються, використовуючи ви фіксовані одиничні чи групові ефекти.

У наведеному нижче прикладі порівнюються 3 оцінки в двох випадках з X і без. Оцінювачі:

  1. OLS
  2. ЗП з (лікуваною) груповим фіксованим ефектом
  3. ЗП з одиничним фіксованим ефектом

#>              OLS         FE treated  FE unit   OLS x       FE treated x  FE unit x
#> ----------------------------------------------------------------------------------
#> (Intercept)   0.500 ***                         0.491 ***                         
#>              (0.094)                           (0.107)                            
#> did          -0.403 *    -0.403 *    -0.403 *  -0.407 *    -0.407 *      -0.460 * 
#>              (0.185)     (0.185)     (0.183)   (0.189)     (0.189)       (0.187)  
#> x1                                              0.018       0.018         0.220   
#>                                                (0.104)     (0.104)       (0.165)  
#> ----------------------------------------------------------------------------------
#> Num. obs.    70          70          70        70          70            70       
#> ==================================================================================
#> *** p < 0.001, ** p < 0.01, * p < 0.05

Код:

library(tidyverse)
library(haven)
library(texreg)
library(lfe)


dat <- read_dta("http://dss.princeton.edu/training/Panel101.dta")  %>% 
  mutate(time = (year>=1994) ,
         treated = (country>4),
         did = time*treated)

reg_ols <- lm(y_bin~ time+ treated+ did, data = dat)
reg_fe_a <- felm(y_bin~ did | time+ treated, data = dat)
reg_fe_b <- felm(y_bin~ did | time+ country, data = dat)

reg_ols_x <- update(reg_ols, .~.+x1)
reg_fe_a_x <- update(reg_fe_a, .~.+x1)
reg_fe_b_x <- update(reg_fe_b, .~.+x1)



screenreg(list(reg_ols, reg_fe_a, reg_fe_b, reg_ols_x, reg_fe_a_x, reg_fe_b_x), 
          omit.coef = "time|treated", digits=3, 
          include.rsquared = FALSE, include.adjrs = FALSE, include.rmse = FALSE,
          custom.model.names = c("OLS", "FE treated", "FE unit", "OLS x", "FE treated x", "FE unit x"))
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.