首页 > 解决方案 > 倾向得分匹配与面板数据

问题描述

我正在尝试使用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 和其他匹配因子。

在我看来,我有两种方法可以解决这个问题:

  1. 删除同一年和同一公司的观察结果,但是,删除观察结果可能会导致结果出现偏差并破坏研究。

  2. 防止MatchIt功能与同一家公司(或同一家公司Frimnames)的观察结果相匹配

第二种方法会更好,因为它不会导致偏见,但是,我不知道我是否可以在MatchIt函数中做到这一点。希望有人能给我一些建议,或者也许有更好的解决这个问题的方法,请与我分享,在此先感谢!

注意:如果有任何进一步的信息或要求我应该提供,请告诉我。这是我第一次在这里提出问题!

标签: rpanel-datapropensity-score-matching

解决方案


目前这是不可能MatchIt的(尽管这是一个有趣的想法并且不难实现,所以我可以将它作为一个特性添加)。

optmatch执行最佳配对和完全匹配的包中,可以添加一个称为“反精确匹配”的约束,听起来完全符合您的要求。具有相同反精确匹配变量值的单位将不会相互匹配。这可以使用optmatch::antiExactMatch().

Matching执行最近邻和遗传匹配的包中,restrict可以将参数提供给匹配函数以限制某些匹配。您可以通过限制同一公司中的所有观察对手动创建限制矩阵,然后将矩阵提供给Match().


推荐阅读