搬運(yùn)網(wǎng)站:https://blog.csdn.net/Claire_chen_jia/article/details/106903842?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~all~top_click~default-1-106903842.nonecase
雙重差分模型DID學(xué)習(xí)
雙重差分模型 (Difference-Differences, DID)是政策評估的非實驗方法中最為常用的一種方法喊熟,其中交互項是DID的靈魂柏肪。
交互項形式擁有各種形式,包括(1)傳統(tǒng)DID芥牌;(2)經(jīng)典DID烦味;(3)異時DID;(4)廣義DID壁拉;以及(5)異質(zhì)性DID谬俄。下面分別介紹這幾種。
雙重差分法是研究“處理效應(yīng)”(treatment effects)的流行方法弃理。一般來說溃论,DID的使用場景為,在面板數(shù)據(jù)中痘昌,個體可分為兩類钥勋,即受到政策沖擊的“處理組”(treatment group)與未受政策影響的“控制組”(control group)。重點(diǎn)落在政策沖擊和是否受到政策沖擊辆苔,通過引入虛擬變量來實現(xiàn)算灸。即:
政策沖擊前后(pre-post)設(shè)為0和1,是否受到政策沖擊(control-treat)設(shè)為0和1.
因而驻啤,模型常設(shè)計為
處理組虛擬變量?beta?捕捉了處理組的組別效應(yīng)(處理組與控制組的固有差別)菲驴,處理期虛擬變量lambda控制了處理期的時間效應(yīng)(處理期前后的固有時間趨勢), X為其他控制變量骑冗,而交互項xigema?則代表了處理組在處理期的真正效應(yīng)(受到政策沖擊的效應(yīng))赊瞬,這正是我們關(guān)心的處理效應(yīng)。然后進(jìn)行OLS估計即可沐旨。
經(jīng)典DID是在傳統(tǒng)DID模型上控制了個體固定效應(yīng)(individual fixed effects)和時間固定效應(yīng)(time fixed effects)森逮,并去除單獨(dú)變量。模型如下:
模型解釋如下:
(1)u 為個體固定效應(yīng)磁携。加入個體固定效應(yīng)之后褒侧,就不必再放入處理組虛擬變量(treat i),否則會引起多重共線性問題谊迄。因為前者包含比后者更多的信息(前者控制到個體層面闷供,而后者僅控制到組別層面)。
(2)入 為時間固定效應(yīng)统诺。同理歪脏,加入時間固定效應(yīng)就不用再加處理期虛擬變量(post t)。否則粮呢,將導(dǎo)致嚴(yán)格多重共線性婿失,因為前者包含比后者更多的信息(前者控制了每一期的時間效應(yīng)钞艇,而后者僅控制處理期前后的時間效應(yīng))
(3)注意:估計方法依然是OLS,但須使用“聚類穩(wěn)健標(biāo)準(zhǔn)誤”(cluster-robust standard errors)豪硅。
在傳統(tǒng)與經(jīng)典DID的模型設(shè)定中哩照,一個隱含假設(shè)是,處理組的所有個體開始受到政策沖擊的時間均完全相同懒浮。但有時也會遇到每位個體的處理期不完全一致的情形(heterogeneous timing)萧求;比如午磁,某項試點(diǎn)政策在不同城市分批推出挖垛。此時茅撞,可使用“異時DID”(heterogeneous timing DID)。
異時DID的關(guān)鍵在于稽穆,既然每位個體的處理期不完全一致冠王,則處理期虛擬變量也因個體而異,故應(yīng)寫為post(i,t)秧骑,既依賴于個體 i版确,也依賴于時間 t。模型設(shè)定為如下任意一種形式:
舉一個5期面板數(shù)據(jù)在stata的應(yīng)用:
1)定義變量:定義因個體而異的處理期虛擬變量post(i,t)乎折;
2)識別受影響:post1(i,t) = (0,0绒疗,1,1,1)代表第1位個體從第3期開始受到政策處理骂澄;post2(i,t) = (0,0吓蘑,0,1,1)代表第2位個體從第4期開始受到政策處理坟冲;post3(i,t) = (0,0磨镶,0,0,0)代表從未受到政策沖擊(屬于控制組)健提。
以上各種DID方法均假設(shè)存在處理組與控制組的區(qū)別琳猫,但有時某項政策在全國統(tǒng)一鋪開,此時只有處理組私痹,并沒有控制組脐嫂,是否還能使用DID呢?答案是“能”紊遵,可以嘗試“廣義DID”(generalized DID)账千。
使用廣義DID的重要前提是,雖然所有個體均同時受到政策沖擊暗膜,但政策對于每位個體的影響力度并不相同匀奏,不妨以 intensity(i) 來表示。
其中学搜,交互項系數(shù)為我們關(guān)注的對象娃善。此外對于廣義DID论衍,文獻(xiàn)中也有門檻區(qū)分組別的方法,即人為地設(shè)定一個門檻值 c聚磺,根據(jù) 變量是否超過此門檻值來定義處理組與控制組饲齐。因為將連續(xù)變量壓縮為二分變量損失了不少信息,故在實踐中已不多見咧最。
傳統(tǒng)的處理效應(yīng)模型一般假設(shè)“同質(zhì)性處理效應(yīng)”(homogeneous treatment effects),即所有個體的處理效應(yīng)都相同御雕。顯然矢沿,此假定太苛刻,在實踐中難以成立酸纲。更為合理的假定則為“異質(zhì)性處理效應(yīng)”(heterogeneous treatment effects)捣鲸,即允許每位個體的處理效應(yīng)不盡相同。具體而言:
1)在DID的框架下闽坡,引入異質(zhì)性處理效應(yīng)栽惶,即在于對交互項(treatpost)的調(diào)整,即引入在組別上的交互項(treatpost*group)疾嗅。
2)模型建立上外厂,在經(jīng)典DID的模型中,再引入三重交互項 代承,構(gòu)建異質(zhì)性DID模型汁蝶。
由上式可知,對于group=0 那類處理組個體论悴,其處理效應(yīng)為 s掖棉。而對于 group=1那類處理組個體,其處理效應(yīng)為(s+t) 膀估。因而其處理效應(yīng)是異質(zhì)的(只要三重交互項的系數(shù)顯著)幔亥。
3)推廣到多雷,只要將將所有個體分為 M 類察纯,設(shè)立 (M -1) 個類別虛擬變量帕棉。
注意,DID應(yīng)用的前提是未受到政策沖擊時捐寥,treat組和control組的變化趨勢是平行的笤昨,因而進(jìn)行平行趨勢檢驗是絕對必要的。
從文獻(xiàn)來看握恳,最為常見的展示是否符合平行趨勢假設(shè)的檢驗方法有兩個:
其一瞒窒,對比不同組別因變量均值的時間趨勢;其二乡洼,回歸中加入各時點(diǎn)虛擬變量與政策變量的交互項崇裁,若政策或稱為處理發(fā)生前的交互項系數(shù)不顯著匕坯,則表明的確有著平行趨勢。
第一種的方法(圖片來源于stata連享會)為:
第二種方式分為:代碼操作和圖形輸出
安裝命令:安裝 coefplot
生成各時點(diǎn)虛擬變量與政策變量的交互項的交互項
進(jìn)行回歸
輸出圖形
例子學(xué)習(xí)于:多期DID:平行趨勢檢驗圖示
詳見學(xué)習(xí)鏈接
例子參考學(xué)習(xí)自:
/*模擬數(shù)據(jù)的生成*////設(shè)定60個觀測值拔稳,設(shè)定隨機(jī)數(shù)種子clearallsetobs60setseed10101genid=_n//每一個數(shù)值的數(shù)量擴(kuò)大11倍葛峻,再減去前六十個觀測值,即60*11-60=600巴比,為60個體10年的面板數(shù)據(jù)expand11dropin1/60count///以id分組生成時間標(biāo)識bysortid:gen time=_n+1999xtsetidtime///生成協(xié)變量x1,x2gen x1=rnormal(1,7)gen x2=rnormal(2,5)///生成個體固定效應(yīng)和時間固定效應(yīng)sort timeidby time:gen ind=_nsortidtimebyid:gen T=_n///生成treat和post變量术奖,以2005年為接受政策干預(yù)的時點(diǎn),id為30-60的個體為處理組轻绞,其余為控制組gen D=0replace D=1ifid>29gen post=0replace post=1iftime>=2005///將基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)保存成dta文件采记,命名為DID_Basic_Simu.dta,默認(rèn)保存在當(dāng)前的 working directory 路徑下save"DID_Basic_Simu.dta",replace
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
///調(diào)用本文第二部分生成的基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)use"DID_Basic_Simu.dta",clear///生成兩種潛在結(jié)果,并且合成最終的結(jié)果變量政勃,令政策的真實效果為10bysortid:gen y0=10+5*x1+3*x2+T+ind+rnormal()bysortid:gen y1=10+5*x1+3*x2+T+ind+rnormal()iftime<2005bysortid:replace y1=10+5*x1+3*x2+10+T+ind+rnormal()iftime>=2005gen y=y0+D*(y1-y0)///去除協(xié)變量和個體效應(yīng)對y的影響唧龄,畫出剩余殘差的圖像xtreg y x1 x2,fe rpredict e,uebinscatter e time,line(connect)by(D)///輸出生成的圖片,令格式為800*600graph export"article1_1.png",as(png)replace width(800)height(600)///多種回歸形式reg y c.D#c.post x1 x2 i.time i.id,robusteststo regxtreg y c.D#c.post x1 x2 i.time,absorb(id) robusteststo aregreghdfe y y c.D#c.post x1 x2, absorb(id time) vce(robust)estout*,title("The Comparison of Actual Paramerer Values")///cells(b(star fmt(%9.3f))se(par))///stats(N N_g,fmt(%9.0f%9.0g)label(N Groups))///legend collabels(none)varlabels(_cons Constant)keep(x1 x2 c.D#c.post)///ESA及圖示法///預(yù)先生成年度虛擬變量tab time,gen(year)reg y i.D#i.time x1 x2, vce(robust)reghdfe y c.D#(c.year2-year10) x1 x2, absorb(id time) vce(robust)coefplot,///keep(c.D#c.year2 c.D#c.year3 c.D#c.year4 c.D#c.year5 c.D#c.year6 c.D#c.year7 c.D#c.year8 c.D#c.year9 c.D#c.year10)? ///coeflabels(c.D#c.year2 = "-4"? ///c.D#c.year3 = "-3"? ? ? ? ? ///c.D#c.year4 = "-2"? ? ? ? ? ///c.D#c.year5 = "-1"? ? ? ? ? ///c.D#c.year6? = "0"? ? ? ? ? ? ///c.D#c.year7? = "1"? ? ? ? ? ? ? ///c.D#c.year8? = "2"? ? ? ? ? ? ? ///c.D#c.year9? = "3"? ? ? ? ? ? ? ///c.D#c.year10 = "4")? ? ? ? ? ? ///vertical///yline(0)///ytitle("Coef")///xtitle("Time passage relative to year of adoption of implied contract exception")///addplot(line @b @at)///ciopts(recast(rcap))///scheme(s1mono)///輸出生成的圖片奸远,令格式為800*600graph export"article1_3.png",as(png)replace width(800)height(600)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
///調(diào)用本文第二部分生成的基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)use"DID_Basic_Simu.dta"既棺,clear///生成兩種潛在結(jié)果,并且合成最終的結(jié)果變量懒叛,令政策的真實效果隨時間發(fā)生變化丸冕,即(5*T-T),由于從2005年開始接受干預(yù)薛窥,因此晨仑,每年的政策效果應(yīng)為24,28拆檬,32洪己,36,40.bysortid:gen y0=10+5*x1+3*x2+T+ind+rnormal()bysortid:gen y1=10+5*x1+3*x2+T+ind+rnormal()iftime<2005bysortid:replace y1=10+5*x1+3*x2+10+T+ind+rnormal()iftime>=2005gen y=y0+D*(y1-y0)///去除協(xié)變量和個體效應(yīng)對y的影響竟贯,畫出剩余殘差的圖像xtreg y x1 x2,fe rpredict e,uebinscatter e time,line(connect)by(D)///輸出生成的圖片答捕,令格式為800*600graph export"article1_1.png",as(png)replace width(800)height(600)///多種回歸形式reg y c.D#c.post x1 x2 i.time i.id, reststo regxtreg y c.D#c.post x1 x2 i.time, r feeststo xtreg_feareg y c.D#c.post x1 x2 i.time, absorb(id) robusteststo aregreghdfe y c.D#c.post x1 x2, absorb(id time) vce(robust)eststo reghdfeestout*,title("The Comparison of Actual Paramerer Values")///cells(b(star fmt(%9.3f))se(par))///stats(N N_g,fmt(%9.0f%9.0g)label(N Groups))///legend collabels(none)varlabels(_cons Constant)keep(x1 x2 c.D#c.post)///ESA及圖示法///預(yù)先生成年度虛擬變量tab time,gen(year)reghdfe y i.D#i.time x1 x2, vce(robust) absorb(id time)reghdfe y c.D#(c.year2-year10) x1 x2, absorb(id time) vce(robust)coefplot,///keep(c.D#c.year2 c.D#c.year3 c.D#c.year4 c.D#c.year5 c.D#c.year6 c.D#c.year7 c.D#c.year8 c.D#c.year9 c.D#c.year10)? ///coeflabels(c.D#c.year2 = "-4"? ///c.D#c.year3 = "-3"? ? ? ? ? ///c.D#c.year4 = "-2"? ? ? ? ? ///c.D#c.year5 = "-1"? ? ? ? ? ///c.D#c.year6? = "0"? ? ? ? ? ? ///c.D#c.year7? = "1"? ? ? ? ? ? ? ///c.D#c.year8? = "2"? ? ? ? ? ? ? ///c.D#c.year9? = "3"? ? ? ? ? ? ? ///c.D#c.year10 = "4")? ? ? ? ? ? ///vertical///yline(0)///ytitle("Coef")///xtitle("Time passage relative to year of adoption of implied contract exception")///addplot(line @b @at)///ciopts(recast(rcap))///scheme(s1mono)///輸出生成的圖片,令格式為800*600graph export"article1_4.png",as(png)replace width(800)height(600)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
倍分法DID詳解 (二):多時點(diǎn) DID (漸進(jìn)DID)
所有個體開始受到政策沖擊的時間均完全相同:Standard DID
個體開始受到政策沖擊的時間不相同:Time-varying DID
/*模擬數(shù)據(jù)的生成*////設(shè)定60個觀測值屑那,設(shè)定隨機(jī)數(shù)種子clearallsetobs60setseed10101genid=_n///每一個數(shù)值的數(shù)量擴(kuò)大11倍拱镐,再減去前六十個觀測值,即60*11-60=600持际,為60個體10年的面板數(shù)據(jù)expand11dropin1/60count///以id分組生成時間標(biāo)識bysortid:gen time=_n+1999xtsetidtime///生成協(xié)變量以及個體和時間效應(yīng)gen x1=rnormal(1,7)gen x2=rnormal(2,5)sort timeidby time:gen ind=_nsortidtimebyid:gen T=_ngen y=0///生成處理變量,此時D為Dit,設(shè)定1-20在2004年接受沖擊沃琅,21-40為2006年,36-60為2008年gen D=0gen birth_date=0forvalues i=1/20{replace D=1ifid==`i'&time>=2004replace birth_date=2004ifid==`i'}forvalues i=21/40{replace D=1ifid==`i'&time>=2006replace birth_date=2006ifid==`i'}forvalues i=41/60{replace D=1ifid==`i'&time>=2008replace birth_date=2008ifid==`i'}///將基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)保存成dta文件蜘欲,命名為DID_Basic_Simu.dta,默認(rèn)保存在當(dāng)前的 working directory 路徑下save"DID_Basic_Simu_1.dta",replace
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
/*政策效果不隨時間而變DID*////調(diào)用生成的基礎(chǔ)數(shù)據(jù)文件use"DID_Basic_Simu_1.dta",clear///Y的生成益眉,使得接受沖擊的個體的政策真實效果為10bysortid:gen y0=10+5*x1+3*x2+T+ind+rnormal()bysortid:gen y1=10+5*x1+3*x2+T+ind+10+rnormal()iftime>=2004&id>=1&id<=20bysortid:replace y1=10+5*x1+3*x2+T+ind+10+rnormal()iftime>=2006&id>=21&id<=40bysortid:replace y1=10+5*x1+3*x2+T+ind+10+rnormal()iftime>=2008&id>=41&id<=60bysortid:replace y1=10+5*x1+3*x2+T+ind+rnormal()ify1==.replace y=y0+D*(y1-y0)///去除個體效應(yīng)和協(xié)變量對Y的影響,得到殘差并畫圖xtreg y x1 x2,fe rpredict e,uebinscatter e time,line(connect)by(D)///輸出生成的圖片,令格式為800*600graph export"article2_1.png",as(png)replace width(800)height(600)///保存并輸出多個命令的結(jié)果reg y c.D x1 x2 i.time i.id,reststo regxtreg y c.D x1 x2 i.time,r feeststo xtreg_feareg y c.D x1 x2 i.time,absorb(id)robusteststo aregreghdfe y c.D x1 x2,absorb(idtime)vce(robust)eststo reghdfeestout*,title("The Comparison of Actual Parameter Values")///cells(b(star fmt(%9.3f))se(par))///stats(N N_g,fmt(%9.0f%9.0g)label(N Groups))///legend collabels(none)varlabels(_cons Constant)keep(x1 x2 D)///ESA及圖示法? Time-varying DID 和 Event Study Approach 的結(jié)合///用當(dāng)前年份減去個體接受處理的年份郭脂,得到相對的時間值event年碘,將-4期之前的時間歸并到第-4期,由于部分個體沒有多于-4期的時間///然后生成相對時間值的虛擬變量展鸡,eventt屿衅,并將首期設(shè)定為基準(zhǔn)對照組gen event=time-birth_datereplace event=-4ifevent<=-4tab event,gen(eventt)drop eventt1xtreg y eventt*x1 x2 i.time,r fecoefplot,///keep(eventt*)///coeflabels(eventt2="-3"http:///eventt3="-2"http:///eventt4="-1"http:///eventt5="0"http:///eventt6="1"http:///eventt7="2"http:///eventt8="3"http:///eventt9="4"http:///eventt10="5")///vertical///yline(0)///ytitle("Coef")///xtitle("Time passage relative to year of adoption of implied contract exception")///addplot(line @b @at)///ciopts(recast(rcap))///scheme(s1mono)///輸出生成的圖片,令格式為800*600graph export"article2_2.png",as(png)replace width(800)height(600)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/*政策效果隨時間而變DID*////調(diào)用生成的基礎(chǔ)數(shù)據(jù)文件use"DID_Basic_Simu_1.dta",clear///Y的生成莹弊,設(shè)定真實的政策效果為當(dāng)年為3涤久,并且每年增加3bysortid:gen y0=10+5*x1+3*x2+T+ind+rnormal()bysortid:gen y1=10+5*x1+3*x2+T+ind+(time-birth+1)*3+rnormal()iftime>=2004&id>=1&id<=20bysortid:replace y1=10+5*x1+3*x2+T+ind+(time-birth+1)*3+rnormal()iftime>=2006&id>=21&id<=40bysortid:replace y1=10+5*x1+3*x2+T+ind+(time-birth+1)*3+rnormal()iftime>=2008&id>=41&id<=60bysortid:replace y1=10+5*x1+3*x2+T+ind+rnormal()ify1==.replace y=y0+D*(y1-y0)///去除個體效應(yīng)和協(xié)變量對Y的影響,得到殘差并畫圖xtreg y x1 x2,fe rpredict e,uebinscatter e time,line(connect)by(D)///輸出生成的圖片忍弛,令格式為800*600graph export"article2_3.png",as(png)replace width(800)height(600)///保存并輸出多個命令的結(jié)果reg y c.D x1 x2 i.time i.id,reststo regxtreg y c.D x1 x2 i.time,r feeststo xtreg_feareg y c.D x1 x2 i.time,absorb(id)robusteststo aregreghdfe y c.D x1 x2,absorb(idtime)vce(robust)eststo reghdfeestout*,title("The Comparison of Actual Parameter Values")///cells(b(star fmt(%9.3f))se(par))///stats(N N_g,fmt(%9.0f%9.0g)label(N Groups))///legend collabels(none)varlabels(_cons Constant)keep(x1 x2 D)///ESA及圖示法? Time-varying DID 和 Event Study Approach 的結(jié)合///用當(dāng)前年份減去個體接受處理的年份拴竹,得到相對的時間值event,將-4期之前的時間歸并到第-4期剧罩,由于部分個體沒有多于-4期的時間///然后生成相對時間值的虛擬變量,eventt座泳,并將首期設(shè)定為基準(zhǔn)對照組gen event=time-birth_datereplace event=-4ifevent<=-4tab event,gen(eventt)drop eventt1xtreg y eventt*x1 x2 i.time,r fecoefplot,///keep(eventt*)///coeflabels(eventt2="-3"http:///eventt3="-2"http:///eventt4="-1"http:///eventt5="0"http:///eventt6="1"http:///eventt7="2"http:///eventt8="3"http:///eventt9="4"http:///eventt10="5")///vertical///yline(0)///ytitle("Coef")///xtitle("Time passage relative to year of adoption of implied contract exception")///addplot(line @b @at)///ciopts(recast(rcap))///scheme(s1mono)///輸出生成的圖片惠昔,令格式為800*600graph export"article2_2.png",as(png)replace width(800)height(600)