首页 > 解决方案 > 使用 mgcv gam() 和 gtsummary tbl_uvregression()

问题描述

我们如何为tbl_uvregression()with中的某些变量指定平滑样条拟合method = gam

data %>% 
 select(outcome, predictors) %>% 
 tbl_uvregression(
   method = gam,
   y = outcome,
   method.args = list(family = binomial),
   exponentiate = T) 

例如,如果我想在变量 x1 的 gam 模型公式中表示 s(x1),我们如何在上面的代码中添加它?

标签: gtsummary

解决方案


您不能将变量包装在函数中,例如s()in tbl_uvregression()。您将需要使用 构建单独的表格tbl_regression(),然后将它们堆叠在一起。下面的代码示例!但是,这有点奇怪,因为平滑项没有单一的优势比......所以你只是得到一个 p 值表......

library(gtsummary)
packageVersion("gtsummary")
#> [1] '1.4.1'
library(tidyverse)
library(mgcv)
#> Loading required package: nlme
#> 
#> Attaching package: 'nlme'
#> The following object is masked from 'package:dplyr':
#> 
#>     collapse
#> This is mgcv 1.8-35. For overview type 'help("mgcv-package")'.


tbl_uv <-
  tibble(variable = c("age", "marker")) %>%
  rowwise() %>%
  mutate(
    # build reg models
    tbl = 
      glue::glue("response ~ s({variable})") %>%
      as.formula() %>%
      gam(data =  trial, family = binomial) %>%
      tbl_regression() %>%
      list()
  ) %>%
  # stack the regression tables
  pull() %>%
  tbl_stack()

在此处输入图像描述 reprex 包于 2021-05-20 创建 (v2.0.0 )


推荐阅读