1

我有一个生存数据集。我想对治疗进行 logrank 测试,分为 4 类。我不能使用该survdiff()命令,因为这些统计数据的渐近分布是卡方,并且我需要正态性(我在多重插补设置中执行此操作并稍后合并)。相反,我想运行 Cox 回归,然后运行分数测试,这将是正态分布的。

所以,我想做的是把我的4个类别,然后把它们分成几组来单独比较。例如

治疗 2 与治疗 3:是否可以在不分解数据的情况下做到这一点?假设我们有来自包 KMsurv 的刻录数据集

library(KMsurv)

> summary(coxph(Surv(T1,D1)~factor(Z11),data=burn))
Call:
coxph(formula = Surv(T1, D1) ~ factor(Z11), data = burn)

  n= 154, number of events= 99 

            coef exp(coef) se(coef)      z Pr(>|z|)  
  factor(Z11)2 -0.9820    0.3745   0.4956 -1.982   0.0475 *
  factor(Z11)3 -1.6872    0.1850   0.8029 -2.101   0.0356 *
  factor(Z11)4 -0.4070    0.6656   0.3957 -1.029   0.3037  
 ...
 Likelihood ratio test= 9.17  on 3 df,   p=0.0271
 Wald test            = 7.38  on 3 df,   p=0.06083
 Score (logrank) test = 8  on 3 df,   p=0.04602

这会输出 1 vs 2 vs 3 vs 4 的 logrank 测试,但我只想要 2 vs 3。我知道我可以通过在此命令之前运行来获得它

subsetted=subset(burn,Z11==2|Z11==3)
summary(coxph(Surv(T1,D1)~factor(Z11),data=subsetted))

但是当我们必须做比较 1,2 与 4 之类的事情时,这将变得乏味且难以调试

那么,有没有办法在 coxph 命令中选择要比较的组,或者是选择组以预先设置它们的唯一方法?

4

1 回答 1

2

使用subset函数中的参数coxph。看?coxph

但是您还需要从burn$Z11

所以你可以做

summary(coxph(Surv(T1,D1)~factor(Z11,levels=c('2','3')),data=burn, subset=Z11 %in% c('2','3')))

或者更方便一点

mylevels <- c('2','3')  #specify factor levels for subset
summary(coxph(Surv(T1,D1)~factor(Z11,levels=mylevels),data=burn, subset=Z11 %in% mylevels))

另请参阅此线程以制作包装器,其中子集被定义为包装器函数中的参数:

https://stat.ethz.ch/pipermail/r-help/2007-November/145345.html

于 2015-09-29T18:20:45.337 回答