r - 倾向得分匹配与面板数据
问题描述
我正在尝试使用MatchIt
我的面板数据执行倾向得分匹配 (PSM)。数据是面板数据,包含来自同一组公司的多年观察结果。
数据基本上是描述债券数据列表及其发行人的财务数据,以及发行日期、票面利率、期限、债券类型等债券条款。例如:
公司名称 | 年 | 资产收益率 | 债券类型 |
---|---|---|---|
AAPL 美国股票 | 2015 | 0.3 | 0 |
AAPL 美国股票 | 2015 | 0.3 | 1 |
AAPL 美国股票 | 2016 | 0.3 | 0 |
AAPL 美国股票 | 2017 | 0.3 | 0 |
美股 | 2015 | 0.3 | 0 |
美股 | 2016 | 0.3 | 0 |
美股 | 2017 | 0.3 | 0 |
……
我已经知道如何根据我想要的标准来匹配观察结果,并且我用exact = Year
它来确保我匹配同一年的观察结果。我现在面临的问题是来自同一家公司的观察结果会被匹配在一起,这不是我想要的。我使用的代码:
matchit(Bond_type ~ Year + Amount_Issued + Cpn + Total_Assets_bf + AssetsEquityRatio_bf + Asset_Turnover_bf, data = rdata, method = "nearest", distance = "glm", exact = "Year")
但是,正如您所看到的,在我的样本的第二个原始样本中,由于我的研究性质(该公司一年可以发行多次债券),同一家公司可能在一年内有两次观察。它们之间的唯一区别是 Bond_type。因此,该MathcIt
函数当然会将它们视为最佳控制组和治疗组,并将这两个观察值匹配在一起,因为它们在当年具有相同的 ROA 和其他匹配因子。
在我看来,我有两种方法可以解决这个问题:
删除同一年和同一公司的观察结果,但是,删除观察结果可能会导致结果出现偏差并破坏研究。
防止
MatchIt
功能与同一家公司(或同一家公司Frimnames
)的观察结果相匹配
第二种方法会更好,因为它不会导致偏见,但是,我不知道我是否可以在MatchIt
函数中做到这一点。希望有人能给我一些建议,或者也许有更好的解决这个问题的方法,请与我分享,在此先感谢!
注意:如果有任何进一步的信息或要求我应该提供,请告诉我。这是我第一次在这里提出问题!
解决方案
目前这是不可能MatchIt
的(尽管这是一个有趣的想法并且不难实现,所以我可以将它作为一个特性添加)。
在optmatch
执行最佳配对和完全匹配的包中,可以添加一个称为“反精确匹配”的约束,听起来完全符合您的要求。具有相同反精确匹配变量值的单位将不会相互匹配。这可以使用optmatch::antiExactMatch()
.
在Matching
执行最近邻和遗传匹配的包中,restrict
可以将参数提供给匹配函数以限制某些匹配。您可以通过限制同一公司中的所有观察对手动创建限制矩阵,然后将矩阵提供给Match()
.
推荐阅读
- javascript - 使用javascript将图像添加到选择中的选项
- python - 为什么我在 Panel 中得到一个空的输出对象?
- msbuild - 用于多个框架的 Nuget 包
- php - 将 JSON 数组 PHP [] 转换为 {}
- vb.net - 如何从 vb.net 的设备管理器中获取“最后到达日期”属性?
- c++ - 声明 std::pair 时的大小写入无效
- excel-formula - 在excel中提取前10个最大值
- jenkins - 詹金斯找不到 msbuild
- c# - 未注册类型“Microsoft.AspNetCore.Identity.RoleManager`1[Microsoft.AspNetCore.Identity.IdentityRole]”的服务
- loops - Twig 中的 foreach ( $response as $key => $element )