R 中的特定原因危险与多状态模型

问题描述 投票:0回答:1

我正在遵循https://cran.r-project.org/web/packages/survival/vignettes/compete.pdf中列出的示例,尽管这个问题是在真实的数据集上。

我有一个竞争风险场景,患者可能死于两种原因之一。可以使用以下方法设置示例数据集:

library(survival)
data(cancer)

mgus2$etime <- with(mgus2, ifelse(pstat == 0, futime, ptime))
event <- with(mgus2, ifelse(pstat == 0, 2 * death, 1))
mgus2$event <- factor(event, 0:2, labels = c("censor", "pcm", "death"))

在此示例中,患者可能患有

pcm
death
,但不能同时患有这两种疾病 - 因此是传统的竞争风险情况。可以使用以下方法拟合多状态模型:

coxph(Surv(etime, event) ~ sex, data = mgus2, id = id)

给出:

Call:
coxph(formula = Surv(etime, event) ~ sex, data = mgus2, id = id)

      
1:2        coef exp(coef) se(coef) robust se      z     p
  sexM -0.05938   0.94235  0.18723   0.18733 -0.317 0.751

      
1:3       coef exp(coef) se(coef) robust se     z        p
  sexM 0.22800   1.25608  0.06900   0.06869 3.319 0.000902

 States:  1= (s0), 2= pcm, 3= death 

Likelihood ratio test=11.11  on 2 df, p=0.003866
n= 1384, number of events= 975 

我的理解是,这将两个单独的特定原因 cox 模型与数据相匹配。如果这是真的,我将能够使用以下方法对数据进行等效建模:

coxph(Surv(etime, event == "pcm") ~ sex, data = mgus2, id = id)
coxph(Surv(etime, event == "death") ~ sex, data = mgus2, id = id)

这给出了非常相似但不相同的结果:

> coxph(Surv(etime, event == "pcm") ~ sex, data = mgus2, id = id)
Call:
coxph(formula = Surv(etime, event == "pcm") ~ sex, data = mgus2, 
    id = id)

         coef exp(coef) se(coef)      z     p
sexM -0.05938   0.94235  0.18723 -0.317 0.751

Likelihood ratio test=0.1  on 1 df, p=0.7511
n= 1384, number of events= 115 
> coxph(Surv(etime, event == "death") ~ sex, data = mgus2, id = id)
Call:
coxph(formula = Surv(etime, event == "death") ~ sex, data = mgus2, 
    id = id)

      coef exp(coef) se(coef)     z        p
sexM 0.228     1.256    0.069 3.304 0.000952

Likelihood ratio test=11.01  on 1 df, p=0.0009061
n= 1384, number of events= 860

我的问题是,为什么这两个结果不同?我是否实际上一开始就没有拟合特定原因的模型,或者我是否误解了拟合这些模型所需的内容?我想分别对它们进行建模的原因是我将进行子组分析,然后使用

emmeans
进行后估计。到目前为止,我无法使用多状态方法来完成这项工作,只能使用单故障 cox 模型。

r survival-analysis
1个回答
0
投票

不同之处在于,在竞争风险模型中,正在计算稳健方差。然后将它们用于 z 分数和 p 值。各个端点模型的情况并非如此。您可以在多端点模型中设置

robust = FALSE
以使系数表与各个端点模型完全匹配:

coxph(Surv(etime, event) ~ sex, data = mgus2, id = id, robust = FALSE)
#> Call:
#> coxph(formula = Surv(etime, event) ~ sex, data = mgus2, robust = FALSE, 
#>     id = id)
#> 
#>       
#> 1:2        coef exp(coef) se(coef)      z     p
#>   sexM -0.05938   0.94235  0.18723 -0.317 0.751
#> 
#>       
#> 1:3     coef exp(coef) se(coef)     z        p
#>   sexM 0.228     1.256    0.069 3.304 0.000952
#> 
#>  States:  1= (s0), 2= pcm, 3= death 
#> 
#> Likelihood ratio test=11.11  on 2 df, p=0.003866
#> n= 1384, number of events= 975

coxph(Surv(etime, event == "pcm") ~ sex, data = mgus2, id = id)
#> Call:
#> coxph(formula = Surv(etime, event == "pcm") ~ sex, data = mgus2, 
#>     id = id)
#> 
#>          coef exp(coef) se(coef)      z     p
#> sexM -0.05938   0.94235  0.18723 -0.317 0.751
#> 
#> Likelihood ratio test=0.1  on 1 df, p=0.7511
#> n= 1384, number of events= 115

coxph(Surv(etime, event == "death") ~ sex, data = mgus2, id = id)
#> Call:
#> coxph(formula = Surv(etime, event == "death") ~ sex, data = mgus2, 
#>     id = id)
#> 
#>       coef exp(coef) se(coef)     z        p
#> sexM 0.228     1.256    0.069 3.304 0.000952
#> 
#> Likelihood ratio test=11.01  on 1 df, p=0.0009061
#> n= 1384, number of events= 860
© www.soinside.com 2019 - 2024. All rights reserved.