gpt4 book ai didi

r - cox.zph 如何处理与时间相关的协变量?

转载 作者:行者123 更新时间:2023-12-04 10:11:33 24 4
gpt4 key购买 nike

我有一个带有 5 个时间相关变量和 2 个时间独立变量的 coxph 模型。我想使用 cox.zph 测试比例风险假设以及鞅和偏差残差。我的问题是,这个函数如何处理与时间相关的协变量?

阅读 Grant et al.,2014 后,我不确定这是否是评估时变协变量的 PH 假设的推荐拟合优度检验。

模型:

teste<-coxph(Surv(tempo1,tempo2,status)~sexo+CODE_06+factor(clima)+TP_media7
+ndvi+peso+epoca,data=newftable,na.action=na.fail)

> cox.zph(teste)
rho chisq p
sexoM 0.0844 0.32363 0.5694
CODE_06Regadio 0.1531 0.66865 0.4135
CODE_06Sequeiro 0.2278 1.65735 0.1980
factor(clima)8 -0.1823 1.16522 0.2804
factor(clima)9 0.1051 0.24456 0.6209
factor(clima)15 -0.0193 0.00945 0.9226
TP_media7(12,22] 0.1689 0.75604 0.3846
TP_media7(22,32] 0.1797 1.03731 0.3084
TP_media7(32,41] 0.1060 0.34036 0.5596
ndvi(3e+03,4e+03] -0.1595 1.00006 0.3173
ndvi(4e+03,5e+03] 0.0421 0.05233 0.8191
ndvi(5e+03,6e+03] 0.1750 0.98816 0.3202
ndvi(6e+03,8.05e+03] -0.0311 0.02880 0.8653
peso[850,1005] 0.2534 3.34964 0.0672
epocamid_inv_rep 0.0193 0.01219 0.9121
epocamid_pos_inv -0.2193 0.93355 0.3339
epocamid_rep_pos 0.0231 0.01341 0.9078
epocapos_repr 0.2073 1.09893 0.2945
epocarepr 0.0766 0.12905 0.7194
GLOBAL NA 19.79229 0.4072

最佳答案

据我了解 cox.zph是关于协变量是否应该独立于时间进入模型的测试。如果您已经知道您的预测变量是时间相关的,那么这似乎不是合适的方法。我不知道有什么简单的方法可以解决这个问题,这样的问题可能会在 Cross Validated 上找到更容易接受的观众。 .

对于可重现的示例,我们可以使用来自 Therneau :

library(survival)
veteran$celltype <- relevel(veteran$celltype, ref="adeno")
f1 <- coxph(Surv(time, status) ~
trt + celltype + karno + diagtime + age + prior,
data=veteran)
(z1 <- cox.zph(f1, transform="log"))

rho chisq p
trt -0.01561 0.0400 0.841486
celltypesquamous -0.16278 3.8950 0.048431
celltypesmallcell -0.11908 2.2199 0.136238
celltypelarge 0.00942 0.0121 0.912551
karno 0.29329 11.8848 0.000566
diagtime 0.11317 1.6951 0.192930
age 0.20984 6.5917 0.010245
prior -0.16683 3.9873 0.045844
GLOBAL NA 27.5319 0.000572

rho 是缩放的 Shoenfeld 残差和 g(t) 之间的皮尔逊相关性,其中 g 是时间的函数(默认为 Kaplan-Meier 尺度;这里我们使用 log,正如您在 x 轴的尺度上看到的下图)。
如果变量是时不变的,那么绘制线的斜率应该为零。这基本上就是 chisq 测试。

更新 @Didi Ingabire - 根据您的评论:

因此一个 p 值表示:
  • Schoenfeld 残差随时间不是恒定的
  • 有证据表明变量/预测变量可能与时间相关
  • 此变量
  • 可能违反比例风险假设(在生成 coxph 模型时做出)。

    您可以像这样直观地看到这一点:
    for (i in 1:(nrow(z1$table)-1)){
    plot(z1[i], main="Scaled Schoenfeld residuals by time with smooth spline
    If <0 indicates protective effect")
    graphics::abline(a=0, b=0, col="black")
    }

    这给出了例如:

    enter image description here

    更新 @JMarcelino 这就是说 cox.zph是对模型最终形式的测试,以确保残差随时间相对恒定。

    如果其中一个变量已经是时间的函数(当它进入模型时),这不会影响测试。事实上,如果时间的影响被正确建模,它应该更有可能产生具有高 p 值的平坦线。

    此外,测试比例风险意味着测试风险比是否随时间保持不变?。变量是否与时间相关(当它进入模型时)并不重要。正在测试的是模型的最终形式。

    例如,代替 karno我们可以输入一个与它和时间都相关的变量,如下所示:
    f2 <- coxph(Surv(time, status) ~
    trt + celltype + log(karno * time) + diagtime + age + prior,
    data=veteran)
    (z2 <- cox.zph(f2, transform="log"))

    rho chisq p
    trt 0.0947 1.4639 0.226
    celltypesquamous -0.0819 1.1085 0.292
    celltypesmallcell -0.0897 1.3229 0.250
    celltypelarge 0.0247 0.0968 0.756
    log(karno * time) -0.0836 0.6347 0.426
    diagtime 0.0463 0.2723 0.602
    age 0.0532 0.3493 0.554
    prior -0.0542 0.3802 0.538
    GLOBAL NA 7.6465 0.469

    这为我们提供了一个更符合比例风险假设的模型。然而系数的解释 log(karno * time)不是特别直观,不太可能具有很大的实用值(value)。

    关于r - cox.zph 如何处理与时间相关的协变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24488495/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com