匹配3个治疗组并在加权前后绘制ASMD

时间:2019-03-10 17:05:41

标签: r matching

我正在使用TWANG来匹配3个治疗组,我可以生成图1和图2(此处显示https://cran.r-project.org/web/packages/twang/vignettes/mnps.pdf),但是不幸的是,我无法生成图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)
  

警告消息:以ps(formula = currFormula,data = currDat,n.trees   = n.trees [i],:最佳迭代次数接近指定的n.trees。 n.trees可能设置得太小,平衡性更好   可以通过将n.trees设置为更大来获得。

plot(mnps.newtest1.ATE, plots = 3)
  

*****矩阵中的错误(unlist(值,递归= FALSE,use.names = FALSE),nrow = nr,“ dimnames”的长度[2]不等于数组   此外:警告消息:在is.na(e2)中:is.na()应用于   非(列表或向量)类型为'NULL'*****

然后在搜索了该错误之后,我在1个网站(length of 'dimnames' [2] not equal to array extent when using corrplot function from a matrix read from a csv file)上找到了该解决方案,但仍无法解决

plot(as.matrix(mnps.newtest1.ATE), plots = 3)
  

if(length(Transactions)> 2&x $ estimand ==“ ATE”)stop(“ The   \“ treatments \”参数必须为null或长度为1或2。“):
  参数的长度为零

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:1)

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

如果您想更漂亮地显示余额图,我建议使用cobalt程序包(为此目的我为此编写了程序包)。运行library(cobalt)后,运行love.plot(bal.tab(mnps.newtest1.ATE)),这将为绘图提供相同的信息(请参见下面的示例以及一些其他选项)。

enter image description here

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

enter image description here