如何计算3组或更多组之间的SMD?

2024-03-06

我有兴趣通过一个分层变量计算成对标准化平均差(SMD)。通常这是在两组之间计算,但是我们可以在 3 组或更多组中进行计算吗?

附:我是 gtsummary 包的忠实粉丝,所以我尝试使用以下方法进行此分析示例 2 来自这个令人惊奇的包 http://www.danieldsjoberg.com/gtsummary/reference/add_difference.html如下:

library(tidyverse)
library(gtsummary)
#> #BlackLivesMatter
add_difference_ex2 <-
  trial %>%
  mutate(trt=ifelse(age<40,"Drug C", trt)) %>% 
  select(trt, age, marker, grade, stage) %>%
  tbl_summary(
    by = trt,
    statistic = list(all_continuous() ~ "{mean} ({sd})"),
    missing = "no",
    include = c(age, marker, trt)
  ) %>%
  add_n() %>%
  add_difference(adj.vars = c(grade, stage))
#> 11 observations missing `trt` have been removed. To include these observations, use `forcats::fct_explicit_na()` on `trt` column before passing to `tbl_summary()`.
#> Error: 'tbl_summary'/'tbl_svysummary' object must have a `by=` value with exactly two levels

Created on 2021-10-27 by the reprex package https://reprex.tidyverse.org (v2.0.1)


要添加成对标准化均差 (SMD),您首先需要定义一个函数来计算并返回成对 SMD 估计值。完成此操作后,您可以使用通用函数将其添加到 gtsummary 表中add_stat()。下面的例子!

library(gtsummary)
library(tidyverse)

# function to calculate pairwise smd
pairwise_smd <- function(data, variable, by, ...) {
  data <- 
    dplyr::select(data, all_of(c(variable, by))) %>%
    rlang::set_names(c("variable", "by")) %>%
    dplyr::filter(complete.cases(.)) %>%
    arrange(desc(.data$by))
  
  tibble(exclude = unique(data$by)) %>%
    mutate(
      include = map_chr(.data$exclude, ~unique(data$by) %>% setdiff(.x) %>% paste(collapse = " vs. ")),
      data_subset = 
        map(
          .data$exclude, 
          ~data %>%
            filter(!.data$by  %in% .x) %>%
            mutate(by = factor(.data$by))
        ),
      smd = map_dbl(.data$data_subset, ~smd::smd(.x$variable, .x$by)$estimate)
    ) %>%
    select(include, smd) %>%
    spread(include, smd)
}

tbl <-
  trial %>%
  select(age, grade, stage) %>%
  tbl_summary(
    by = grade,
    statistic = list(all_continuous() ~ "{mean} ({sd})"),
    missing = "no"
  ) %>%
  add_stat(fns = everything() ~ pairwise_smd)

enter image description here Created on 2021-10-27 by the reprex package https://reprex.tidyverse.org (v2.0.1)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何计算3组或更多组之间的SMD? 的相关文章

随机推荐

  • 在 Yii2 中隐藏 URL 中的网页

    我已遵循中描述的答案这个问题 https stackoverflow com questions 27178364 yii 2 0 hiding basic web from the url along with the index php
  • C++ OutputIterator 后递增要求

    C 要求 OutputIterator 类型X支持形式的表达式r where r是一个实例X 此后缀增量在语义上必须等同于 X tmp r r return tmp 并且必须返回一个可转换为的类型X const 在 C 11 中 请参阅 2
  • 在 Visual Studio 中从包管理器控制台使用 git

    我正在尝试使用git从 Visual Studio 2010 中的包管理器控制台窗口 git命令按预期运行 与网络相关的命令除外 当我尝试时git push origin masterStudio 停止响应 代码已推送到 github co
  • Include() 然后包含() 在每个层次结构表策略中抛出“序列包含多个匹配元素”异常

    我正在使用 Entity Framework 7 和代码优先 并且我有一个涉及 3 个级别的父子关系的模型 Corporations have companies Companies属于一个corporation并有factories Fa
  • Q列出并删除

    我有一个QList带有指向类类型对象的指针Model 我想适当删除这个QList使用后 我知道 Qt 的哲学是避免 C 风格的内存管理 我如何delete this QList 你可以使用q删除全部 http qt project org
  • WPF ShowDialog 和 ElementHost

    是否可以从作为 ElementHost 子级的 WPF 用户控件显示模态窗口 并将模态窗口的所有者 父级设置为包含的 Form 控件 我猜您不能执行此操作 因为 Owner 属性采用 Window 的实例 而我想将其设置为 Element
  • 使用 UINavigatonController 有条件地跳过 iOS 5 应用程序中的 UIViewController

    在我们的 iOS 应用程序中 有三个UIViewController一个接着一个 我们想根据某些条件跳过中间的 直接从第一到第三 但是 用户应该能够通过第三个控制器上的 后退 按钮返回到第二个控制器 I tried self perform
  • 获取树枝模板文件中使用的所有变量[重复]

    这个问题在这里已经有答案了 是否可以获取树枝模板中使用的所有变量 例如 在模板上 ul for item in navigation li a href item caption a li endfor ul h1 My Webpage h
  • 从 Firefox 扩展设置 HTTP 标头

    如何在 Firefox 扩展中设置 HTTP 标头 我将做到这一点 以便这些仅在访问我的网站时发送 以便我可以检测插件是否已安装 如果安装了 则不会推广该插件 这是我发现的最紧凑的方法 Components classes mozilla
  • 我应该使用哪个移动开发开源框架? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我的公司想开发一个移动应用程序 Web 应用程序 本机应用程序还是混合应用程序 他们其实不知道 在这种情况下 他们要求我对移动开发的开源框架 跨
  • 如何重置参数值以便代理可以再次请求参数?

    我创建了一个对话流代理和其中的多个意图 其中一种意图需要 2 个参数 账户和余额类型 然后 它发送 Webhook 请求 其中写入代码以检查数据库中是否存在帐号 如果是的话 它会获取余额并发回给用户 现在 如果帐号不存在 我必须要求用户再次
  • 使用 json4s 序列化和反序列化 scala 枚举或 case 对象

    假设我有一个枚举或密封的案例对象组 如下所示 sealed abstract class Status case object Complete extends Status case object Failed extends Statu
  • Oracle ORDER BY 中忽略与号 (&) 字符

    我正在 Oracle 中运行一个查询 该查询按可能包含带有 号的值的列排序 然而 排序算法似乎忽略了 符号 例如 select from select txt from dual union select P txt from dual u
  • 基于查询的触发器是原子的吗?

    我有一个带有序列号的表 此序列号将会更改 并且引用自动编号将不起作用 我担心触发器的值会发生冲突 如果两个事务同时读取 我已经对 3 个连接运行了模拟测试 每个连接约 100 万条记录 没有发生冲突 CREATE TABLE aut au
  • 如何将类实例分配给变量并在其他类中使用它

    我正在做一些 Python 的基本练习 在这里 我定义了 3 个类 现在 我需要在另一个类中传递第一个类的实例 并在最后一个类中使用它 我写了如下代码 defining first class class MobileInventory d
  • 如何检查 Activity 是否存在多个实例

    我一直在尝试自学 Android 并且刚刚了解到我一直在创建相同的多个实例Activity在我的代码中 从概念上讲 我知道它在那里 但是有没有我可以使用的工具 例如 DDMS see我创建了多个实例 这也将帮助我了解我的实验是否Intent
  • 在 ASP.NET 中设置电子商务 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我是电子商务新手 我正在寻找一个关于为 ASP NET 设置休闲 ECom 或将其插入现有站点 的特殊指南 其中包含产品目录 购物车 商家
  • JavaScript,执行函数

    我有下一个功能 var hideAll function code return 我在另一个函数中像回调一样使用这个函数 当我像这样使用它时 function params hideAll 一切正常 但是当我使用时 function par
  • Angular 2 取消未经身份验证的路线导航

    我有一个应用程序 有 3 个链接 主页 登录 user sign in 和用户详细信息 user 当用户单击 主页 时 我的应用程序将公开显示内容 当用户单击 用户详细信息 时 我的应用程序将显示弹出登录窗口 如果用户取消登录弹出窗口 我的
  • 如何计算3组或更多组之间的SMD?

    我有兴趣通过一个分层变量计算成对标准化平均差 SMD 通常这是在两组之间计算 但是我们可以在 3 组或更多组中进行计算吗 附 我是 gtsummary 包的忠实粉丝 所以我尝试使用以下方法进行此分析示例 2 来自这个令人惊奇的包 http