我正在使用生存包在 R 中进行分层 cox 回归:
cox <- coxph(response~strata(x), data=data)
这很好用,但是当使用 sampling 包时,survival 包中的 strata 函数是隐藏的,不能直接使用。
但是,使用显式命名空间 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
时。
最佳答案
失败的近因已在评论中正确描述,但没有提供一个极其简单的修复方法。正如您指出的那样,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
函数。
关于r - 使用包命名空间在 R 中进行分层 cox 回归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17404779/