Python計算雙重差分模型DID及其對應(yīng)P值使用詳解
1. DID(Differences-in-Differences)定義
雙重差分法,其主要被用于社會學(xué)中的政策效果評估。這種方法需要兩個「差異」數(shù)據(jù)。一個是干預(yù)前后的「差異」,這個是自身實驗前后的差異。另外一個是干預(yù)組與對照組的「差異」。DID利用這兩個「差異」的差異來推算干預(yù)的效果。因此,顧名思義叫做雙重差分法。
其原理是基于一個反事實的框架來評估政策發(fā)生和不發(fā)生這兩種情況下被觀測因素y的變化。如果一個外生的政策沖擊將樣本分為兩組:受政策干預(yù)的Treat組和未受政策干預(yù)的Control組(在政策沖擊前,Treat組和Control組的y沒有顯著差異)。那么,可以將Control組在政策發(fā)生前后y的變化看作Treat組未受政策沖擊時的狀況(反事實的結(jié)果)。通過比較Treat組y的變化(D1)以及Control組y的變化(D2),就可以得到政策沖擊的實際效果(DD=D1-D2)。
注意:只有在滿足“政策沖擊前Treat組和Control組的y
沒有顯著差異”(即平行性假定)的條件下,得到的雙重差分估計量才是無偏的。
如下圖所示:
干預(yù)組實驗前為A1,實驗后為A2。對照組實驗前為B1,實驗后為B2。對于干預(yù)組實驗前后差異為A2-A1,對于對照組實驗后為B2-B1。兩者之差(A2-A1)-(B2-B1)即為DID結(jié)果,因果效應(yīng)/處理效應(yīng)。如下圖處理效應(yīng)所代表的部分。
2. DID模型形式
為分組虛擬變量(處理組=1,控制組=0);
為分期虛擬變量(政策實施后=1,政策實施前=0);
交互項 表示處理組在政策實施后的效應(yīng),其系數(shù)即為雙重差分模型重點考察的處理效應(yīng)。
3. OLS多項式擬合
根據(jù)DID公式,我們可以通過使用多項式擬合的方法來求得DID及其P值。以下為Pyhton方法:使用statsmodels庫中ols方法,需要根據(jù)上述公式準備數(shù)據(jù),t代表時間(干預(yù)前=0,干預(yù)后=1)、g代表分組(干預(yù)組=1,對照組=0)、還有一個是交叉項tg(計算其t*g即可)。
代碼如下:
import statsmodels.formula.api as smf import pandas as pd v1 =[0.367730,0.377147,0.352539,0.341864,0.29276,0.393443,0.374697,0.346989,0.385783,0.307801] t1 = [0,0,0,0,1,0,0,0,0,1] g1 =[1,1,1,1,1,0,0,0,0,0] tg1 = [0,0,0,0,1,0,0,0,0,0] aa = pd.DataFrame({'t1':t1,'g1':g1,'tg1':tg1,'v1':v1}) X = aa[['t1', 'g1','tg1']] y = aa['v1'] est = smf.ols(formula='v1 ~ t1 + g1 + tg1', data=aa).fit() y_pred = est.predict(X) aa['v1_pred'] = y_pred print(aa) print(est.summary()) print(est.params)
準備數(shù)據(jù)格式如下:
OLS結(jié)果Summary如下:
交叉項的系數(shù)就是DID結(jié)果,處理效應(yīng)。P>| t |為其P值,小于0.05表示差異顯著。
參考資料:
2. 什么是雙重差分模型(:difference-in-differences model)? - 知乎
3. Python 普通最小二乘法(OLS)進行多項式擬合的方法
以上就是Python計算DID及其對應(yīng)P值使用詳解的詳細內(nèi)容,更多關(guān)于Python計算DID及對應(yīng)P值的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python PyMySQL操作MySQL數(shù)據(jù)庫的方法詳解
PyMySQL是一個用于Python編程語言的純Python MySQL客戶端庫,它遵循Python標準DB API接口,并提供了許多方便的功能,本文就來和大家簡單介紹一下吧2023-05-05學(xué)習(xí)createTrackbar的使用方法及步驟
這篇文章主要為大家介紹了學(xué)習(xí)createTrackbar的使用方法及步驟,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步2021-10-10Python語法學(xué)習(xí)之線程的創(chuàng)建與常用方法詳解
本文主要介紹了線程的使用,線程是利用進程的資源來執(zhí)行業(yè)務(wù),并且通過創(chuàng)建多個線程,對于資源的消耗相對來說會比較低,今天就來看一看線程的使用方法具體有哪些吧2022-04-04