我正在对各种暴露和结果进行线性回归分析。 每个分析都有 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
我设法解决了它。 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))