编写使用 mids 对象和 gtsummary 的函数时出错

问题描述 投票:0回答:1

我正在对各种暴露和结果进行线性回归分析。 每个分析都有 3 个模型,并使用由 mouse() 创建的估算数据集。 我正在尝试创建一个函数,在该函数中我只能指定结果和暴露变量,并且它为我提供了包含使用 gtsummary 的所有模型的结果表,但我收到了未找到结果变量的错误。 我怀疑这与函数处理 mids 对象的方式有关,但找不到解决方案。

library(mice)
#> Warning: package 'mice' was built under R version 4.3.3
#> 
#> Attaching package: 'mice'
#> The following object is masked from 'package:stats':
#> 
#>     filter
#> The following objects are masked from 'package:base':
#> 
#>     cbind, rbind
library(gtsummary)
#> Warning: package 'gtsummary' was built under R version 4.3.3
#> #BlackLivesMatter

mtcars <- mtcars
mtcars[2,"gear"] <- NA
mtcars[6,"vs"] <- NA

imp_mtcars <- mice(mtcars, m = 4, maxit = 1)
#> 
#>  iter imp variable
#>   1   1  vs  gear
#>   1   2  vs  gear
#>   1   3  vs  gear
#>   1   4  vs  gear

generate_models <- function(imp_df, outcome_var, exposure_var) {
  require(mice)
  require(gtsummary)
  
  # Base model with just the exposure
  m0 <- with(imp_df, lm(paste(outcome_var, "~", exposure_var))) %>% 
    tbl_regression() %>% 
    add_glance_table(include = c(adj.r.squared))
  
  # Adjusted model 1
  m1 <- with(imp_df, lm(paste(outcome_var,"~", exposure_var, "+ vs"))) %>%
    tbl_regression() %>%
    add_glance_table(include = c(adj.r.squared))
  
  # Adjusted model 2
  m2 <- with(imp_df, lm(paste(outcome_var,"~", exposure_var, "+ vs + gear"))) %>%
    tbl_regression(include = exposure_var) %>%
    add_glance_table(include = c(adj.r.squared))
  
  # Combine the tables
  tbl_global <- tbl_merge(list(m0, m1, m2),tab_spanner = c("**Unadjusted**", "**Model 1**", "**Model 2**"))
  
  return(tbl_global)
}

generate_models(imp_mtcars, "mpg", "hp")
#> Error in eval(predvars, data, env): objeto 'mpg' não encontrado

创建于 2024-04-16,使用 reprex v2.1.0

r function gtsummary r-mice
1个回答
0
投票

我设法解决了它。 with 函数创建一个环境来迭代 mids 对象中包含的许多数据集。 我将模型公式放在 {} 中,以便可以在此环境中读取它,并使用 as.formula 来明确该表达式是一个公式并且它有效。

# Analyzing each imputed dataset directly within with()
  m0 <- with(imp_df, {
    lm(as.formula(paste(outcome_var, "~", exposure_var)))}) %>%
      tbl_regression() %>%
      add_glance_table(include = c(adj.r.squared))
© www.soinside.com 2019 - 2024. All rights reserved.