【问题标题】:match 3 treatment groups & plot ASMD before and after weighting匹配 3 个治疗组并在加权前后绘制 ASMD
【发布时间】:2019-03-10 17:05:41
【问题描述】:

我正在使用 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(value,recursive = 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(treatments) > 2 & x$estimand == "ATE") stop("The \"treatments\" 参数必须为 null 或长度为 1 或 2。") :
参数长度为零

任何帮助将不胜感激

【问题讨论】:

    标签: r matching


    【解决方案1】:

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

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

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

    【讨论】:

    • 嗨,Noah,如何选择与 which.treat 的特定成对比较?
    • 另外,我有 7 个治疗组,并试图想出一种方法来显示所有的比较。我在上面询问了which.treat,因为我想一次做几对,但也许像facet_wrap() 这样的东西可以工作吗?我只是不知道在这个用例的 facet wrap 函数中使用什么
    • 查看如何使用which.treathere。要使用facet_wrap() 包装,请执行love.plot(.) + facet_wrap(vars(treat), ncol = 5)。我会告诉你,显示 21 个比较并不是显示平衡的最佳方式。使用pairwise = FALSE 将提供更有用的显示。
    猜你喜欢
    • 2022-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-14
    • 1970-01-01
    相关资源
    最近更新 更多