r - 在 R 中使用 GAMM 混合模型运行 Cox.ph 模型
问题描述
我是使用 GAM 和样条线的新手。我正在运行一个生存模型,在该模型中,我想用两个变量控制的受试者年龄来模拟事件时间。这是使用带有 coxph 的传统生存模型的示例:
library(survival)
fit_cox<-coxph(Surv(time, event)~ age+ var1 + var2, data=mydata)
我怀疑 var1 和 var2 与结果之间的关系不是线性的,而且我认为我可以在我的模型中包含随机效应(转向混合效应模型 gamm)。我试过这种语法:
library(mgcv)
fit_surv<-Surv(time, event)
fit_gam<-gam(fit_surv ~ age + s(var1) + s(var2), data = mydata, family = cox.ph())
并包括随机效应:
library(gamm4)
fit_gamm <- gamm4(fit_surv ~ age + s(var1) + s(var2), random = ~(1 | ID), data = mydata, family = cox.ph)
我的问题是: 1. 在 fit_gam 中,我不知道如何总结这个模型并查看系数表和绘制模型。这个错误来找我:
summary(fit_gam)
“Ops.Surv(w, object$y) 中的错误:对生存时间的无效操作”
- 在 fit_gamm 中,我无法运行模型,因为语法出现了一些错误,或者我可能无法包含 surv?错误是:“ncol(x) 中的错误:找不到对象‘x’”
先感谢您!
解决方案
正如评论中提到的,简单的高斯弱点(高斯随机截距)可以直接在mgcv::gam
调用中指定,例如通过添加... + s(ID, bs = "re") + ...
到您的公式中(注意ID
必须是一个因子变量)。
或者,您可以将数据转换为所谓的分段指数数据 (PED) 格式,并使用任何 GA(M)M 软件拟合模型,然后称为分段指数加法混合模型 (PAMM)。这是一个例子:
library(coxme)
library(mgcv)
library(pammtools)
lung <- lung %>% mutate(inst = as.factor(inst)) %>% na.omit()
## cox model with gaussian frailty
cme <- coxme(Surv(time, status) ~ ph.ecog + (1|inst), data=lung)
## pamm with gaussian frailty
ped <- lung %>% as_ped(Surv(time, status)~., id="id")
pam <- gam(ped_status ~ s(tend) + ph.ecog + s(inst, bs = "re"),
data = ped, family = poisson(), offset = offset)
## visualize random effect:
gg_re(pam)
# compare coxme and pamm estimates:
re <- tidy_re(pam)
plot(cme$frail$inst, re$fit, las=1, xlab="Frailty (cox)", ylab="Frailty (PAM)")
abline(0, 1)
## with gamm4
library(gamm4)
#> Loading required package: Matrix
#> Loading required package: lme4
#>
#> Attaching package: 'lme4'
#> The following object is masked from 'package:nlme':
#>
#> lmList
#> This is gamm4 0.2-5
pam2 <- gamm4(ped_status ~ s(tend) + ph.ecog, random = ~(1|inst),
family = poisson(), offset = ped$offset, data = ped)
lattice::qqmath(ranef(pam2$mer)$inst[, 1])
由reprex 包(v0.2.1)于 2018 年 12 月 8 日创建
推荐阅读
- elasticsearch - 如何在嵌套 script_score 的过滤器之间添加?
- python - 当固定纵横比 QWidget 无法填满整个窗口时创建填充
- arrays - 有没有办法简化在 spark-sql 中使用嵌套数据?
- javascript - Patternlab:拒绝执行内联脚本,因为它违反了以下内容安全策略指令:“default-src 'none'”
- javascript - 在滚动移动到下一部分
- r - filter() 未按预期运行的奇怪案例
- python - 对 Tiingo 的 Python 3.9.1 API 调用在某些代码上失败
- reactjs - 将数据复制到剪贴板无法正常工作
- r - 整洁的输出表和观星器
- c# - WPF - 绑定 IsMouseOver 可见性