Diferencia en diferencias con datos de panel de nivel individual

11

¿Cuál es la forma correcta de especificar un modelo de diferencia en diferencia con datos de panel de nivel individual?

Aquí está la configuración: suponga que tengo datos de panel de nivel individual incrustados en ciudades durante varios años y el tratamiento varía según el nivel de año de la ciudad. Formalmente, vamos será el resultado para el individuo en la ciudad de y el año y sea un maniquí de si la afectada ciudad de intervención en el año . Un estimador DiD típico como el descrito en Bertrand et al (2004, p. 250) se basa en un modelo OLS simple con términos de efectos fijos para ciudad y año: i s t D s t s tyististDstst

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

¿Pero ese estimador ignora la estructura del panel de nivel individual (es decir, múltiples observaciones para cada individuo dentro de las ciudades)? ¿Tiene sentido ampliar este modelo con un término de efecto fijo de nivel individual ? Muchas aplicaciones DiD usan datos de sección transversal repetidos sin los datos del panel de nivel individual.Si


Bertrand, Marianne, Esther Duflo y Sendhil Mullainathan. 2004. "¿Cuánto debemos confiar en las estimaciones de diferencias en diferencias?" Quarterly Journal of Economics 119 (1): 249–75.

Greg
fuente
Si desea capturar los efectos de las variables ficticias de la entidad, ¿por qué no hacer un modelo de efectos fijos? DID es equivalente a FE con 2 períodos de tiempo, por lo que incluir dummies y luego hacer DID provocaría su abandono.
VCG
Corríjame si estoy equivocado pero veo dos diferencias: a) un modelo de fe usaría una comparación dentro de la unidad para estimar el efecto (por ejemplo, ¿Es el ingreso más alto o más bajo después de un determinado evento de la vida)? La idea de un enfoque DiD es utilizar otras observaciones como la tendencia de control para capturar lo que habría sucedido sin el tratamiento. b) DiD se enfoca en un tratamiento a nivel grupal y no individual. Ahora la pregunta es qué sucede si solo agrego un término de nivel individual fe a la ecuación en mi ejemplo. ¿Utiliza el control obs como tendencia de control? Sin embargo, todos los obs de control no varían en el tratamiento ...
Greg

Respuestas:

11

Una buena característica de la diferencia en diferencias (DiD) es que realmente no necesita datos del panel para ello. Dado que el tratamiento ocurre en algún tipo de nivel de agregación (en las ciudades de su caso), solo necesita tomar muestras de individuos al azar de las ciudades antes y después del tratamiento. Esto le permite estimar y obtener el efecto causal del tratamiento como la diferencia de resultado post-pre esperada para el tratado menos la diferencia de resultado post-pre esperada para el control.

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

Hay un caso en el que las personas usan efectos fijos individuales en lugar de un indicador de tratamiento y es cuando no tenemos un nivel de agregación bien definido en el que se produce el tratamiento. En ese caso, usted estimaría donde es un indicador del período posterior al tratamiento para las personas que recibió el tratamiento (por ejemplo, un programa de mercado laboral que ocurre en todo el lugar). Para obtener más información sobre esto, vea estas notas de la conferencia de Steve Pischke.

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

En su entorno, agregar efectos fijos individuales no debería cambiar nada con respecto a las estimaciones puntuales. El indicador de tratamiento solo será absorbido por los efectos fijos individuales. Sin embargo, estos efectos fijos pueden absorber parte de la varianza residual y, por lo tanto, reducir potencialmente el error estándar de su coeficiente DiD.Ag

Aquí hay un ejemplo de código que muestra que este es el caso. Yo uso Stata pero puedes replicar esto en el paquete estadístico que elijas. Los "individuos" aquí son en realidad países, pero todavía están agrupados de acuerdo con algún indicador de tratamiento.

* 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
-------------+----------------------------------------------------------------

Entonces, verá que el coeficiente DiD permanece igual cuando se incluyen los efectos fijos individuales ( areges uno de los comandos de estimación de efectos fijos disponibles en Stata). Los errores estándar son ligeramente más estrictos y nuestro indicador de tratamiento original fue absorbido por los efectos fijos individuales y, por lo tanto, disminuyó en la regresión.

En respuesta al comentario
, mencioné el ejemplo de Pischke para mostrar cuándo las personas usan efectos fijos individuales en lugar de un indicador de grupo de tratamiento. Su configuración tiene una estructura de grupo bien definida, por lo que la forma en que ha escrito su modelo está perfectamente bien. Los errores estándar deben agruparse a nivel de ciudad, es decir, el nivel de agregación en el que se produce el tratamiento (no lo he hecho en el código de ejemplo, pero en la configuración de DiD los errores estándar deben corregirse como lo demuestra el artículo de Bertrand et al. )

En cuanto a los motores, no tienen mucho que jugar aquí. El indicador de tratamiento es igual a 1 para las personas que viven en una ciudad tratada en el período posterior al tratamiento . Para calcular el coeficiente DiD, en realidad solo necesitamos calcular cuatro expectativas condicionales, a saber, 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)]

Entonces, si tiene 4 períodos de postratamiento para una persona que vive en una ciudad tratada durante los primeros dos, y luego se muda a una ciudad de control durante los dos períodos restantes, las primeras dos de esas observaciones se usarán en el cálculo de y los dos últimos en . Para aclarar por qué la identificación proviene de las diferencias de grupo a lo largo del tiempo y no de los motores, puede visualizar esto con un gráfico simple. Suponga que el cambio en el resultado es realmente solo por el tratamiento y que tiene un efecto contemporáneo. Si tenemos un individuo que vive en una ciudad tratada después de que comienza el tratamiento pero luego se muda a una ciudad de control, su resultado debería volver a ser lo que era antes de que fueran tratados. Esto se muestra en el gráfico estilizado a continuación.E ( y i s t | s = 0 , t = 1 )E(yist|s=1,t=1)E(yist|s=0,t=1)

ingrese la descripción de la imagen aquí

Sin embargo, es posible que aún desee pensar en los motores por otras razones. Por ejemplo, si el tratamiento tiene un efecto duradero (es decir, aún afecta el resultado aunque el individuo se haya movido)

Andy
fuente
2
Buena respuesta. ¿Recomendaría también agrupar los errores a nivel de ciudad aquí?
Dimitriy V. Masterov
Gran respuesta, gracias. Su eq es eq 3 de la página 12, ¿verdad? Pischke presenta esta parte con "Sin embargo, a veces no hay unidades naturales donde se asigna el tratamiento. En cambio, algunas personas reciben tratamiento en un momento determinado y otras no". Pero ese no es realmente el caso. El tratamiento ES en el nivel de la ciudad (o del grupo) en mi entorno + tengo datos del panel. Todavía podría ser el modelo correcto, tal vez con se agrupados. ¿Qué dirías? ¿Qué pasa si las personas pueden moverse entre ciudades durante años? En ese caso, el coeficiente para 'tratado' se identificaría en función de los motores, ¿verdad?
Greg
@ DimitriyV.Masterov La recomendación de Bertrand et al sería agrupar los errores estándar en el nivel de grupo en el que ocurre el tratamiento. Alternativamente, podría usar un bloque de arranque con reemplazo, aunque también sería a nivel de la ciudad nuevamente.
Andy
@greg Edité la respuesta para responder con un poco más de detalle a tu comentario. Espero que esto ayude :-)
Andy
¿Hay alguna diferencia si usamos períodos múltiples? el ficticio D_i_t será cero para todos los períodos antes del evento y de todos modos será uno para todos los períodos posteriores al evento. ¿No sería lo mismo si solo usara dos períodos? @Andy
Jinhua Wang
1

La respuesta corta es que el uso del efecto fijo en la unidad o en el nivel del grupo tratado no cambia la estimación, solo la inferencia. Por lo general, el uso del efecto fijo de la unidad absorberá más variación y, por lo tanto, tendrá errores estándar más pequeños.

Si las unidades están en el mismo grupo agregado no cambia este resultado (solo cambia la forma en que define el nivel de grupo tratado y el hecho de que necesita un panel en lugar de secciones transversales repetidas).

Sin embargo, tenga en cuenta que la equivalencia solo se cumple cuando no hay una covariable X. Tan pronto como tenga X, los resultados son diferentes si usa efectos fijos de unidad o de grupo.

El siguiente ejemplo compara los 3 estimadores, en dos casos, con y sin X. Los estimadores son:

  1. OLS
  2. FE con efecto fijo grupal (tratado)
  3. FE con unidad de efecto fijo

#>              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

Código:

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"))
Matifou
fuente