व्यक्तिगत स्तर के पैनल डेटा के साथ अंतर-अंतर


11

व्यक्तिगत स्तर के पैनल डेटा के साथ अंतर मॉडल में अंतर को निर्दिष्ट करने का सही तरीका क्या है?

यहाँ सेटअप है: मान लें कि मेरे पास शहरों में व्यक्तिगत-स्तरीय पैनल डेटा कई वर्षों से एम्बेडेड है और उपचार शहर-वर्ष के स्तर पर भिन्न है। औपचारिक रूप से, चलो व्यक्ति के लिए परिणाम मैं शहर में रों और साल टी और डी एस टी के लिए एक डमी हो कि क्या हस्तक्षेप प्रभावित शहर रों वर्ष में टी । बर्ट्रेंड एट अल (2004, पी। 250) में उल्लिखित एक विशिष्ट डीडी अनुमानक शहर और वर्ष के लिए निश्चित प्रभाव शर्तों के साथ एक साधारण ओएलएस मॉडल पर आधारित है:yististDstst

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

लेकिन क्या वह अनुमानक व्यक्ति-स्तरीय पैनल संरचना (यानी शहरों के भीतर प्रत्येक व्यक्ति के लिए कई अवलोकन) को अनदेखा करता है? यह भावना एक व्यक्तिगत स्तर तय प्रभाव अवधि के साथ इस मॉडल का विस्तार करने के पड़ता है ? कई DiD एप्लिकेशन व्यक्तिगत स्तर के पैनल डेटा के बिना बार-बार क्रॉस-सेक्शन डेटा का उपयोग करते हैं।Si


बर्ट्रेंड, मैरिएन, एस्थर डुफ्लो और सेंथिल मुलैनाथन। 2004. "हमें कितना अंतर-अंतर का अनुमान लगाना चाहिए?" त्रैमासिक जर्नल ऑफ इकोनॉमिक्स 119 (1): 249–75।


यदि आप इकाई डमी के प्रभावों को पकड़ना चाहते हैं, तो एक निश्चित प्रभाव मॉडल क्यों नहीं करते हैं? DID, Dummies सहित 2 समय अवधि के साथ FE के समतुल्य है और फिर DID करने से उन्हें छोड़ दिया जाएगा।
वीसीजी

अगर मैं गलत हूं तो मुझे सुधारें, लेकिन मुझे दो अंतर दिखाई देते हैं: ए) प्रभाव का अनुमान लगाने के लिए एक एफए मॉडल एक इकाई के भीतर का उपयोग करेगा (जैसे कि एक निश्चित जीवन घटना के बाद आय अधिक या कम है)। एक DiD दृष्टिकोण का विचार अन्य टिप्पणियों का उपयोग करना है, क्योंकि उपचार के बिना क्या हुआ होगा, इसे पकड़ने के लिए नियंत्रण की प्रवृत्ति। b) DiD समूह स्तर पर केंद्रित है न कि व्यक्तिगत स्तर के उपचार पर। अब सवाल यह है कि क्या होगा यदि मैं अपने उदाहरण में समीकरण में एक व्यक्तिगत स्तर का शब्द जोड़ दूं। क्या यह नियंत्रण नियंत्रण प्रवृत्ति के रूप में नियंत्रण का उपयोग करता है? सभी नियंत्रण अवलोकन उपचार पर भिन्न नहीं होते हैं ...
greg

जवाबों:


11

अंतर-अंतर (DiD) की एक अच्छी विशेषता वास्तव में यह है कि आपको इसके लिए पैनल डेटा की आवश्यकता नहीं है। यह देखते हुए कि उपचार किसी प्रकार के एकत्रीकरण के स्तर पर होता है (आपके मामले के शहरों में), आपको केवल उपचार से पहले और बाद में शहरों से यादृच्छिक व्यक्तियों का नमूना लेना होगा। यह आपको अनुमान लगाने के लिए अनुमति देता है

yist=Ag+Bt+βDst+cXist+ϵist
और उपचार के कारण पूर्व प्रभाव के रूप में उपचार के कारण प्रभाव को नियंत्रित करने के लिए अपेक्षित पूर्व-पूर्व परिणाम अंतर का अनुमान प्राप्त करें।

एक ऐसा मामला है जिसमें लोग उपचार संकेतक के बजाय व्यक्तिगत निश्चित प्रभाव का उपयोग करते हैं और यह तब होता है जब हमारे पास एकत्रीकरण का एक अच्छी तरह से परिभाषित स्तर नहीं होता है जिस पर उपचार होता है। उस मामले में आप यह अनुमान लगा होगा जहां डी मैं टी व्यक्तियों, जो उपचार प्राप्त करने के लिए बाद के उपचार की अवधि के लिए एक संकेतक (के लिए है उदाहरण, एक नौकरी बाजार कार्यक्रम जो सभी जगह होता है)। इस बारे में अधिक जानकारी के लिए ये लेक्चर नोट्स देखें

yit=αi+Bt+βDit+cXit+ϵit
Dit स्टीव पिसके द्वारा।

Ag

यहां एक कोड उदाहरण है जो दिखाता है कि यह मामला है। मैं स्टैटा का उपयोग करता हूं लेकिन आप इसे अपनी पसंद के सांख्यिकीय पैकेज में दोहरा सकते हैं। यहां "व्यक्ति" वास्तव में देश हैं, लेकिन वे अभी भी कुछ उपचार संकेतक के अनुसार समूहबद्ध हैं।

* 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 में उपलब्ध निश्चित प्रभाव अनुमान आदेशों में से एक है)। मानक त्रुटियां थोड़ी तंग हैं और हमारे मूल उपचार संकेतक को व्यक्तिगत निश्चित प्रभावों द्वारा अवशोषित किया गया था और इसलिए प्रतिगमन में गिरा दिया गया था।

टिप्पणी के जवाब में
मैंने पिस्चके उदाहरण का उल्लेख किया, यह दिखाने के लिए कि लोग उपचार समूह संकेतक के बजाय व्यक्तिगत निश्चित प्रभावों का उपयोग करते हैं। आपकी सेटिंग में एक अच्छी तरह से परिभाषित समूह संरचना है जिससे आपने अपने मॉडल को लिखा है जो पूरी तरह से ठीक है। मानक त्रुटियों को शहर के स्तर पर एकत्र किया जाना चाहिए, अर्थात एकत्रीकरण का स्तर जिस पर उपचार होता है (मैंने यह उदाहरण कोड में नहीं किया है, लेकिन डीडी सेटिंग्स में मानक त्रुटियों को सही करने की आवश्यकता है जैसा कि बर्ट्रेंड एट अल पेपर द्वारा प्रदर्शित किया गया है )।

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)]

E(yist|s=1,t=1)E(yist|s=0,t=1)। यह स्पष्ट करने के लिए कि पहचान समय के साथ समूह के अंतर से क्यों होती है और मूवर्स से नहीं आप एक साधारण ग्राफ के साथ यह कल्पना कर सकते हैं। मान लीजिए कि परिणाम में परिवर्तन वास्तव में केवल उपचार के कारण है और इसका एक समकालीन प्रभाव है। यदि हमारे पास एक व्यक्ति है जो उपचार शुरू होने के बाद एक इलाज वाले शहर में रहता है, लेकिन फिर एक नियंत्रण शहर में चला जाता है, तो उनका परिणाम वापस जाना चाहिए कि यह इलाज करने से पहले क्या था। यह नीचे दिए गए शैलीगत ग्राफ़ में दिखाया गया है।

यहाँ छवि विवरण दर्ज करें

आप अभी भी अन्य कारणों से मूवर्स के बारे में सोचना चाह सकते हैं। उदाहरण के लिए, यदि उपचार पर स्थायी प्रभाव पड़ता है (अर्थात यह अभी भी परिणाम को प्रभावित करता है, भले ही व्यक्ति स्थानांतरित हो गया हो)


2
अच्छा उत्तर। क्या आप यहां शहर स्तर पर त्रुटियों को दूर करने की भी सिफारिश करेंगे?
दिमित्री वी। मास्टरोव

शानदार जवाब, धन्यवाद। आपका eq पेज 12 से eq 3 है, है ना? पिस्चके ने इस हिस्से का परिचय "हालांकि, कभी-कभी कोई प्राकृतिक इकाई नहीं है जहां उपचार सौंपा गया है। इसके बजाय, कुछ व्यक्ति किसी विशेष बिंदु पर समय पर इलाज करते हैं, और अन्य नहीं करते हैं"। लेकिन वास्तव में ऐसा नहीं है। मेरे सेटिंग में शहर (या जो भी समूह) के स्तर पर उपचार है + मेरे पास पैनल डेटा है। यह अभी भी क्लस्टर के साथ शायद सही मॉडल हो सकता है। आप क्या कहेंगे? यदि व्यक्ति वर्षों से शहरों के बीच स्थानांतरित कर सकते हैं तो क्या होगा? उस स्थिति में, मूवर्स के आधार पर 'ट्रीटेड' के लिए कोफ़ की पहचान की जाएगी, है ना?
greg

@ DimitriyV.Masterov बर्ट्रेंड एट अल की सिफारिश समूह स्तर पर मानक त्रुटियों को क्लस्टर करने के लिए होगी जिस पर उपचार होता है। वैकल्पिक रूप से आप प्रतिस्थापन के साथ ब्लॉक बूटस्ट्रैप का उपयोग कर सकते हैं, हालांकि यह भी शहर के स्तर पर फिर से होगा।
एंडी

@ मुझे आपकी टिप्पणी का थोड़ा और विस्तार से जवाब देने के लिए जवाब मिला। मुझे आशा है कि यह :-)
एंडी

यदि हम कई अवधियों का उपयोग करते हैं तो इससे क्या फर्क पड़ता है? डमी D_i_t घटना से पहले सभी अवधियों के लिए शून्य होगा और घटना के बाद सभी अवधियों के लिए एक होगा। यदि मैं सिर्फ दो अवधियों का उपयोग करता हूं तो यह समान नहीं होगा? @ एंडी
जिंहुआ वांग

1

संक्षिप्त उत्तर यह है कि इकाई या उपचारित समूह स्तर पर निश्चित प्रभाव का उपयोग करने से केवल अनुमान नहीं लगता है। आमतौर पर, यूनिट फिक्स्ड-प्रभाव का उपयोग करके अधिक भिन्नता को अवशोषित किया जाएगा, और इसलिए आपके पास छोटी मानक त्रुटियां होंगी।

चाहे इकाइयाँ एक ही एकत्रित समूह में हों, यह परिणाम नहीं बदलता है (यह केवल यह बदलता है कि आप अपने उपचारित समूह स्तर को कैसे परिभाषित करते हैं , और यह तथ्य कि आपको बार-बार क्रॉस-सेक्शन के बजाय पैनल की आवश्यकता है)।

ध्यान दें कि समतुल्यता केवल तब होती है जब कोई कोवरिएट एक्स नहीं होता है। जैसे ही आपके पास एक्स होता है, परिणाम भिन्न होते हैं चाहे आप यूनिट या समूह निर्धारित प्रभाव का उपयोग करें।

नीचे दिए गए उदाहरण 3 अनुमानकर्ताओं की तुलना करते हैं, दो मामलों में, एक्स अनुमानकर्ताओं के साथ और उनके बिना हैं:

  1. OLS
  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 Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.