Разница в различиях с данными отдельных уровней


11

Как правильно указать разницу в модели различий с данными панели отдельных уровней?

Вот установка: Предположим, что у меня есть данные панели индивидуального уровня, встроенные в города за несколько лет, и обработка варьируется в зависимости от года. Формально, пусть будет результатом для индивида в городе и года а будет фиктивной для того, повлияло ли вмешательство на город в году . Типичная оценка DiD, такая как приведенная в работе Bertrand et al. (2004, p. 250), основана на простой модели OLS с фиксированными условиями воздействия для города и года: я ы т Д ы т ы тYяsTяsTDsTsT

YяsTзнак равноAs+ВT+сИксяsT+βDsT+εяsT

Но игнорирует ли этот оценщик структуру панели на индивидуальном уровне (т. Е. Множественные наблюдения для каждого человека в городах)? Имеет ли смысл расширять эту модель термином фиксированного эффекта индивидуального уровня ? Многие приложения DiD используют повторяющиеся данные поперечного сечения без данных панели индивидуального уровня.Sя


Бертран, Марианна, Эстер Дюфло и Сендхил Малленатан. 2004. «Сколько мы должны доверять оценкам различия в различиях?» Quarterly Journal of Economics 119 (1): 249–75.


Если вы хотите захватить эффекты манекенов, почему бы не сделать модель с фиксированными эффектами? DID эквивалентен FE с 2-мя периодами времени, поэтому включение манекенов и последующее выполнение DID приведут к их выпадению.
VCG

Поправьте меня, если я ошибаюсь, но я вижу два различия: a) модель fe будет использовать сравнение внутри единицы для оценки эффекта (например, выше или ниже доход после определенного жизненного события). Идея подхода DiD состоит в том, чтобы использовать другие наблюдения в качестве контрольной тенденции, чтобы отразить то, что произошло бы без обработки. б) DiD фокусируется на групповом уровне, а не на индивидуальном уровне лечения. Теперь вопрос в том, что произойдет, если я просто добавлю отдельный член, например, в уравнение в моем примере. Использует ли это контрольные объекты в качестве контрольной тенденции? Все контрольные операции не меняются в зависимости от лечения ...
Грэг,

Ответы:


11

Приятной особенностью различия в различиях (DiD) является то, что вам не нужны данные панели. Учитывая, что лечение происходит на некотором уровне агрегации (в вашем случае города), вам нужно только отобрать случайных людей из городов до и после лечения. Это позволяет оценить и получить причинно-следственный эффект от обработки как ожидаемую разницу после исхода для лечили за вычетом ожидаемой разницы в исходах после контрольного теста.

YяsTзнак равноAграмм+ВT+βDsT+сИксяsT+εяsT

Существует случай, когда люди используют индивидуальные фиксированные эффекты вместо показателя лечения, и это когда у нас нет четко определенного уровня агрегации, при котором происходит лечение. В этом случае вы бы оценили где - показатель периода после лечения для лиц, которые получил лечение (например, программа рынка труда, которая происходит повсюду). Для получения дополнительной информации об этом см. Эти лекционные заметки Стива Пишке. D i t

YяTзнак равноαя+ВT+βDяT+сИксяT+εяT
DяT

В ваших настройках добавление отдельных фиксированных эффектов не должно ничего менять по отношению к точечным оценкам. Индикатор лечения будет просто поглощен отдельными фиксированными эффектами. Однако эти фиксированные эффекты могут поглотить некоторые остаточные отклонения и, следовательно, потенциально уменьшить стандартную ошибку вашего коэффициента DiD.Aграмм

Вот пример кода, который показывает, что это так. Я использую 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, нам просто нужно вычислить четыре условных ожидания, а именно: DsTsT

сзнак равно[Е(YяsT|sзнак равно1,Tзнак равно1)-Е(YяsT|sзнак равно1,Tзнак равно0)]-[Е(YяsT|sзнак равно0,Tзнак равно1)-Е(YяsT|sзнак равно0,Tзнак равно0)]

Таким образом, если у вас есть 4 периода после лечения для человека, который живет в обработанном городе в течение первых двух лет, а затем переезжает в контрольный город в течение оставшихся двух периодов, первые два из этих наблюдений будут использоваться при вычислении и последние два в . Чтобы было понятно, почему идентификация происходит из-за различий в группах во времени, а не из движителей, вы можете визуализировать это с помощью простого графика. Предположим, что изменение результата действительно только из-за лечения и что оно оказывает одновременный эффект. Если у нас есть человек, который живет в обработанном городе после начала лечения, но затем переезжает в контрольный город, его результаты должны вернуться к тому, что было до лечения. Это показано на стилизованном графике ниже.Е(YяsT|sзнак равно1,Tзнак равно1)Е(YяsT|sзнак равно0,Tзнак равно1)

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

Вы все еще можете подумать о грузчиках по другим причинам. Например, если лечение оказывает длительный эффект (т.е. оно все еще влияет на результат, даже если человек переехал)


2
Хороший ответ. Вы также порекомендовали бы здесь кластеризовать ошибки на уровне города?
Дмитрий Васильевич Мастеров

Отличный ответ, спасибо. Ваш эквалайзер равен 3 со страницы 12, верно? Пишке вводит эту часть словами «Однако иногда не существует естественных единиц, на которые назначается лечение. Вместо этого некоторые люди получают лечение в определенный момент времени, а другие - нет». Но это не совсем так. Лечение находится на уровне города (или любой другой группы) в моей настройке + у меня есть данные панели. Это все еще может быть правильная модель, возможно, с кластеризованным SE. Что бы вы сказали? Что если люди могут перемещаться между городами годами? В этом случае основание для «обработанных» будет определено на основе движителей, верно?
Грэг

@ DimitriyV.Masterov Рекомендация Bertrand et al. Заключалась бы в объединении стандартных ошибок на уровне группы, на которой происходит лечение. В качестве альтернативы вы можете использовать блочную загрузку с заменой, хотя это также будет снова на уровне города.
Энди

@greg Я отредактировал ответ, чтобы ответить чуть более подробно на ваш комментарий. Я надеюсь, что это поможет :-)
Энди

имеет ли значение, если мы используем несколько периодов? фиктивная D_i_t будет равна нулю для всех периодов до события и будет равна единице для всех периодов после события в любом случае. не было бы то же самое, если бы я просто использовал два периода? @Анди
Цзиньхуа Ван,

1

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

То, находятся ли единицы в одной и той же агрегированной группе, не меняет этого результата (это только меняет способ определения уровня обработанной группы и тот факт, что вам нужна панель вместо повторяющихся сечений).

Однако обратите внимание, что эквивалентность имеет место только тогда, когда ковариата X отсутствует. Как только у вас есть X, результаты будут разными, независимо от того, используете ли вы единичные или групповые фиксированные эффекты.

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

  1. МНК
  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.