如何解决将MatchIt用于多站点数据集不起作用
我想使用MatchIt
软件包在多站点数据集中匹配患者和对照组。要进行匹配,应同时使用性别和年龄,并且匹配过程应不更换。基本原理应该是遍历每个站点,在每个站点内进行匹配 ,然后将匹配的数据帧连接起来,以获得具有匹配样本的多站点数据帧。
这是我的数据集的样子(只有前七行让您快速直观):
> multi_site_df
age site group group_boolean sex_boolean
1 53 site_B patient 1 0
2 30 site_B patient 1 0
3 27 site_B control 0 0
4 32 site_B patient 1 1
5 63 site_B control 0 0
6 34 site_B control 0 0
7 34 site_B patient 1 0
...
关于此多站点数据集的一件事是,在某些站点中,患者人数多于对照组,而在其他站点中,情况则相反:
site group n
1 site_A control 44
2 site_A patient 44
3 site_B control 100
4 site_B patient 79
5 site_C control 26
6 site_C patient 32
7 site_D control 25
8 site_D patient 33
我开始写一些对多站点数据集的每个子集使用MatchIt
的代码:
# get unique sites
sites <- unique(multi_site_df$site)
# iterate over sites and do the matching for each site
for (site in sites) {
site_df <- multi_site_df[which(multi_site_df$site == site),]
m.out <- matchit(formula=as.formula('group_boolean ~ sex_boolean + age'),data=site_df,method='nearest')
m.out
site_df_matched <- get_matches(m.out,site_df)
}
但是它给了我这个错误:
Warnmeldungen:1:在matchit2nearest(c(
指定的顺序进行匹配180
= 0L,181
= 1L,182
= 0L,183
= 1L ,:控制权少于处理的单位和匹配项 无需更换。并非所有经过处理的单位都会获得匹配。 处理的单位将按照m.order指定的顺序进行匹配: 最大2:在matchit2nearest(c({238
= 0L,239
= 0L,240
= 0L,241
= 0L,:控制量少于处理后的单位,并且匹配时没有 替代。并非所有经过处理的单位都会获得匹配。已处理 单位将按照m.order:最大
此警告会导致匹配的数据帧仅包含NA
值。它似乎与this StackOverflow post有关,并且某些站点包含的患者多于对照组,反之亦然。除了为每个站点创建新的结果变量notY
之外,还有其他解决方法吗?对我来说,如果丢弃患者或对照,那并不重要。逻辑将是:“从少数群体中的每个单元中找出多数群体中的最佳匹配,并丢弃所有剩余的单元”
解决方法
任何解决方法都比创建新的处理变量更复杂。您可以编写足够简单的代码来检查每个站点中控制单元或已处理单元是否更丰富,并基于此切换处理变量的值,然后照常运行MatchIt
。这是您可能的方法:
if (sum(site_df$group_boolean == 1) > sum(site_df$group_boolean == 0) {
site_df$group_boolean <- 1 - site_df$group_boolean
}
那很简单。请注意,在MatchIt
4.0.0(尚未在CRAN中使用)中,有一个新的estimand
参数,您可以在"ATT"
(默认)和"ATC"
(即后者可根据需要在匹配中切换治疗组和对照组的角色。但是您仍然必须告诉matchit()
您想要哪个,因此必须执行该检查。重要的是,matchit()
失败时,其对处理单位的控制较少,因为当焦点组发生变化时,估计效果的含义会完全改变。当前的行为迫使用户考虑他们是否在做出正确的选择。
我也希望您知道您在性别和年龄上不匹配,而在对性别和年龄组进行逻辑回归的估计倾向得分上。配对的单位实际上在性别和年龄上可能并不彼此接近。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。