我有一个coxph模型,有5个时间相关和2个时间无关的变量。我想测试比例风险假设,除了鞅和偏差残差,使用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
答案 0 :(得分:5)
据我了解,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 是Pearson在缩放的Shoenfeld残差和 g(t)之间的相关性,其中g是时间的函数(默认是Kaplan-Meier量表;这里我们是使用log
,如下图中 x 轴的比例所示。
如果变量是时不变的,则绘制线的斜率应为零。这基本上是 chisq 测试。
更新 @Didi Ingabire - 根据您的意见:
因此低 p - 值表示:
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")
}
,例如:
更新 @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)
这为我们提供了一个更符合比例风险假设的模型。然而,系数{{1}}的解释不是特别直观,不太可能具有很大的实用价值。
答案 1 :(得分:2)
区分时间因变量和不符合PH假设的变量很重要。
时间相关变量是随时间变化的变量。这可能是血压;它会因不同的场合而有所不同。但性别(性别)在不同场合不会有所不同。
然后内部和外部时间相关变量之间存在区别:
•内部时间相关变量:是由于个体内的变化(例如血压)而变化的变量。
•外部时间相关变量:环境/外部变化,可以改变个人遭受的危害(例如,随着行业在城市中的扩散,空气污染会随着时间的推移而增加,因此人口中存在危害心肌梗塞等疾病会增加。
无论变量的性质如何,是固定的还是时间依赖的,它都可能违反PH假设。我可以提供一些例子,但可能更容易接受任何变量可能违反PH假设的事实。即使您尝试适应扩展Cox模型中的变化(例如,在计数过程格式中每个人使用多个观察值),它也可以。
解决方案:您可以在Cox模型中输入任何预测变量,并通过Thernau生存包的cox.zph函数检查它是否满足PH。 SAS中的相应声明将是评估ph / resample&#39; 声明。如果变量违反了PH,那么(可能)最简单的解决方法是在该变量和时间变量之间引入交互。
示例如下。这是考克斯公式:
Survival = age + sex + blood_pressure
让我们说血压违反PH - &gt;引入以下术语:
Survival = age + sex + blood_pressure*survival_time_variable
这应该可以解决它但你不能解释血压的主要影响,因为这个变量现在取决于时间。
另一个解决方案是对模型进行分层,但这不适用于连续变量和分类变量,一旦分层,变量不会作为协变量包含在最终模型中(即,您不会获得风险比)。