如何在 R 中进行部分匹配

How to do a partial matching in R

提问人:Stella 提问时间:10/28/2023 更新时间:10/28/2023 访问量:29

问:

数据集 : bpp

匹配变量:第 0 组:无 Ace 抑制剂。1:ACE抑制剂 组= 1 - bpp$gr

倾向分数:dbp、n_bpclasses、使用 delta。

确切:月份,性别

部分:sbp(3 分),年龄(2 岁)。

(1)产生匹配。

(2) 与 Matchit 的匹配对比

库(MatchIt)

版本 1

propensity_model <- glm(Group ~ dbp + n_bpclasses, data = bpp, family = binomial())
bpp$propensity <- predict(propensity_model, type = "response")


m.out <- matchit(Group ~ dbp + n_bpclasses, 
                 data = bpp, 
                 method = "nearest",
                 exact =  "sex",
                 caliper = 0.05, 
                 # This is for the propensity score
                 distance = bpp$propensity)

summary(m.out)

版本 2

基于倾向分数的匹配,准确用于月份和性别,部分用于 sbp 和年龄

match_out <- matchit(Group ~ dbp + n_bpclasses + sex + sbp + age, 
                     data = bpp, 
                     method = "nearest", 
                     distance = bpp$propensity,
                     exact =  "sex",
                     caliper = 0.2)

summary(match_out)

版本 3

用户提供的倾向评分

bpp['Group'] = 1 - bpp$gr
bpp$pscore <- predict(glm(Group ~ dbp + n_bpclasses, data=bpp, family=binomial()), type="response")

# Create distance matrix
distance <- Matching::GenMatch(Tr=bpp$Group, X=bpp$pscore, M=1,
                               exact = bpp$sex,
                               partial = list(sbp=3, age=2))

matched_genmatch <- Match(Y=NULL, Tr=bpp$Group, X=bpp$pscore, Weight.matrix=distance)
matched_data_genmatch <- bpp[unlist(matched_genmatch[c("index.treated", "index.control")]), ]

我想我尝试了很多版本,但没有一个可以通过过滤匹配过程来进行部分匹配。

任何人都可以为这个问题提供某种解决方案?我真的很感激!!

r 匹配 匹配

评论


答: 暂无答案