Python计算双重差分模型DID及其对应P值使用详解

 更新时间:2021年09月29日 15:57:42   作者:麦片加奶不加糖  
这篇文章主要介绍了Python计算DID及其对应P值的使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪

1. DID(Differences-in-Differences)定义

双重差分法,其主要被用于社会学中的政策效果评估。这种方法需要两个「差异」数据。一个是干预前后的「差异」,这个是自身实验前后的差异。另外一个是干预组与对照组的「差异」。DID利用这两个「差异」的差异来推算干预的效果。因此,顾名思义叫做双重差分法。

其原理是基于一个反事实的框架来评估政策发生和不发生这两种情况下被观测因素y的变化。如果一个外生的政策冲击将样本分为两组:受政策干预的Treat组和未受政策干预的Control组(在政策冲击前,Treat组和Control组的y没有显著差异)。那么,可以将Control组在政策发生前后y的变化看作Treat组未受政策冲击时的状况(反事实的结果)。通过比较Treat组y的变化(D1)以及Control组y的变化(D2),就可以得到政策冲击的实际效果(DD=D1-D2)。

注意:只有在满足“政策冲击前Treat组和Control组的y没有显著差异”(即平行性假定)的条件下,得到的双重差分估计量才是无偏的。

如下图所示:

干预组实验前为A1,实验后为A2。对照组实验前为B1,实验后为B2。对于干预组实验前后差异为A2-A1,对于对照组实验后为B2-B1。两者之差(A2-A1)-(B2-B1)即为DID结果,因果效应/处理效应。如下图处理效应所代表的部分。

2. DID模型形式

为分组虚拟变量(处理组=1,控制组=0);

[公式] 为分期虚拟变量(政策实施后=1,政策实施前=0);

交互项 [公式] 表示处理组在政策实施后的效应,其系数即为双重差分模型重点考察的处理效应。

3. OLS多项式拟合

根据DID公式,我们可以通过使用多项式拟合的方法来求得DID及其P值。以下为Pyhton方法:使用statsmodels库中ols方法,需要根据上述公式准备数据,t代表时间(干预前=0,干预后=1)、g代表分组(干预组=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) 

准备数据格式如下:

OLS结果Summary如下:

交叉项的系数就是DID结果,处理效应。P>| t |为其P值,小于0.05表示差异显著。

参考资料:

1. 双重差分法(DID)入门必看 - 知乎

2. 什么是双重差分模型(:difference-in-differences model)? - 知乎

3. Python 普通最小二乘法(OLS)进行多项式拟合的方法

以上就是Python计算DID及其对应P值使用详解的详细内容,更多关于Python计算DID及对应P值的资料请关注脚本之家其它相关文章!

相关文章

  • transform python环境快速配置方法

    transform python环境快速配置方法

    经常在数据开发中需要搞udf,最近发现transform更加方便易用,但是经常会涉及到集群python版本不一、包不全或者部分机器上没有安装python。这篇文章主要介绍了transform python环境快速配置方法,需要的朋友可以参考下
    2018-09-09
  • python批量替换多文件字符串问题详解

    python批量替换多文件字符串问题详解

    批量替换是我们在日常工作中经常会遇到的一个问题,下面这篇文章主要给大家介绍了关于python批量替换多文件字符串问题的相关资料,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧。
    2018-04-04
  • Python网络爬虫神器PyQuery的基本使用教程

    Python网络爬虫神器PyQuery的基本使用教程

    这篇文章主要给大家介绍了关于Python网络爬虫神器PyQuery的基本使用教程,文中通过示例代码介绍的非常详细,对大家学习使用PyQuery具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-02-02
  • python创建文本文件的简单方法

    python创建文本文件的简单方法

    在本篇内容里小编给大家整理分享的是一篇关于python创建文本文件的简单方法,有需要的朋友们可以参考学习下。
    2020-08-08
  • Python 打印不带括号的元组的实现

    Python 打印不带括号的元组的实现

    本文主要介绍了Python 打印不带括号的元组,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • python使用ctypes调用dll遇到的坑解决记录

    python使用ctypes调用dll遇到的坑解决记录

    这篇文章主要为大家介绍了python使用ctypes调用dll遇到的坑解决记录,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • Python调用Fortran的三种形式

    Python调用Fortran的三种形式

    这篇文章主要介绍了在Python中调用Fortran的三种形式,文中有详细的代码示例,感兴趣的同学可以参考阅读
    2023-04-04
  • Python简单过滤字母和数字的方法小结

    Python简单过滤字母和数字的方法小结

    这篇文章主要介绍了Python简单过滤字母和数字的方法,涉及Python基于内置函数与正则表达式进行字母和数字过滤的相关操作技巧,需要的朋友可以参考下
    2019-01-01
  • python中去空格函数的用法

    python中去空格函数的用法

    这篇文章主要介绍了python中去空格函数的用法,很实用的技巧,需要的朋友可以参考下
    2014-08-08
  • python文件操作相关知识点总结整理

    python文件操作相关知识点总结整理

    这篇文章主要介绍了python文件操作相关知识点,整理汇总了Python文件操作所涉及的常见函数与方法,并给出了实例代码予以总结归纳,需要的朋友可以参考下
    2016-02-02

最新评论