Perbedaan-dalam-perbedaan dengan data panel level individu

11

Apa cara yang benar untuk menentukan perbedaan dalam model perbedaan dengan data panel tingkat individu?

Ini adalah setup: Asumsikan bahwa saya memiliki data panel tingkat individu yang tertanam di kota selama beberapa tahun dan perawatan bervariasi pada tingkat kota-tahun. Secara formal, biarkan menjadi hasil bagi individu di kota dan tahun dan menjadi dummy untuk apakah intervensi yang terkena kota pada tahun . Estimator DiD tipikal seperti yang diuraikan dalam Bertrand et al (2004, hal. 250) didasarkan pada model OLS sederhana dengan ketentuan efek tetap untuk kota dan tahun:yististDstst

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

Tetapi apakah estimator itu mengabaikan struktur panel tingkat individu (mis. Pengamatan ganda untuk setiap individu dalam kota)? Apakah masuk akal untuk memperluas model ini dengan istilah efek tetap tingkat individu ? Banyak aplikasi DID menggunakan data penampang berulang tanpa data panel level individu.Si


Bertrand, Marianne, Esther Duflo, dan Sendhil Mullainathan. 2004. "Berapa Banyak Kita Harus Percayai Estimasi Perbedaan-dalam-Perbedaan?" Jurnal Ekonomi Triwulanan 119 (1): 249–75.

greg
sumber
Jika Anda ingin menangkap efek dari entitas boneka, mengapa tidak melakukan model efek tetap? DID setara dengan FE dengan 2 periode waktu jadi termasuk boneka dan kemudian melakukan DID akan menyebabkan mereka keluar.
VCG
Koreksi saya jika saya salah tetapi saya melihat dua perbedaan: a) model fe akan menggunakan perbandingan unit untuk memperkirakan efeknya (mis. Apakah pendapatan lebih tinggi atau lebih rendah setelah peristiwa kehidupan tertentu). Gagasan pendekatan DID adalah menggunakan pengamatan lain sebagai tren kontrol untuk menangkap apa yang akan terjadi tanpa perawatan. b) DID berfokus pada tingkat kelompok dan bukan pada perlakuan tingkat individu. Sekarang pertanyaannya adalah apa yang terjadi jika saya hanya menambahkan istilah tingkat individu ke persamaan dalam contoh saya. Apakah itu menggunakan kontrol obs sebagai tren kontrol? Semua kontrol obsesi tidak berbeda pada perawatan ...
greg

Jawaban:

11

Fitur perbedaan-dalam-perbedaan (DiD) yang bagus sebenarnya adalah Anda tidak memerlukan data panel untuk itu. Mengingat bahwa perawatan terjadi pada semacam tingkat agregasi (di kota kasus Anda), Anda hanya perlu mengambil sampel individu acak dari kota-kota sebelum dan setelah perawatan. Hal ini memungkinkan Anda untuk memperkirakan dan mendapatkan efek kausal dari perawatan sebagai perbedaan hasil pasca-perkiraan yang diharapkan untuk diperlakukan dikurangi perbedaan hasil post-pre yang diharapkan untuk kontrol.

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

Ada kasus di mana orang menggunakan efek tetap individu alih-alih indikator pengobatan dan ini adalah ketika kita tidak memiliki tingkat agregasi yang terdefinisi dengan baik di mana pengobatan terjadi. Dalam hal ini Anda akan memperkirakan mana adalah indikator untuk periode pasca perawatan untuk individu yang menerima perawatan (misalnya, program pasar kerja yang terjadi di semua tempat). Untuk informasi lebih lanjut tentang ini, lihat catatan kuliah ini oleh Steve Pischke.

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

Di pengaturan Anda, menambahkan efek tetap individual tidak boleh mengubah apa pun sehubungan dengan perkiraan titik. Indikator pengobatan hanya akan diserap oleh efek tetap individu. Namun, efek-efek tetap ini mungkin menyerap sebagian dari varians residual dan karenanya berpotensi mengurangi kesalahan standar dari koefisien DiD Anda.Ag

Berikut adalah contoh kode yang menunjukkan bahwa ini adalah masalahnya. Saya menggunakan Stata tetapi Anda dapat meniru ini dalam paket statistik pilihan Anda. "Individu" di sini sebenarnya adalah negara tetapi mereka masih dikelompokkan berdasarkan beberapa indikator perawatan.

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

Jadi Anda melihat bahwa koefisien DiD tetap sama ketika masing-masing efek tetap dimasukkan ( aregadalah salah satu perintah estimasi efek tetap yang tersedia di Stata). Kesalahan standar sedikit lebih ketat dan indikator pengobatan asli kami diserap oleh efek tetap individu dan oleh karena itu menurun dalam regresi.

Menanggapi komentar yang
saya sebutkan contoh Pischke untuk menunjukkan ketika orang menggunakan efek tetap individu daripada indikator kelompok pengobatan. Pengaturan Anda memiliki struktur grup yang terdefinisi dengan baik sehingga cara Anda menulis model Anda baik-baik saja. Kesalahan standar harus dikelompokkan di tingkat kota, yaitu tingkat agregasi di mana perlakuan terjadi (saya belum melakukan ini dalam kode contoh tetapi dalam pengaturan DID kesalahan standar perlu diperbaiki seperti yang ditunjukkan oleh kertas Bertrand et al. ).

Mengenai penggerak, mereka tidak memiliki banyak peran untuk dimainkan di sini. Perlakuan Indikator adalah sama dengan 1 untuk orang-orang yang tinggal di kota dirawat di pos-pengolahan periode . Untuk menghitung koefisien DiD, kita sebenarnya hanya perlu menghitung empat harapan bersyarat, yaitu 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)]

Jadi jika Anda memiliki 4 periode pasca perawatan untuk seorang individu yang tinggal di kota yang dirawat untuk dua yang pertama, dan kemudian pindah ke kota kontrol untuk dua periode yang tersisa, dua pengamatan pertama akan digunakan dalam perhitungan dan dua terakhir di . Untuk memperjelas mengapa identifikasi berasal dari perbedaan kelompok dari waktu ke waktu dan bukan dari penggerak Anda dapat memvisualisasikan ini dengan grafik sederhana. Misalkan perubahan dalam hasil benar-benar hanya karena perawatan dan bahwa ia memiliki efek kontemporer. Jika kita memiliki seseorang yang tinggal di kota yang dirawat setelah perawatan dimulai tetapi kemudian pindah ke kota kontrol, hasilnya harus kembali ke keadaan sebelum mereka dirawat. Ini ditunjukkan dalam grafik bergaya di bawah ini.E(yist|s=1,t=1)E(yist|s=0,t=1)

masukkan deskripsi gambar di sini

Anda mungkin masih ingin berpikir tentang penggerak untuk alasan lain. Misalnya, jika pengobatan memiliki efek yang bertahan lama (yaitu masih mempengaruhi hasil meskipun individu telah pindah)

Andy
sumber
2
Jawaban bagus. Apakah Anda juga merekomendasikan pengelompokan kesalahan di tingkat kota di sini?
Dimitriy V. Masterov
Jawaban yang bagus, terima kasih. Persamaan Anda adalah persamaan 3 dari halaman 12, bukan? Pischke memperkenalkan bagian ini dengan "Namun, kadang-kadang tidak ada unit alami di mana perawatan diberikan. Sebaliknya, beberapa orang diperlakukan pada titik waktu tertentu, dan yang lain tidak". Tapi itu tidak benar-benar terjadi. Perlakuan IS pada tingkat kota (atau kelompok apa pun) di pengaturan saya + saya punya data panel. Mungkin masih model yang tepat mungkin dengan se cluster. Apa yang akan Anda sampaikan? Bagaimana jika individu dapat berpindah antar kota selama bertahun-tahun? Dalam hal itu, koefisien untuk 'diperlakukan' akan diidentifikasi berdasarkan penggerak, kan?
greg
@ DimitriyV.Masterov Rekomendasi oleh Bertrand et al adalah untuk mengelompokkan kesalahan standar di tingkat kelompok di mana perawatan terjadi. Atau Anda dapat menggunakan blok bootstrap dengan penggantian meskipun juga yang akan berada di tingkat kota lagi.
Andy
@reg Saya mengedit jawaban untuk merespons dengan sedikit lebih detail pada komentar Anda. Saya harap ini membantu :-)
Andy
apakah ada bedanya jika kita menggunakan beberapa periode? D_i_t dummy akan menjadi nol untuk semua periode sebelum acara dan akan menjadi satu untuk semua periode setelah acara. bukankah akan sama jika saya hanya menggunakan dua periode? @Andy
Jinhua Wang
1

Jawaban singkatnya adalah bahwa menggunakan efek tetap pada unit atau pada tingkat grup yang diperlakukan tidak mengubah estimasi, hanya inferensi. Biasanya, menggunakan unit fixed-effect akan menyerap lebih banyak variasi, dan karenanya Anda akan memiliki kesalahan standar yang lebih kecil.

Apakah unit berada di grup agregat yang sama tidak mengubah hasil ini (itu hanya mengubah cara Anda menentukan level grup yang Anda rawat , dan fakta bahwa Anda memerlukan panel alih-alih bagian-silang berulang).

Perhatikan bahwa kesetaraan hanya berlaku ketika tidak ada kovariat X. Segera setelah Anda memiliki Xs, hasilnya berbeda apakah Anda menggunakan efek tetap unit atau grup.

Contoh di bawah membandingkan 3 estimator, dalam dua kasus, dengan dan tanpa X. Estimator adalah:

  1. OLS
  2. FE dengan efek tetap kelompok (diobati)
  3. FE dengan efek satuan tetap

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

Kode:

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
sumber