【问题标题】:Use Mahalonobis distance and caliper in MatchIt package在 MatchIt 包上使用 Mahalanobis 距离和卡尺
【发布时间】:2020-11-23 11:50:06
【问题描述】:

首先:这个问题可能与this stackoverflow post 重复/已经解决。

我想使用 MatchIt 包在我的数据集中使用马氏距离执行完全阻塞匹配。我有两个要用于匹配的观察到的协变量(年龄和性别)。

我知道我可以使用以下参数执行基于马氏的匹配:

formula <- as.formula("group ~ sex_boolean + age")
m.out <- matchit(formula=formula,
                 data=data_df,
                 distance='mahalanobis')

site_df_matched <- get_matches(m.out,data=data_df)

但这仅使用最近的邻居执行基于马氏的匹配。如果我想更严格怎么办?是否可以在马氏匹配中引入卡尺?想法如下:对于少数群体中的每个单位,在多数群体中找到一个与马氏距离最小的单位并且位于定义的卡尺内。如果没有来自多数群体的单元,则应丢弃来自少数群体的相应单元。

结果应该是大小相等的治疗组和对照组,其中包含在各自协变量中接近的单位对。 “接近度”应该可以通过卡尺设置的严格程度来控制。更严格的卡尺会导致更多的少数群体丢弃单位。

也许我对基于 mahalanobis 的匹配过程也有错误的理解,但是否可以(并推荐)使用 MatchIt 来做到这一点?

【问题讨论】:

    标签: r matching mahalanobis propensity-score-matching


    【解决方案1】:

    是的,使用MatchIt 4.0.0 及更高版本很简单。如果要在马氏距离上进行匹配但包含倾向得分卡尺,则 distance 参数需要与倾向得分相对应,mahvars 参数控制执行马氏距离匹配的协变量。例如,要在估计包含除这两个变量之外的其他变量(例如,raceeduc)的倾向得分后对 sexage 执行马氏距离匹配,您将运行以下代码:

    m.out <- matchit(treat ~ age + sex + race + educ, #variables used in PS
                     data = data_df,                  #dataset
                     distance = "glm",                #method of estimating PS
                     caliper = .25,                   #width of caliper on PS
                     mahvars = ~ age + sex)           #variables used in Mahalanobis distance
    

    如果您想在不涉及倾向得分的情况下执行马氏距离匹配,下面的代码可以实现:

    m.out <- matchit(treat ~ age + sex, 
                     data = data_df, 
                     distance = "mahalanobis")
    

    如果您出于任何原因(例如,卡尺或公共支持)需要估计倾向得分,则必须使用第一种语法。如果不涉及倾向得分,则第二种语法有效。只要卡尺位于其他提供的变量上,您仍然可以使用第二种语法将卡尺放在对上;例如,要放置 age 的 0.25 标准差的卡尺,您可以输入 caliper = c(age = .25)。您可以一次将卡尺放在多个变量上,包括倾向得分(如果使用第一种语法)。

    这在最近邻匹配的帮助页面中有详细说明,可以查看here?method_nearest

    【讨论】:

      猜你喜欢
      • 2013-04-22
      • 2014-07-09
      • 2021-06-25
      • 2013-11-11
      • 1970-01-01
      • 1970-01-01
      • 2021-12-14
      • 2020-05-06
      • 2012-05-21
      相关资源
      最近更新 更多