如何使用R包tidycmprsk对竞争风险数据执行Gray检验

1u4esq0p  于 9个月前  发布在  其他
关注(0)|答案(1)|浏览(170)

我有竞争风险的生存数据(删失0,重复1,死亡2),我想使用Grey检验来检查变量rh(类别0,1和2)组间的差异。这是我的数据:

> surv_data
# A tibble: 344 × 4
           ID        time_to_event          status    rh
          <dbl>             <dbl>            <dbl> <fct> 
 1            1             61.2                 0 PHLF 0
 2            2              6.53                1 PHLF 0
 3           10            109.                  0 PHLF 0
 4           15             15.5                 2 PHLF 2
 5           19              4.97                0 PHLF 0
 6           20             17.9                 1 PHLF 1
 7           22             61.7                 1 PHLF 0
 8           23             74.0                 2 PHLF 0
 9           26             67.9                 2 PHLF 1
10           27             46.8                 2 PHLF 0
# ℹ 389 more rows
# ℹ Use `print(n = ...)` to see more rows

字符串
在tidycmprsk::tbl_cuminc和tidycmprsk::cuminc中Gray的测试有什么区别?我得到不同的输出。
我尝试了下面的测试,我不明白为什么我得到了不同的测试结果。我应该解释结果吗?做格雷测试的正确方法是什么?
第一章

tidycmprsk::cuminc(Surv(time_to_event, status) ~ rh, data = surv_data) %>% 
  tidycmprsk::tbl_cuminc(
    times =  c(6, 12, 24), label_header = "**Month {time}**"
  ) %>% 
  add_p() %>% 
  add_n()


我得到输出:

`
Characteristic  N   Month 6       Month 12          Month 24    p-value1
rh  399                                               0.07
    rh 0        32% (15%, 33%)  45% (39%, 50%)  62% (36%, 65%)  
    rh 1        23% (9%, 28%)   37% (21%, 53%)  46% (38%, 68%)  
    rh  2       28% (12%, 42%)  27% (15%, 63%)  38% (21%, 55%)  
1 Gray’s Test
`

tidycmprsk::cuminc(ftime=surv_data$time_to_event, fstatus=surv_data$status, group=surv_data$rh, cencode=0)


我得到输出:

`
Tests:
                      stat           pv df
Censored          2.20168  1.176649e-01  2
Relapse           5.75114  2.376312e-01  2
Death            28.383626 3.183201e-09  2
`

tidycmprsk::cuminc(Surv(time_to_event, status) ~ rh, data = surv_data, cencode=0)

我得到输出:

`
• Tests
outcome            statistic   df     p.value    
Relapse            4.31        2.00   0.07      
Death              32.3        2.00   <0.001   
`
ubof19bj

ubof19bj1#

你已经把自己陷入了困境,因为你混合了tidycmprskcmprsk。这两个包都有一个名为cuminc()的函数。你的第二个代码片段是:

tidycmprsk::cuminc(ftime=surv_data$time_to_event, fstatus=surv_data$status, group=surv_data$rh, cencode=0)

字符串
然而,tidycmprsk::cuminc()docs表示它接受一个公式或一个名为x的参数。您提供的参数(ftimefstatus等)是cmprsk::cuminc()的参数。由于所有参数都命名,并且没有一个是x,因此此代码将生成错误。
tidycmprsk::cuminc()源代码在后台调用cmprsk::cuminc(),因此一旦解析参数名称,您将获得相同的结果。下面是一个trial数据内置到tidycmprsk包的示例,使用两种方法。

tidycmprsk

请注意,这里我使用death_cr作为状态变量。如文档状态:
状态变量必须是因子,其中第一个水平表示观测值已删失,后续水平是竞争事件。
请确保您的数据以这种形式存在。

library(tidycmprsk)

tidy_model <- tidycmprsk::cuminc(Surv(ttdeath, death_cr) ~ trt, trial) |>
    tbl_cuminc(times = c(6, 12, 24)) |>
    add_p() |>
    add_n()

data.frame(tidy_model$table_body[1, c("statistic", "p.value")])
#   statistic   p.value
# 1   1.98847 0.1585009

cmprsk

同样,由于我们使用因子变量death_cr作为状态,我们可以提供cencode = "censor",即一个字符向量,指示与被删失相关的因子水平的标签(而不是您问题中的cencode = 0)。

gray_model <- cmprsk::cuminc(
    ftime = trial$ttdeath,
    fstatus = trial$death_cr,
    group = trial$trt,
    cencode = "censor"
)

gray_model$Tests
#                          stat        pv df
# death from cancer  1.98847032 0.1585009  1
# death other causes 0.08856723 0.7660066  1


你可以看到p值和统计量是相同的。

命名空间的一般注解

如果包有重叠的函数(这两个包也有共同的crr()),有各种方法。在我的例子中,我用library()加载tidycmprsk,并用::显式调用cmprsk函数。这是在这些情况下你应该做的最低要求。Google R风格指南实际上建议:
用户应该显式限定所有外部函数的命名空间。
当然,这个建议对于一个拥有大量代码库的大公司来说,比一个通常不会面临巨大的名称空间冲突风险的研究人员更有意义。
另一种有很多优点的方法是使用box包。这允许你从特定的包中显式地导入你想要使用的函数,而不是像library()那样从一个包中导入所有函数。

相关问题