0

使用以下数据框:

death <- 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)
age<-c (70,50,60,60,55,46,50,60,59,61,62,55,66,60,59,58,61,59,58,60,60,58,60,60,61,61,59,60,61,64)
survival_time <- 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)
diabetes <- 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)
bloodpressure <- c(160,120,150,140,135,110,139,140,153,129,149,163,179,129,144,119,100,115,145,150,130,120,122,129,116,171,129,126,159,150)
data <- data.frame(death, survival_time, diabetes, bloodpressure,age)

我想创建一个类似于以下的情节: 在此处输入图像描述

我得到的变量是血压、心血管死亡率、生存时间、糖尿病、年龄。我想调整年龄和糖尿病。

有没有办法在 R 或 SPSS 中做到这一点?

我的第一次尝试并没有达到我希望的结果:

cfit4a <- coxph(Surv(survival_time, death) ~ age + diabetes + bloodpressure, data=data) 
surv4a <- survfit(cfit4a) 
plot(surv4a, col=c(1,2,4), mark.time=F, xscale=365.25, xlab="blood pressure", ylab="Survival")

如何创建在 x 轴上显示血压值的图?如何在 y 轴上显示调整后的风险而不是生存率?(我在上面的原始帖子中添加了一个示例数据)

4

1 回答 1

1

您要求在多变量模型的背景下绘制调整后的血压相对风险图,该模型不仅包括血压,还包括年龄(作为数字)和糖尿病(作为 1/0 指标)。一种简单的方法是使用predict.coxph一种“风险”并提交一个数据帧,其中血压作为一系列值给出,agediabetes设置在某个指定的水平。age对于此预测,指定水平是什么很重要,因为参考值diabetes将影响相对风险估计。我相信 Therneau 使用协变量的平均值来设置基线风险。因此,不要为您可以使用的那些协变量选择一个特定的值,mean(data$age)并且mean(data$diabetes)应该强制bloodpressure的 RR 在 的平均值处为 1 bloodpressure

bp.df <- data.frame(bloodpressure=seq(120,210,by=5), age=60, diabetes=0)
pred.rr.bp <- predict(cfit4a, newdata=bp.df,type="risk", se.fit=TRUE)

plot( x = bp.df$bloodpressure, y=pred.rr.bp$fit, type="l", ylim=c(0,10), main="BP Relative Risk with age=60 and diabetes=0")
lines(x = bp.df$bloodpressure, 
          y=pred.rr.bp$fit+1.96*pred.rr.bp$se.fit,lty=3)
lines(x = bp.df$bloodpressure, 
          y=pred.rr.bp$fit-1.96*pred.rr.bp$se.fit,lty=3)

在此处输入图像描述

-pkgrms也可以使用。它需要一些额外的研究来掌握它的特殊要求,但是如果你真的需要标准错误线来满足你的例子所展示的中值 bp,那么它的绘图例程确实提供了那个“功能”。我一直对此有点困扰,但是,+/-1.96*se 线的确切值实际上并不那么重要。

于 2019-01-13T21:08:49.270 回答