【问题标题】:Stratified cox regression in R using package namespace使用包命名空间在 R 中分层 cox 回归
【发布时间】:2013-07-01 12:43:47
【问题描述】:

我正在使用生存包在 R 中进行分层 cox 回归:

cox <- coxph(response~strata(x), data=data)

这很好用,但是在使用采样包时,生存包中的分层功能被隐藏了,不能直接使用。

但是,使用显式命名空间 survival::strata 调用它不会创建分层分析:

library(survival)

# sample data
mort28day <- c(1,0,1,0,0,0,0,1,0,0,0,1,1,0,1,0,0,1,0,1,1,1,1,0,1,1,1,0,0,1)
daysurv <- c(4,29,24,29,29,29,29,19,29,29,29,3,9,29,15,29,29,11,29,5,13,20,22,29,16,21,9,29,29,15)
levo <- c(0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0)
acbi30 <- data.frame(mort28day, daysurv, levo)

# create survival object
test.Surv <- Surv(acbi30$daysurv, acbi30$mort28day)

test.surv_fit_1 <- survfit(coxph(test.Surv~strata(levo), data=acbi30))
test.surv_fit_2 <- survfit(coxph(test.Surv~survival::strata(levo), data=acbi30))

所以,

test.surv_fit_1$strata
# levo=0 levo=1 
#    12      3 

test.surv_fit_2$strata
# NULL

为什么会出现这种情况,当它被sampling::strata 隐藏时,我如何访问此功能(除了分离采样包;-)

我使用的是 R 版本 2.15.2

谢谢,DeltaKappa


更新:

作为将survival::strata 与我所做的采样包一起使用的一种解决方法

library(survival)
library(sampling, pos="package:base")

它在基本包的正上方加载具有低搜索优先级的采样包。那我就可以了

coxph(test.Surv~strata(levo), data=acbi30)

在显式调用sampling::strata 时。

【问题讨论】:

  • coxph 在提供的公式中查找某些函数,包括 strata,以识别为“特殊”术语。它用special = c("strata", "cluster", "tt") 调用terms.formula(通过terms),看起来这无法将survival::strata 识别为特殊术语。然后,缺少的特殊术语会在其余的计算中传播,并使您没有分层。 terms.formula 使用内部代码,我现在没有勇气(或者可能是专业知识)进行源冲浪。
  • 我猜,这将是一个方向,因为分配 st &lt;- strata(levo) 并在公式 test.Surv~st 中使用它也不起作用......感谢 @BenBarnes 的澄清

标签: r cox-regression


【解决方案1】:

在 cmets 中正确描述了失败的大致原因,但是没有提供一个非常简单的修复方法。正如您所指出的,strata 函数没有公开,但使用三冒号运算符 (:::) 可以让您绕过这方面:

test.surv_fit_1 <- survfit(coxph(test.Surv~strata(levo), data=acbi30))
test.surv_fit_2 <- survfit(coxph(test.Surv~survival:::strata(levo), data=acbi30))
test.surv_fit_1
#--------
Call: survfit(formula = coxph(test.Surv ~ strata(levo), data = acbi30))

        n events median 0.95LCL 0.95UCL
levo=0 25     13     24      19      NA
levo=1  5      2     NA      13      NA

test.surv_fit_2
#-------------
Call: survfit(formula = coxph(test.Surv ~ survival:::strata(levo), 
    data = acbi30))

      n events median 0.95LCL 0.95UCL
[1,] 30     15     24      19      NA

在使用 sampling 包的情况下,这是否是正确的解决方案,我无法发表意见,但它肯定会绕过 survival:::strata 函数的屏蔽。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多