我正在R中进行一些生存分析,并希望整理/简化我的代码。
目前我正在进行数据分析的几个步骤:
作为一个例子,这里是一个使用来自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对象的公式中的信息来计算生存曲线的差异:即在通话中幸存者而这正是我笨拙的[原文如此]的编程技巧碰壁的地方。以下是我目前的尝试:我很感激你能给予的任何帮助!一旦我能够解决这个问题,我应该能够在一个函数中包含一个解决方案。
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
答案 0 :(得分:8)
正如我上面评论的那样,我在写完这个问题后不久就解决了这个问题。
因此,上面的步骤3可以替换为:
lung.survdiff <- survdiff(formula(lung.survfit$call$formula))
但正如本·巴恩斯在评论中指出的那样,来自幸存物体的公式可以更直接地用
提取lung.survdiff <- survdiff(formula(lung.survfit))
这正是我想要的,希望可以使用 - 感谢Ben!