注:所用r包 survminer
准备工作
library(openxlsx) #读取数据
library(survival) #生存分析
library(survminer) #结果可视化
tt <- read.xlsx(“logrank示例数据.xlsx”)
logrank检验和cox生存分析
log_rank_test <- survdiff(Surv(随访时间, 存在谵妄) ~ treatment.分组, data = tt)
log_rank_pval <- 1 - pchisq(log_rank_test$chisq, length(log_rank_test$n) - 1)
pval_label <- paste0("Log-rank p-value: ",round(log_rank_pval,3))
# cox
cox_model <- coxph(Surv(随访时间, 存在谵妄) ~ treatment.分组, data = tt)
hr <- exp(cox_model$coefficients) # Hazard Ratio
hr_confint <- exp(confint(cox_model)) # 95% CI for HR
# Create HR label
hr_label <- paste("Hazard Ratio = ", round(hr, 2),
" (", round(hr_confint[1], 2), ", ", round(hr_confint[2], 2), ")", sep = "")
绘图
fit <- survfit(Surv(随访时间, 存在谵妄) ~ treatment.分组, data = tt)
surv_plot <- ggsurvplot(fit,
fun="event", #"event"代表绘制累积死亡率曲线
pval = F,
pval.method=F,
conf.int = TRUE,
risk.table = TRUE,
surv.scale = "percent",
legend.labs = c("Placebo group", "Esmketamine group")# change legend labels.
)
surv_plot
# 添加说明文字
surv_plot$plot <- surv_plot$plot + annotate("text", x = 5, y = 0.12, label = pval_label, size = 5, color = "black")+ annotate("text", x = 5, y = 0.09, label = hr_label, size = 5, color = "black")
surv_plot