0

我在 R 中运行一个 Cox 模型,由于违反 PH 假设,它包含几个时变系数,我在 coxph 中使用 tt 函数引入了这些系数。其中两个是连续变量,var2 和 var3,我的时变系数之一是 3 级因子变量。模型代码如下:

cox.model <- coxph(surv_data ~ var1 + var2 + tt(var2)
                   + var3 + tt(var3) + factor(var4)
                   + tt(var4)
                   + strata(var5),
                   tt = list(
                       function(time, var2, ...){var2*time},
                       function(time, var3,...){var3*sqrt(time)},
                       function(time, var4, ...){
                         mtrx <- model.matrix(~var4)[,-1];
                         mtrx*time
                       }),
                   data = data)

运行代码后我得到的输出是:

                             coef  exp(coef)   se(coef)      z        p
var1                    3.944e-02  1.040e+00  1.245e-01  0.317   0.7513
var2                    7.348e+00  1.553e+03  1.230e+00  5.975 2.31e-09
tt(var2)               -1.765e+00  1.713e-01  9.855e-01 -1.791   0.0734
var3                   -1.062e-01  8.992e-01  4.491e-02 -2.365   0.0180
tt(var3)                1.698e-02  1.017e+00  9.035e-03  1.880   0.0602
factor(var4)1           1.168e+00  3.216e+00  2.399e-01  4.869 1.12e-06
factor(var4)2           1.851e+00  6.366e+00  4.726e-01  3.917 8.98e-05
tt(var4)               -1.022e-01  9.028e-01  5.019e-02 -2.037   0.0416

对于 var4(因子),我以与 var2 或 var3(连续变量)类似的形式得到 tt(var4) 输出是否正常,而不是估计 var4 的每个子类别的时变效应(如估计var4 的主要影响,级别 1 和 2)?我找不到太多关于此的内容,但我想我记得我前一段时间看到的一个示例,其中 tt() 输出区分了多级因子变量的各个类别。

值得注意的是,我不是编程或数学方面的专家,所以我不确定我是否首先对模型进行了正确编码(例如,如果与时间交互,是否可以包含这么多不同形式的 tt 函数,是矩阵必要/正确?) - 非常欢迎任何反馈!

4

0 回答 0