当Schoenfeld残差不佳时,比例风险回归模型有哪些选择?


15

我正在使用进行R的Cox比例风险回归coxph,其中包括许多变量。Martingale残差看起来很棒,而Schoenfeld残差对于ALMOST所有变量来说都很棒。存在三个变量的Schoenfeld残差不平坦,并且变量的性质使得它们可以随时间变化是有意义的。

这些是我不太感兴趣的变量,因此将它们分层即可。但是,它们都是连续变量,而不是类别变量。因此,我认为阶层不是可行的路线*。我试图建立的变量和时间之间的相互作用,如所描述这里,但我们得到的错误:

  In fitter(X, Y, strats, offset, init, control, weights = weights,  :
  Ran out of iterations and did not converge

我正在处理将近1000个数据点,并且正在处理具有多个因素的六个变量,因此感觉就像我们正在限制如何对这些数据进行切片和切块的极限。不幸的是,我尝试过使用更少的包含变量的所有较简单的模型显然都较差(例如,Schoenfeld残差对于更多变量来说更加脆弱)。

我有什么选择?由于我不在乎这些行为不佳的特定变量,因此我只想忽略它们的输出,但是我怀疑这不是有效的解释!

*一个是连续的,一个是大于100的整数,一个是6的整数。


2
如何将扩展的Cox模型与时间相关的变量用于时间交互作用呢?
柯克

考虑使用时变协变量选项(如Stata中的-tvc-)怎么样?
卡洛·拉扎罗

Answers:


1

如果您对基准危害可能是什么样子有所了解,最优雅的方法是使用参数化生存模型(Gompertz,Weibull,Exponential等)。

如果您想使用Cox模型,则可以采用具有随时间变化的系数扩展Cox模型。请记住,还有扩展的Cox模型,其时间取决于协变量-这些不能解决您的问题!

对于R,请参见此处:http : //cran.r-project.org/web/packages/survival/vignettes/timedep.pdf


1

几个想法-

1)尝试使用Royston-Parmar建模方法,例如http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0047804及其参考。我们取得了有益的成果。

2)对连续变量进行居中和标准化可以在数值上有用。

3)在许多因素具有多个级别的模型中,有几个级别基本上没有数据。合并级别以消除这些级别,但是基于良好的实质性标准可能会非常有帮助。

祝好运!


1

如果无法与基础时间进行互动,则可以尝试 步进功能(有关更多信息,请参见Therneau的2016年vignett e)。

阶跃函数按特定间隔按特定系数分层。在查看有问题的协变量(即plot(cox.zph(model.coxph)))的绘制的Schoenfeld残差后,您需要直观地检查直线在哪里改变角度。尝试找出beta值明显不同的一两个点。假设这发生在时间10和20。所以我们将使用survSplit()survival包,该包将在上述时间为特定数据模型分组创建一个数据框:

step.data <- survSplit(Surv(t1, t2, event) ~ 
                      x1 + x2,
                      data = data, cut = c(10, 20), episode = "tgroup")

然后运行 cox.ph具有以下strata功能模型:与 有问题的变量进行交互(如与时间进行交互,请不要添加时间或层次的主要影响):

> model.coxph2 <- coxph(Surv(t1, t2, event) ~ 
                          x1 + x2:strata(tgroup), data = step.data)

那应该会有所帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.