Unterschied in Unterschieden zu einzelnen Level-Panel-Daten


11

Was ist der richtige Weg, um einen Unterschied im Differenzmodell mit individuellen Level-Panel-Daten anzugeben?

Hier ist das Setup: Angenommen, ich habe Panel-Daten auf Einzelebene, die seit mehreren Jahren in Städten eingebettet sind, und die Behandlung variiert je nach Stadtjahr. Formal lassen das Ergebnis für einzelne sein i in der Stadt s und Jahr t und D s t eine Attrappe sein , ob die Intervention betroffenen Stadt s in Jahr t . Ein typischer DiD-Schätzer wie der von Bertrand et al. (2004, S. 250) beschriebene basiert auf einem einfachen OLS-Modell mit festen Effektbedingungen für Stadt und Jahr:yichstichstD.stst

yichst=EINs+B.t+cX.ichst+βD.st+ϵichst

Aber ignoriert dieser Schätzer die Panelstruktur auf Einzelebene (dh mehrere Beobachtungen für jedes Individuum innerhalb der Städte)? Ist es sinnvoll, dieses Modell um einen festen Effektterm individueller Ebene zu erweitern ? Viele DiD-Anwendungen verwenden wiederholte Querschnittsdaten ohne die Panel-Daten auf Einzelebene.S.ich


Bertrand, Marianne, Esther Duflo und Sendhil Mullainathan. 2004. „Wie sehr sollten wir Differenzen-in-Differenzen-Schätzungen vertrauen?“ Quarterly Journal of Economics 119 (1): 249–75.


Wenn Sie die Effekte der Entitätsattrappen erfassen möchten, können Sie ein Modell mit festen Effekten erstellen. DID entspricht FE mit 2 Zeiträumen. Wenn Sie also Dummies einbeziehen und dann DID ausführen, fallen diese aus.
VCG

Korrigieren Sie mich, wenn ich falsch liege, aber ich sehe zwei Unterschiede: a) Ein zB Modell würde einen Vergleich innerhalb einer Einheit verwenden, um den Effekt abzuschätzen (z. B. Ist das Einkommen nach einem bestimmten Lebensereignis höher oder niedriger). Die Idee eines DiD-Ansatzes besteht darin, andere Beobachtungen als Kontrolltrend zu verwenden, um zu erfassen, was ohne die Behandlung geschehen wäre. b) DiD konzentriert sich auf eine Behandlung auf Gruppenebene und nicht auf eine Behandlung auf Einzelebene. Die Frage ist nun, was passiert, wenn ich der Gleichung in meinem Beispiel nur einen einzelnen Level-zB-Term hinzufüge. Verwendet das die Kontrollbeobachtung als Kontrolltrend? Alle Kontrollbeobachtungen variieren jedoch nicht in Bezug auf die Behandlung ...
Greg

Antworten:


11

Ein nettes Merkmal von Difference-in-Differences (DiD) ist, dass Sie keine Paneldaten dafür benötigen. Da die Behandlung auf einer bestimmten Aggregationsebene erfolgt (in Ihren Fallstädten), müssen Sie vor und nach der Behandlung nur zufällige Personen aus den Städten befragen. Dies ermöglicht es Ihnen, y i s t = A g + B t + β D s t + c X i s t + ϵ i s t zu schätzen

yichst=EING+B.t+βD.st+cX.ichst+ϵichst
und erhalten Sie den kausalen Effekt der Behandlung als den erwarteten Unterschied nach dem Ergebnis für die behandelte Person abzüglich des erwarteten Unterschieds nach dem Ergebnis für die Kontrolle.

yicht=αich+B.t+βD.icht+cX.icht+ϵicht
D.icht von Steve Pischke.

EING

Hier ist ein Codebeispiel, das zeigt, dass dies der Fall ist. Ich verwende Stata, aber Sie können dies im Statistikpaket Ihrer Wahl replizieren. Die "Individuen" hier sind eigentlich Länder, aber sie sind immer noch nach einem Behandlungsindikator gruppiert.

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

Sie sehen also, dass der DiD-Koeffizient gleich bleibt, wenn die einzelnen festen Effekte enthalten sind ( aregist einer der verfügbaren Schätzbefehle für feste Effekte in Stata). Die Standardfehler sind etwas enger und unser ursprünglicher Behandlungsindikator wurde von den einzelnen festen Effekten absorbiert und fiel daher in die Regression.

Als Antwort auf den Kommentar
erwähnte ich das Pischke-Beispiel, um zu zeigen, wann Menschen einzelne feste Effekte anstelle eines Behandlungsgruppenindikators verwenden. Ihre Einstellung hat eine genau definierte Gruppenstruktur, sodass die Art und Weise, wie Sie Ihr Modell geschrieben haben, vollkommen in Ordnung ist. Standardfehler sollten auf Stadtebene gruppiert werden, dh auf der Aggregationsebene, auf der die Behandlung erfolgt (ich habe dies im Beispielcode nicht getan, aber in den DiD-Einstellungen müssen die Standardfehler korrigiert werden, wie in der Veröffentlichung von Bertrand et al. Gezeigt ).

D.stst

c=[E.(yichst|s=1,t=1)- -E.(yichst|s=1,t=0)]]- -[E.(yichst|s=0,t=1)- -E.(yichst|s=0,t=0)]]

E.(yichst|s=1,t=1)E.(yichst|s=0,t=1). Um zu verdeutlichen, warum die Identifizierung von den Gruppenunterschieden im Zeitverlauf und nicht von den Bewegern herrührt, können Sie dies mit einem einfachen Diagramm visualisieren. Angenommen, die Änderung des Ergebnisses ist wirklich nur auf die Behandlung zurückzuführen und hat eine gleichzeitige Wirkung. Wenn wir eine Person haben, die nach Beginn der Behandlung in einer behandelten Stadt lebt und dann in eine Kontrollstadt zieht, sollte ihr Ergebnis auf das zurückgehen, was es vor der Behandlung war. Dies ist in der folgenden stilisierten Grafik dargestellt.

Geben Sie hier die Bildbeschreibung ein

Vielleicht möchten Sie aus anderen Gründen immer noch an Mover denken. Zum Beispiel, wenn die Behandlung eine dauerhafte Wirkung hat (dh sie beeinflusst immer noch das Ergebnis, obwohl sich die Person bewegt hat)


2
Gute Antwort. Würden Sie hier auch empfehlen, die Fehler auf Stadtebene zu gruppieren?
Dimitriy V. Masterov

Tolle Antwort, danke. Ihre Gleichung ist Gleichung 3 von Seite 12, richtig? Pischke führt diesen Teil mit "Manchmal gibt es jedoch keine natürlichen Einheiten, in denen die Behandlung zugewiesen wird. Stattdessen werden einige Personen zu einem bestimmten Zeitpunkt behandelt, andere nicht". Das ist aber nicht wirklich der Fall. Die Behandlung ist auf der Ebene der Stadt (oder einer anderen Gruppe) in meiner Einstellung + Ich habe Paneldaten. Es könnte immer noch das richtige Modell sein, vielleicht mit Clustered Se. Was würden Sie sagen? Was ist, wenn sich Einzelpersonen über Jahre hinweg zwischen Städten bewegen können? In diesem Fall würde der Coef für "behandelt" anhand der Mover identifiziert, oder?
Greg

@ DimitriyV.Masterov Die Empfehlung von Bertrand et al. Wäre, die Standardfehler auf Gruppenebene zu gruppieren, auf der die Behandlung stattfindet. Alternativ können Sie auch einen Block-Bootstrap mit Ersatz verwenden, der sich jedoch wieder auf Stadtebene befindet.
Andy

@greg Ich habe die Antwort bearbeitet, um auf Ihren Kommentar etwas detaillierter zu antworten. Ich hoffe das hilft :-)
Andy

Macht es einen Unterschied, wenn wir mehrere Perioden verwenden? Der Dummy D_i_t ist für alle Zeiträume vor dem Ereignis Null und für alle Zeiträume nach dem Ereignis sowieso Eins. Wäre es nicht dasselbe, wenn ich nur zwei Perioden verwenden würde? @ Andy
Jinhua Wang

1

Die kurze Antwort lautet, dass die Verwendung eines festen Effekts auf der Ebene der Einheit oder der behandelten Gruppe die Schätzung nicht ändert, sondern nur die Schlussfolgerung. In der Regel absorbiert die Verwendung eines Einheitseffekts mehr Variationen, und daher treten kleinere Standardfehler auf.

Ob sich die Einheiten in derselben aggregierten Gruppe befinden, ändert nichts an diesem Ergebnis (es ändert nur die Art und Weise, wie Sie Ihre behandelte Gruppenebene definieren , und die Tatsache, dass Sie anstelle wiederholter Querschnitte ein Bedienfeld benötigen).

Beachten Sie jedoch, dass die Äquivalenz nur gilt, wenn keine Kovariate X vorhanden ist. Sobald Sie X haben, sind die Ergebnisse unterschiedlich, unabhängig davon, ob Sie feste Effekte für Einheiten oder Gruppen verwenden.

Das folgende Beispiel vergleicht die 3 Schätzer in zwei Fällen mit und ohne X. Schätzer sind:

  1. OLS
  2. FE mit (behandelter) gruppenfester Wirkung
  3. FE mit einheitlichem Effekt

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

Code:

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"))
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.