ความแตกต่างในความแตกต่างกับข้อมูลแผงระดับบุคคล


11

วิธีที่ถูกต้องในการระบุความแตกต่างในรูปแบบที่แตกต่างกับข้อมูลแผงระดับบุคคลคืออะไร?

นี่คือการตั้งค่า: สมมติว่าฉันมีข้อมูลแผงระดับบุคคลที่ฝังอยู่ในเมืองเป็นเวลาหลายปีและการรักษาแตกต่างกันไปในระดับเมืองปี อย่างเป็นทางการให้เป็นผลสำหรับแต่ละในเมืองและในปีและเป็นหุ่นสำหรับว่าแทรกแซงได้รับผลกระทบเมืองในปีทีตัวประมาณ DiD ทั่วไปเช่นที่ระบุไว้ใน Bertrand et al (2004, p. 250) ขึ้นอยู่กับแบบจำลอง OLS แบบง่าย ๆ ที่มีคำที่มีผลคงที่สำหรับเมืองและปี:ฉันs T D s T s TYผมsเสื้อผมsเสื้อDsเสื้อsเสื้อ

Yผมsเสื้อ=As+Bเสื้อ+Xผมsเสื้อ+βDsเสื้อ+εผมsเสื้อ

แต่ผู้ประมาณนั้นเพิกเฉยต่อโครงสร้างพาเนลระดับบุคคล (เช่นการสังเกตหลายอย่างสำหรับแต่ละคนในเมือง) หรือไม่? มันสมเหตุสมผลไหมที่จะขยายโมเดลนี้ด้วยเอฟเฟกต์คำคงที่แต่ละระดับ ? แอปพลิเคชั่น DiD หลายตัวใช้ข้อมูลข้ามส่วนซ้ำโดยไม่ใช้ข้อมูลพาเนลระดับบุคคลSผม


Bertrand, Marianne, Esther Duflo และ Sendhil Mullainathan 2547 "เราควรเชื่อใจความแตกต่างในการประมาณการต่างกันมากแค่ไหน" วารสารเศรษฐศาสตร์รายไตรมาส 119 (1): 249–75


หากคุณต้องการจับเอฟเฟกต์ของหุ่นเอนทิตี้ทำไมไม่ทำโมเดลเอฟเฟกต์ถาวร? DID เทียบเท่ากับ FE ด้วยช่วงเวลา 2 ครั้งดังนั้นการรวม Dummies และการทำ DID จะทำให้พวกเขาเลื่อนออก
VCG

แก้ไขให้ฉันถ้าฉันผิด แต่ฉันเห็นความแตกต่างสองประการ: a) แบบจำลอง fe จะใช้การเปรียบเทียบภายในหน่วยเพื่อประเมินผลกระทบ (เช่นรายได้สูงขึ้นหรือต่ำลงหลังจากเหตุการณ์ชีวิตที่แน่นอน) แนวคิดของวิธีการ DiD คือการใช้การสังเกตอื่น ๆ เป็นแนวโน้มการควบคุมเพื่อจับภาพสิ่งที่จะเกิดขึ้นโดยไม่ต้องรักษา b) DiD มุ่งเน้นไปที่ระดับกลุ่มและไม่ใช่การรักษาในระดับบุคคล ตอนนี้คำถามคือจะเกิดอะไรขึ้นถ้าฉันแค่เพิ่มเทอมแต่ละระดับในสมการในตัวอย่างของฉัน นั่นใช้การควบคุม obs เป็นแนวโน้มการควบคุมหรือไม่? ทั้งหมด OBS ควบคุมไม่แตกต่างกันในการรักษา แต่ ...
เกร็ก

คำตอบ:


11

คุณลักษณะที่ดีของความแตกต่างความแตกต่าง (DiD) คือจริง ๆ แล้วว่าคุณไม่จำเป็นต้องใช้ข้อมูลพาเนล เมื่อการรักษาเกิดขึ้นในระดับของการรวมกลุ่ม (ในเมืองกรณีของคุณ) คุณจะต้องสุ่มตัวอย่างบุคคลจากเมืองก่อนและหลังการรักษา สิ่งนี้ช่วยให้คุณสามารถประมาณ และได้รับผลกระทบเชิงสาเหตุของการรักษาเนื่องจากความแตกต่างของผลลัพธ์หลังการคาดการณ์ล่วงหน้าสำหรับ รับการรักษาลบความแตกต่างผลลัพธ์ที่คาดไว้หลังการควบคุม

Yผมsเสื้อ=Aก.+Bเสื้อ+βDsเสื้อ+Xผมsเสื้อ+εผมsเสื้อ

มีบางกรณีที่ผู้คนใช้เอฟเฟกต์คงที่แต่ละตัวแทนที่จะเป็นตัวบ่งชี้การรักษาและนี่คือเมื่อเราไม่มีระดับการรวมที่กำหนดไว้อย่างดีซึ่งการรักษาเกิดขึ้น ในกรณีนั้นคุณจะประมาณ โดยที่เป็นตัวบ่งชี้ระยะเวลาการรักษาหลังการรักษาสำหรับบุคคลที่ ได้รับการรักษา (ตัวอย่างเช่นโครงการตลาดงานที่เกิดขึ้นทุกที่) สำหรับข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้โปรดดูบันทึกการบรรยายเหล่านี้โดย Steve Pischke D ฉันที

Yผมเสื้อ=αผม+Bเสื้อ+βDผมเสื้อ+Xผมเสื้อ+εผมเสื้อ
Dผมเสื้อ

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) ข้อผิดพลาดมาตรฐานจะเข้มงวดขึ้นเล็กน้อยและตัวบ่งชี้การรักษาดั้งเดิมของเราถูกดูดซับโดยผลกระทบคงที่ของแต่ละบุคคลและดังนั้นจึงลดลงในการถดถอย

ในการตอบกลับความคิดเห็น
ฉันได้กล่าวถึงตัวอย่างของ Pischke ที่จะแสดงเมื่อผู้คนใช้เอฟเฟกต์คงที่แต่ละตัวแทนที่จะเป็นกลุ่มตัวชี้วัด การตั้งค่าของคุณมีโครงสร้างกลุ่มที่กำหนดไว้อย่างดีดังนั้นวิธีที่คุณเขียนแบบจำลองของคุณนั้นดีมาก ข้อผิดพลาดมาตรฐานควรทำคลัสเตอร์ที่ระดับเมืองเช่นระดับของการรวมที่การรักษาเกิดขึ้น (ฉันไม่ได้ทำสิ่งนี้ในรหัสตัวอย่าง แต่ในการตั้งค่า DiD ข้อผิดพลาดมาตรฐานจำเป็นต้องได้รับการแก้ไขตามที่แสดงโดย Bertrand et al )

Dsเสื้อsเสื้อ

=[E(Yผมsเสื้อ|s=1,เสื้อ=1)-E(Yผมsเสื้อ|s=1,เสื้อ=0)]-[E(Yผมsเสื้อ|s=0,เสื้อ=1)-E(Yผมsเสื้อ|s=0,เสื้อ=0)]

E(Yผมsเสื้อ|s=1,เสื้อ=1)E(Yผมsเสื้อ|s=0,เสื้อ=1). เพื่อให้ชัดเจนว่าเหตุใดการระบุจึงมาจากความแตกต่างของกลุ่มเมื่อเวลาผ่านไปไม่ใช่จากตัวย้ายคุณสามารถเห็นภาพนี้ด้วยกราฟอย่างง่าย สมมติว่าการเปลี่ยนแปลงในผลลัพธ์เป็นเพียงเพราะการรักษาและมันมีผลกระทบที่เกิดขึ้นพร้อมกัน หากเรามีบุคคลที่อาศัยอยู่ในเมืองที่ได้รับการรักษาหลังจากเริ่มการรักษา แต่จากนั้นย้ายไปที่เมืองควบคุมผลลัพธ์ของพวกเขาควรกลับไปที่เดิมก่อนที่พวกเขาจะได้รับการรักษา แสดงในกราฟด้านล่าง

ป้อนคำอธิบายรูปภาพที่นี่

คุณอาจยังต้องการคิดถึงนักเคลื่อนไหวด้วยเหตุผลอื่น ๆ ตัวอย่างเช่นหากการรักษามีผลยาวนาน (เช่นมันยังคงส่งผลกระทบต่อผลแม้ว่าบุคคลได้ย้าย)


2
คำตอบที่ดี คุณจะแนะนำการจัดกลุ่มข้อผิดพลาดในระดับเมืองที่นี่หรือไม่
Dimitriy V. Masterov

คำตอบที่ดีขอบคุณ eq ของคุณคือ eq 3 จากหน้า 12 ใช่ไหม Pischke แนะนำส่วนนี้ด้วย "อย่างไรก็ตามบางครั้งไม่มีหน่วยธรรมชาติที่กำหนดการรักษาแทนบุคคลบางคนได้รับการรักษา ณ เวลาใดเวลาหนึ่งและคนอื่นไม่ได้" แต่นั่นไม่ใช่กรณี การรักษาอยู่ในระดับเมือง (หรือกลุ่มใด ๆ ) ในการตั้งค่าของฉัน + ฉันมีข้อมูลแผง มันอาจจะเป็นรูปแบบที่เหมาะสมกับกลุ่ม คุณจะว่าอย่างไร ถ้าบุคคลสามารถย้ายระหว่างเมืองในช่วงหลายปีที่ผ่านมา? ในกรณีนั้นจะมีการระบุ coef สำหรับ 'ที่ได้รับการรักษา' ตามตัวเคลื่อนย้ายใช่ไหม
greg

@ DimitriyV.Masterov คำแนะนำจาก Bertrand et al คือการจัดกลุ่มข้อผิดพลาดมาตรฐานในระดับกลุ่มที่การรักษาเกิดขึ้น อีกทางเลือกหนึ่งคือคุณสามารถใช้ bootstrap แบบ block แทนที่ด้วยแม้ว่าจะอยู่ในระดับเมืองอีกครั้ง
Andy

@ รวมฉันได้แก้ไขคำตอบเพื่อตอบรายละเอียดความคิดเห็นของคุณอีกเล็กน้อย ฉันหวังว่านี่จะช่วยได้ :-)
Andy

มันทำให้เกิดความแตกต่างถ้าเราใช้หลายช่วงเวลา? Dummy D_i_t จะเป็นศูนย์สำหรับทุกช่วงเวลาก่อนหน้ากิจกรรมและจะเป็นหนึ่งช่วงเวลาทั้งหมดหลังจากที่มีเหตุการณ์เกิดขึ้น มันจะไม่เหมือนกันหรือเปล่าถ้าฉันใช้สองช่วงเวลา? @Andy
Jinhua Wang

1

คำตอบสั้น ๆ คือการใช้เอฟเฟกต์คงที่ที่ระดับหน่วยหรือระดับกลุ่มที่ได้รับการรักษาจะไม่เปลี่ยนการประมาณค่าโดยอนุมานเท่านั้น โดยทั่วไปแล้วการใช้เอฟเฟกต์แบบคงที่จะดูดซับความหลากหลายมากขึ้นดังนั้นคุณจะมีข้อผิดพลาดมาตรฐานน้อยลง

ไม่ว่าจะเป็นหน่วยที่อยู่ในกลุ่มรวมเดียวกันจะไม่เปลี่ยนผลลัพธ์นี้ (มันจะเปลี่ยนวิธีที่คุณกำหนดระดับกลุ่มที่ได้รับการปฏิบัติของคุณและความจริงที่ว่าคุณต้องการแผงควบคุมแทนที่จะเป็นหน้าตัดซ้ำ)

อย่างไรก็ตามโปรดทราบว่าการเท่ากันนั้นจะเก็บไว้เมื่อไม่มี covariate X. ทันทีที่คุณมี Xs ผลลัพธ์จะแตกต่างกันไม่ว่าคุณจะใช้เอฟเฟกต์ยูนิตหรือกลุ่ม

ตัวอย่างด้านล่างนี้เปรียบเทียบตัวประมาณ 3 ตัวในสองกรณีโดยมีและไม่มี X ตัวประมาณคือ:

  1. OLS
  2. FE ที่มีเอฟเฟกต์กลุ่มคงที่
  3. FE พร้อมเอฟเฟกต์หน่วยคงที่

#>              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"))
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.