我正在尝试使用MatchIt
对面板数据执行倾向得分匹配(PSM)。该数据是包含来自同一组公司的多年观察的面板数据。
该数据基本上描述了债券数据列表及其发行人的财务数据,以及债券术语,如发行日期、票面利率、到期日和发行人所发行债券的债券类型。例如:
| 公司名称|年份|资产回报率|粘合类型|
| - ------|- ------|- ------|- ------|
| AAPL美国股票|二〇一五年|0.3分|无|
| AAPL美国股票|二〇一五年|0.3分|1个|
| AAPL美国股票|二〇一六年|0.3分|无|
| AAPL美国股票|二〇一七年|0.3分|无|
| C美国股票|二〇一五年|0.3分|无|
| C美国股票|二〇一六年|0.3分|无|
| C美国股票|二〇一七年|0.3分|无|
......
我已经知道如何匹配的意见,我想要的标准,我用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.删除同一年份和同一公司的观察结果,但是,删除观察结果可能导致偏倚结果并破坏研究。
1.防止MatchIt
功能匹配来自同一公司(或具有相同Frimnames
)的观察结果
第二种方法会更好,因为它不会导致偏差,但是,我不知道我是否可以在MatchIt
函数中做到这一点。希望有人能给我一些建议,或者可能有更好的解决这个问题的方法,请与我分享,提前感谢!
注:如果我有任何需要提供的信息或要求,请随时通知我。这是我第一次在这里提出这个问题!
1条答案
按热度按时间vngu2lb81#
这在目前的
MatchIt
中是不可能的(尽管这是一个有趣的想法,并且不难实现,所以我可能会将其作为一个特性添加)。在
optmatch
包中,执行最佳配对和完全匹配,有一个约束可以添加,称为“反精确匹配”,听起来完全像你想要的。具有相同反精确匹配变量值的单元将不会相互匹配。这可以使用optmatch::antiExactMatch()
实现。在
Matching
程序包中,可将restrict
参数提供给匹配函数以限制某些匹配。您可以通过限制同一公司中的所有观测对来手动创建限制矩阵,然后将该矩阵提供给Match()
。