【问题标题】:Exponentiating GAM coefficients and confidence intervals using broom::tidy使用 broom::tidy 为 GAM 系数和置信区间取幂
【发布时间】:2021-02-19 01:39:57
【问题描述】:

我正在使用mgcv::gam 运行广义加法模型,并尝试使用broom:tidy 组织我的结果,但tidy 显然不会对 GAM 的系数或置信区间进行取幂,尽管它适用于常规 glm 模型。是否有 broom::tidy 方法对 GAM 中的系数和 CI 求幂?我专门询问tidy,因为我想在gtsummary 创建的回归表中使用结果。

library(tidyverse)
library(magrittr)
library(mgcv)
library(parameters)
library(gtsummary)
library(broom)

# sample data

id <- 1:2000
gender <- sample(0:1, 2000, replace = T)
age <- sample(17:64, 2000, replace = T)
race <- sample(0:1, 2000, replace = T)
health_score <- sample(0:25, 2000, replace = T)
dead <- sample(0:1, 2000, replace = T)
days_enrolled <- sample(30:3000, 2000, replace = T)

df <- data.frame(id, gender, age, race, health_score, dead, days_enrolled)

# model

model <- gam(dead ~ gender + s(age) + race + s(health_score) + offset(log(days_enrolled)),
            data = df, method = "REML", family = nb())

# both give the same output:

tidy(model, parametric = T, conf.int = T)
tidy(model, parametric = T, conf.int = T, exponentiate = T)

【问题讨论】:

  • 您能否使用标准数据集或与您的数据相似的数据样本重现相同的问题?
  • 我有太多模型在运行,并且在返回时意识到它不会对 CI 或系数进行指数化。我很抱歉。编辑澄清并添加reprex。

标签: r gam broom gtsummary


【解决方案1】:

您可以直接使用tbl_regression() 对结果求幂。如果这不是你想要的,请告诉我。

library(tidyverse)
library(mgcv)
library(parameters)
library(gtsummary)
library(broom)

# sample data

id <- 1:2000
gender <- sample(0:1, 2000, replace = T)
age <- sample(17:64, 2000, replace = T)
race <- sample(0:1, 2000, replace = T)
health_score <- sample(0:25, 2000, replace = T)
dead <- sample(0:1, 2000, replace = T)
days_enrolled <- sample(30:3000, 2000, replace = T)

df <- data.frame(id, gender, age, race, health_score, dead, days_enrolled)

# model

model <- gam(dead ~ gender + s(age) + race + s(health_score) + offset(log(days_enrolled)),
             data = df, method = "REML", family = nb())


tbl_regression(model, exponentiate = TRUE)

【讨论】:

  • 这不起作用。我收到一条错误消息:“置信区间仅适用于参数项。错误:Tibble 列必须具有兼容的大小。*大小 28:现有数据。*大小 0:列‘变量’。只有大小为 1 的值被回收。”然后在broom.helperstibble 中有关于回溯的信息。在调用中添加“parametric = T”没有帮助。
  • 好吧,你是对的,现在 github 上有一个开放的 pull request 发布在这里:github.com/ddsjoberg/gtsummary/pull/792
  • 非常感谢您调查此事,迈克!我在一个安全的计算机系统上,所以很遗憾我无法访问 GitHub。 broom 和/或 gtsummary 按原样解决这个问题有什么其他方法吗?
  • 如果有用的话,parameters 包中的model_parameters 可以在gam 模型对象上工作,我可以从中获得一点乐趣。我知道可以编写自定义整理器以传递给tbl_regression,尽管我无法弄清楚如何为此目的使用model_parameters。有可能吗?
  • 好问题!也许您可以联系该软件包的创建者,他反应迅速,可能会很快给您答复。不幸的是你没有访问 github!
猜你喜欢
  • 2018-09-14
  • 2020-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-12
  • 2018-03-22
  • 1970-01-01
  • 2020-10-06
相关资源
最近更新 更多