R 匹配3个治疗组和;绘制加权前后的ASMD

R 匹配3个治疗组和;绘制加权前后的ASMD,r,matching,R,Matching,我正在使用TWANG匹配3个治疗组,我可以生成图1和图2(如图所示),但不幸的是,我无法生成图3来评估加权前后的绝对标准化平均差(ASMD) 这是我的密码: mnps.newtest1.ATE <- mnps(ttt_gps.3gp.Neo.Adj.dCRT ~ AGE + SEX + Race_2psW.O + CDCC_2gps01.2 + Histology_3gps + TUMOR_SIZE_R +

我正在使用TWANG匹配3个治疗组,我可以生成图1和图2(如图所示),但不幸的是,我无法生成图3来评估加权前后的绝对标准化平均差(ASMD)

这是我的密码:

mnps.newtest1.ATE <- mnps(ttt_gps.3gp.Neo.Adj.dCRT ~ AGE + SEX + 
                     Race_2psW.O + CDCC_2gps01.2 + Histology_3gps +
                   TUMOR_SIZE_R + YEAR_OF_DIAGNOSIS,
                  data = testdf2, 
                  n.trees=10000,
                  interaction.depth=2,
                  shrinkage=0.01,
                   perm.test.iters=0,
                  stop.method=c("es.mean","ks.mean"),
                  estimand = "ATE",
                  verbose=F)
*****矩阵中的错误(unlist(value,recursive=FALSE,use.names=FALSE),nrow=nr,:“dimnames”[2]的长度不等于数组 附加扩展数据块:警告消息:在is.na(e2)中:is.na()应用于 “NULL”类型的非-(列表或向量)*****

在谷歌搜索了这个错误后,我在1个网站()上找到了这个解决方案,但它还不起作用

plot(as.matrix(mnps.newtest1.ATE), plots = 3)
if(长度(治疗)>2&x$estimand==“ATE”)停止时出错(“ \“treatments\”参数必须为null或长度为1或2。”):
参数的长度为零


非常感谢您的任何帮助

这可能是因为您使用了
tibble
而不是数据帧(即
testdf2
)。如果您使用
tidyverse
中的包来创建数据帧,如
haven
。将
testdf2
替换为
as.data.frame>,就会发生这种情况(testdf2)
如果这是问题的原因,则应解决该问题

如果您想让平衡图显示得更漂亮,我建议使用
cobalt
包(我就是为此编写的)。运行
library(cobalt)
后,运行
love.plot(bal.tab(mnps.newtest1.ATE))
,它提供了具有相同信息的图(请参见下面的示例和一些附加选项)

您可以设置
which.treat=NULL
以查看所有成对差异


嗨,诺亚,你会如何选择特定的成对比较与
哪种治疗方法进行比较?
?另外,我有7个治疗臂,试图找到一种方法来显示所有的比较。我问了上面的
哪种治疗方法,因为我想一次做两对,但可能类似于
facet\u wrap()
可以工作吗?我只是不知道在这个用例的facet wrap函数中使用什么查看如何使用
哪个.treat
。要使用
facet_wrap()
,请使用
love.plot(.)+facet_wrap(vars(treat),ncol=5)
。我要告诉你,显示21个比较并不是显示平衡的最佳方式。使用
pairwise=FALSE
将提供更有用的显示。
plot(as.matrix(mnps.newtest1.ATE), plots = 3)