【发布时间】: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 <- strata(levo)并在公式test.Surv~st中使用它也不起作用......感谢 @BenBarnes 的澄清
标签: r cox-regression