我正在 R 中进行一些生存分析,并希望整理/简化我的代码。
目前我在数据分析中做了几个步骤:
- 制作一个 Surv 对象(时间变量,指示每个观察是否被审查);
- 根据分类预测器拟合此 Surv 对象,用于绘制/估计中位生存时间过程;和
- 计算对数秩检验,以询问是否存在组间生存“显着”差异的证据。
作为一个例子,这里是一个使用 R 的生存包中的肺数据集的模型。所以下面的代码与我想要做的足够相似,但在预测器集方面简化了很多(这就是我想要的原因为了简化代码,所以我不会跨模型进行不一致的调用)。
library(survival)
# Step 1: Make a survival object with time-to-event and censoring indicator.
# Following works with defaults as status = 2 = dead in this dataset.
# Create survival object
lung.Surv <- with(lung, Surv(time=time, event=status))
# Step 2: Fit survival curves to object based on patient sex, plot this.
lung.survfit <- survfit(lung.Surv ~ lung$sex)
print(lung.survfit)
plot(lung.survfit)
# Step 3: Calculate log-rank test for difference in survival objects
lung.survdiff <- survdiff(lung.Surv ~ lung$sex)
print(lung.survdiff)
现在这一切都很好,花花公子,我可以忍受这个,但想做得更好。
所以我的问题是关于第 3 步。我想在这里做的是能够使用来自lung.survfit 对象的公式中的信息来计算生存曲线的差异:即在对survdiff 的调用中。这就是我驯服的 [原文如此] 编程技能碰壁的地方。以下是我目前的尝试:如果您能提供任何帮助,我将不胜感激!一旦我可以解决这个问题,我应该能够将解决方案包装在一个函数中。
lung.survdiff <- survdiff(parse(text=(lung.survfit$call$formula)))
## Which returns following:
# Error in survdiff(parse(text = (lung.survfit$call$formula))) :
# The 'formula' argument is not a formula