【问题标题】:Understand colors in R survfit.plot function for a coxph model了解 coxph 模型的 R survfit.plot 函数中的颜色
【发布时间】:2021-08-10 08:30:37
【问题描述】:

我正在尝试创建一组带有分类解释变量的单变量 coxph 模型,对于每个模型,我想按变量级别比较生存函数。例如我正在创建:

library(survival)

set.seed(4321)
data <- data.frame(cbind(
  sample(0:1, 40, replace=TRUE), # event
  sample(0:24, 40, replace=TRUE), # time
  sample(1:2, 40, replace=TRUE), # Diam
  sample(3:4, 40, replace=TRUE) # N
  ))

colnames(data) <- c("event","time","Diam","N")

data$Diam <- as.factor(data$Diam)
data$N <- as.factor(data$N)

model1 <- coxph(Surv(time, event) ~ Diam, data = data)
model2 <- coxph(Surv(time, event) ~ N, data = data)

其中 Diam 和 N 有两个级别。 我准备了这段代码来绘制生存函数:

plot(survfit(model1, newdata = data), fun = "s",
     conf.int = TRUE,
     col = 2:4,
     xlab = "Months",
     ylab = "Proportion without event",
     main = "Survival curve by Diam")
legend("bottomleft", 
       legend = levels(data$Diam),
       lty = 1, col = c(2,4))

plot(survfit(model2, newdata = data), fun = "s",
     conf.int = TRUE,
     col = 2:4,
     xlab = "Months",
     ylab = "Proportion without event",
     main = "Survival curve by N")
legend("bottomleft", 
       legend = levels(data$N),
       lty = 1, col = c(2,4))

这是输出:

我不明白:

  1. 为什么第二张图表的颜色不同?
  2. 如何匹配图表和图例中的颜色。

任何帮助将不胜感激! 先感谢您, 弗朗西斯卡

【问题讨论】:

  • 如果您包含一个简单的reproducible example 以及可用于测试和验证可能的解决方案的示例输入,则更容易为您提供帮助。
  • @MrFlick:谢谢你的建议,我已经完成了。希望对您有所帮助。

标签: r plot survival-analysis cox-regression


【解决方案1】:

我觉得很奇怪,你在绘制情节时使用了三种颜色,而在图例中只使用了两种颜色。我设法用这个正确地绘制它

plot(survfit(model1, newdata = data), fun = "s",
     conf.int = TRUE,
     col = c(1,2,2),
     xlab = "Months",
     ylab = "Proportion without event",
     main = "Survival curve by Diam")
legend("bottomleft", 
       legend = levels(data$Diam),
       lty = 1, col = levels(data$Diam))

plot(survfit(model2, newdata = data), fun = "s",
     conf.int = TRUE,
     col = levels(data$N),
     xlab = "Months",
     ylab = "Proportion without event",
     main = "Survival curve by N")
legend("bottomleft", 
       legend = levels(data$N),
       lty = 1, col = levels(data$N))

但请注意,我在第一个情节中保留了三种颜色,而在第二个情节中只保留了两种。我认为问题出在模型或采样上。

此外,使用不同的种子(例如 1),颜色不会有任何问题。

set.seed(1)
data <- data.frame(cbind(
  sample(0:1, 40, replace=TRUE), # event
  sample(0:24, 40, replace=TRUE), # time
  sample(1:2, 40, replace=TRUE), # Diam
  sample(3:4, 40, replace=TRUE) # N
))

colnames(data) <- c("event","time","Diam","N")

data$Diam <- as.factor(data$Diam)
data$N <- as.factor(data$N)

model1 <- coxph(Surv(time, event) ~ Diam, data = data)
model2 <- coxph(Surv(time, event) ~ N, data = data)
plot(survfit(model1, newdata = data), fun = "s",
     conf.int = TRUE,
     col = levels(data$Diam),
     xlab = "Months",
     ylab = "Proportion without event",
     main = "Survival curve by Diam")
legend("bottomleft", 
       legend = levels(data$Diam),
       lty = 1, col = levels(data$Diam))

plot(survfit(model2, newdata = data), fun = "s",
     conf.int = TRUE,
     col = levels(data$N),
     xlab = "Months",
     ylab = "Proportion without event",
     main = "Survival curve by N")
legend("bottomleft", 
       legend = levels(data$N),
       lty = 1, col = levels(data$N))

干杯,

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-18
    • 2012-11-20
    • 1970-01-01
    • 2010-09-27
    • 1970-01-01
    • 1970-01-01
    • 2015-06-19
    • 1970-01-01
    相关资源
    最近更新 更多