我试图在R中创建一个生存情节,用于在数周内因暴露于真菌疾病而死亡。我有死亡周(连续),他们是否还活着(真/假),以及饮食(高/低)和性别(男/女)的分类变量。我运行了一个coxph模型:
surv1 <- coxph(Surv(week_died,alive) ~ exposed + diet + sex,
data=surv)
我想绘制一条生存曲线,在高和低日粮中暴露雄性的个体系,以及高和低日粮上的雌性相同(在同一图上产生4条个体生存曲线)。如果我使用它,那么我只得到一条曲线。
plot(survfit(surv1), ylim=c(), xlab="Weeks")
我还尝试使用Edwin Thoen(http://www.r-statistics.com/2013/07/creating-good-looking-survival-curves-the-ggsurv-function/)创建的ggsurv函数,但是对于&#34;无效的行类型&#34;一直出现错误。我试图弄清楚可能导致这种情况的原因并认为这将是最后一个ifelse声明 - 但我不确定。
pl <- if(strata == 1) {ggsurv.s(s, CI , plot.cens, surv.col ,
cens.col, lty.est, lty.ci,
cens.shape, back.white, xlab,
ylab, main)
} else {ggsurv.m(s, CI, plot.cens, surv.col ,
cens.col, lty.est, lty.ci,
cens.shape, back.white, xlab,
ylab, main)}
有没有人知道造成这个错误的原因/如何修复它,或者我是否完全试图做错误的事情来绘制这些曲线。
非常感谢!
答案 0 :(得分:2)
survfit
模型上的 coxph
给出了一个案例的生存曲线,该案例的协变量预测因子是创建模型的人口的平均值。来自survfit.coxph
已经认真考虑删除
newdata
的默认值,即使用协变量值等于数据集均值的单个“伪”主题,因为得到的曲线几乎是从来没有意义。 ......两个特别令人震惊的例子是因子变量和相互作用。假设有人研究病毒的种间传播,数据集中有一个因子变量,其水平(“猪”,“鸡”)和每个的观察数量相等。 “平均”协变量水平将是1/2 - 这是一只飞猪吗? ...强烈建议用户使用newdata参数。
所以在你计算出surv1
后,
sf <- survfit(surv1,
newdata = expand.grid(diet = unique(surv$diet),
sex = unique(surv$sex)))
plot(sf)
sf
也可以作为ggsurv
的参数,但我还没有测试过。