在R中使用GAMM混合模型运行Cox.ph模型

时间:2018-11-26 13:31:35

标签: r survival-analysis gam random-effects

我是使用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)中的错误:生存时间上的无效操作”

  1. 在fit_gamm中,我无法运行模型,因为在语法上犯了一些错误,或者我可能没有包含surv?错误是: “ ncol(x)中的错误:找不到对象'x'”

提前谢谢!

1 个答案:

答案 0 :(得分:2)

如评论中所述,可以在mgcv::gam调用中直接指定简单的高斯脆弱性(高斯随机截距),例如通过将... + s(ID, bs = "re") + ...添加到公式中(请注意ID必须是一个因子变量)。

或者,您可以将数据转换为所谓的逐段指数数据(PED)格式,并使用任何GA(M)M软件拟合模型,然后将其称为Piece-wise exponential Additive Mixed Models (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 package(v0.2.1)于2018-12-08创建