Python + Pandas 中的差异

2024-06-03

我正在尝试执行差异中的差异 https://en.wikipedia.org/wiki/Difference_in_differences(使用面板数据和固定效应)使用 Python 和 Pandas 进行分析。我没有经济学背景,我只是想过滤数据并运行我被告知的方法。然而,据我所知,我了解到基本的 diff-in-diffs 模型如下所示:

也就是说,我正在处理一个多变量模型。

下面是 R 中的一个简单示例:

https://thetarzan.wordpress.com/2011/06/20/differences-in-differences-estimation-in-r-and-stata/ https://thetarzan.wordpress.com/2011/06/20/differences-in-differences-estimation-in-r-and-stata/

可以看出,回归将一个因变量和树状观察集作为输入。

我的输入数据如下所示:

    Name    Permits_13  Score_13    Permits_14  Score_14    Permits_15  Score_15
0   P.S. 015 ROBERTO CLEMENTE   12.0    284 22  279 32  283
1   P.S. 019 ASHER LEVY 18.0    296 51  301 55  308
2   P.S. 020 ANNA SILVER    9.0 294 9   290 10  293
3   P.S. 034 FRANKLIN D. ROOSEVELT  3.0 294 4   292 1   296
4   P.S. 064 ROBERT SIMON   3.0 287 15  288 17  291
5   P.S. 110 FLORENCE NIGHTINGALE   0.0 313 3   306 4   308
6   P.S. 134 HENRIETTA SZOLD    4.0 290 12  292 17  288
7   P.S. 137 JOHN L. BERNSTEIN  4.0 276 12  273 17  274
8   P.S. 140 NATHAN STRAUS  13.0    282 37  284 59  284
9   P.S. 142 AMALIA CASTRO  7.0 290 15  285 25  284
10  P.S. 184M SHUANG WEN    5.0 327 12  327 9   327

通过一些研究,我发现这是在 Pandas 中使用固定效应和面板数据的方法:

Pandas 或 Statsmodels 中的固定效果 https://stackoverflow.com/questions/24195432/fixed-effect-in-pandas-or-statsmodels

我执行了一些转换来获取多索引数据:

rng = pandas.date_range(start=pandas.datetime(2013, 1, 1), periods=3, freq='A')
index = pandas.MultiIndex.from_product([rng, df['Name']], names=['date', 'id'])
d1 = numpy.array(df.ix[:, ['Permits_13', 'Score_13']])
d2 = numpy.array(df.ix[:, ['Permits_14', 'Score_14']])
d3 = numpy.array(df.ix[:, ['Permits_15', 'Score_15']])
data = numpy.concatenate((d1, d2, d3), axis=0)
s = pandas.DataFrame(data, index=index)  
s = s.astype('float')

但是,我不知道如何将所有这些变量传递给模型,例如可以在 R 中完成:

reg1 = lm(work ~ post93 + anykids + p93kids.interaction, data = etc)

这里,13、14、15代表2013年、2014年、2015年的数据,我认为应该用来创建面板。 我这样称呼该模型:

reg  = PanelOLS(y=s['y'],x=s[['x']],time_effects=True)

这是结果:

(一位经济学家)告诉我,这似乎并不具有固定效应。

--EDIT--

我想验证的是在给定时间的情况下许可数量对分数的影响。许可证的数量就是治疗,它是一个强化治疗.

代码示例可以在这里找到:https://www.dropbox.com/sh/ped312ur604357r/AACQGloHDAy8I2C6HITFzjqza?dl=0 https://www.dropbox.com/sh/ped312ur604357r/AACQGloHDAy8I2C6HITFzjqza?dl=0.


看来您需要的不是差异中的差异(DD)回归。当您可以区分对照组和治疗组时,DD 回归就有意义。一个标准的简化示例是药物的评估。您将一群病人分成两组。其中一半人没有接受任何治疗:他们是对照组。另一半则接受药物治疗:他们是治疗组。从本质上讲,DD 回归将捕捉到这样一个事实:药物的真正效果不能直接通过服用药物的人数变得健康来衡量。直觉上,你想知道这些人是否比那些没有服用任何药物的人表现得更好。这个结果可以通过添加另一个类别来完善:安慰剂,即给予看起来像药物但实际上不是药物的人……但这将是一个明确定义的群体。最后但并非最不重要的一点是,要使 DD 回归真正合适,您需要确保各组的异质性不会导致结果出现偏差。对于你的药物测试来说,一个糟糕的情况是,如果治疗组只包括年轻人和超级健康的人(因此总体上更有可能治愈),而对照组是一群老酗酒者......

就你的情况而言,如果我没有弄错的话,每个人都会在某种程度上受到“对待”......所以你更接近一个标准的回归框架,其中要测量X对Y的影响(例如智商对工资)。我知道您想衡量许可数量对分数的影响(或者是其他方式?-_-),并且您需要处理经典的内生性,即如果彼得比保罗更熟练,他会通常会获得更多许可和更高分数。因此,您真正想要使用的是这样一个事实:随着时间的推移,具有相同水平的技能,彼得(分别是保罗)将在多年来“获得”不同级别的许可证......在那里您将真正衡量许可证的影响得分上...

我可能猜得不好,但我想坚持这样一个事实:如果您没有付出足够的努力来理解/解释数据中发生的情况,有很多方法可以获得有偏见的、因此毫无意义的结果。关于技术细节,您的估计只有年份固定效应(可能没有估计,而是通过贬低考虑在内,因此不会在输出中返回),所以您想要做的是添加entity_effects = True。如果你想更进一步...恐怕迄今为止任何Python包都没有很好地涵盖面板数据回归(包括计量经济学的参考统计模型),所以如果你不愿意投资...我宁愿建议使用 R 或 Stata。同时,如果您只需要固定效应回归,您还可以使用 statsmodels 获得它(如果需要,它还允许对标准错误进行聚类......):

import statsmodels.formula.api as smf
df = s.reset_index(drop = False)
reg = smf.ols('y ~ x + C(date) + C(id)',
              data = df).fit()
print(reg.summary())
# clustering standard errors at individual level
reg_cl = smf.ols(formula='y ~ x + C(date) + C(id)',
                 data=df).fit(cov_type='cluster',
                              cov_kwds={'groups': df['id']})
print(reg_cl.summary())
# output only coeff and standard error of x
print(u'{:.3f} ({:.3f})'.format(reg.params.ix['x'], reg.bse.ix['x']))
print(u'{:.3f} ({:.3f})'.format(reg_cl.params.ix['x'], reg_cl.bse.ix['x']))

关于计量经济学,您可能会在交叉验证上获得比这里更多/更好的答案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python + Pandas 中的差异 的相关文章

随机推荐

  • 使用智能菜单jquery打印json

    menu name Computers children name Notebook children name Apple name Windows name Tablets children name Apple name Androi
  • 如何覆盖 go 模块中的依赖项?

    In dep您可以选择覆盖依赖项并使其指向不同的存储库 例如以下内容https github com kubermatic glog logrus https github com kubermatic glog logrus库一需要将以下
  • 将跟踪输出重定向到控制台

    假设我正在 VB Net 中开发一个小型批处理控制台应用程序 我希望能够像这样构建应用程序 Sub WorkerMethod Do some work Trace WriteLine Work progress Do more work T
  • 如何使用 MySQL 和 PHP 在数据库中存储标签?

    我想创建一个数据库来存储用户为其问题输入的标签 然后为发布的每个单独问题显示所有标签 像这里这样的东西 这是现在为我做所有事情的表 CREATE TABLE questions tags id INT UNSIGNED NOT NULL A
  • Django 模型同步表

    如果我更改 Django 模型中的字段 如何将其与数据库表同步 我是否需要在数据库上手动执行此操作 或者是否有工具可以帮助完成此过程 唉 Django 不支持任何简单的解决方案 django 唯一能为你做的就是使用与新模型匹配的新表重新启动
  • C++ 不强制 (cond ? string_1 : string_2) 初始化字符串吗?

    考虑到 void foo std string s 在该函数内部 表达式s is lvalue std string not std string 因为引用在表达式中并不真正 存在 expr type 1 http eel is c dra
  • 基本 ODR 违规:.h 文件中的成员函数

    免责声明 这可能是一个基本问题 但我是一名理论物理学家 接受过训练 试图学习正确的编码 所以请耐心等待 假设我想对一个相当复杂的物理系统进行建模 根据我的理解 对该系统进行建模的一种方法是将其作为一个类引入 然而 由于涉及到系统 类会很大
  • Excel工作表中的动态减法公式

    我需要在Excel中编写一个动态减法公式 该公式从其上方的单元格中减去 指定列的 单元格 例如 A2 A1 G1 G列固定 and A3 A2 G2 and A4 A3 G3 等等 Excel 足够智能 可以使用动态引用和对当前单元格的相对
  • NSArray 中不重复的所有可能组合

    假设我有一个包含 3 个数字的数组 NSArray array 1 2 3 我想进行所有组合而不重复 所以我需要的是这样的 1 2 3 1 2 2 3 1 3 1 2 3 我当前的代码是这样的 NSArray array 1 2 3 int
  • 使 bootstrap popover 使用自定义 html 模板

    我正在使用输入组文本框 我需要 Bootstrap 3 弹出框才能工作 并且弹出框模板应由我定义和设计 所以我目前拥有的 html 是 div class row div class col sm 2 div class input gro
  • 密码更改后的 Kerberos/Spnego 身份验证问题

    我将 Tomcat 设置为使用 SPNEGO 身份验证 因此用户可以单点登录到我们的 Web 应用程序 而无需输入密码 并且一切正常 昨天 我更改了服务帐户的密码 并重新创建了 keytab 文件 但在 Tomcat 重新启动后 SSO 无
  • ScrollView 中的 ViewPager 不会垂直滚动

    我有一个layout有一个ViewPager自定义内部ScrollView并且 ViewPager 不会垂直滚动 自定义 ScrollView 用于修复使用 ScrollView 进行可怕的选项卡滑动的问题 是的 有足够的内容可以滚动 我已
  • ScrollTop 在 Chrome/Safari 中不起作用

    我的网站上有一个循环内的表单 当有人提交表单时 查询字符串会添加到 URL 中 例如 updated 111 然后 我的 JQuery 脚本检查数字的 url 并在提交表单并重新加载页面后滚动到该 div 该脚本在 Firefox 中运行良
  • 在网络浏览器上显示 UTF-16 字符

    我打印了一些 UTF 16 编码的字符并尝试在 Firefox 中显示它 它显示为 所以我进入 工具 gt 编码 并将编码从 UTF 8 更改为 UTF 16 我也尝试直接在 HTML 中更改字符集 但是 当我这样做时 我的页面完全被符号淹
  • 为什么 Netbeans 无法识别“cbegin()”、“cend()”、“unordered_set”以及其他 C++ 功能?

    我的 C 应用程序在 Netbeans 中按预期编译和运行 但是 代码帮助不识别诸如以下的术语 cbegin cend unordered set 如红色下划线所示 代码帮助确实可以识别end 然而 我尝试转到 项目 gt 属性 gt 代码
  • 常见问题解答:为什么仅当类至少有 1 个虚拟方法时,dynamic_cast 才有效?

    这在 C 中无法编译 class A class B public A A a new B B b dynamic cast
  • 实体框架 - 实体类型之间的关联已被切断问题

    您好 当我尝试删除 绑定 表中的一行时 我遇到了实体框架问题 这些表看起来像这样 Table Users public class UserEntity BaseEntity Required MaxLength 30 public str
  • AWS CDK Secrets Manger 获取完整的 arn (python)

    我正在尝试创建一个使用需要秘密的脚本的金丝雀资源 我正在尝试向金丝雀角色添加政策声明 我将其作为 cdk 的一部分创建 为此 我需要获取完整的秘密 arn 我可以使用以下命令获取部分 arn secret from name secrets
  • 使用 Python 在 Azure 存储 blob 中创建 PDF 文件的最佳方法是什么?

    我是 Python 新手 我提出了使用 Python 脚本创建包含 SQL Server 中可用数据的 PDF 文件的要求 据我研究 有许多库可用于此目的 但大多数方法是生成 HTML 字符串 然后将其转换为本地目录中的 PDF 文件 但他
  • Python + Pandas 中的差异

    我正在尝试执行差异中的差异 https en wikipedia org wiki Difference in differences 使用面板数据和固定效应 使用 Python 和 Pandas 进行分析 我没有经济学背景 我只是想过滤数