提问人:Stella 提问时间:10/28/2023 更新时间:10/28/2023 访问量:29
如何在 R 中进行部分匹配
How to do a partial matching in R
问:
数据集 : 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 比较不同文件中的两列
评论