R可视化:科研绘图之生存KM曲线图

欢迎大家关注全网生信学习者系列:

  • WX公zhong号:生信学习者
  • Xiao hong书:生信学习者
  • 知hu:生信学习者
  • CDSN:生信学习者2
Snipaste_2024-06-19_13-44-07.png

介绍

ggsurvfit 是一个基于 R 语言的包,它扩展了 survival 包的功能,允许用户使用 ggplot2 的语法来创建美观的生存曲线图。KM曲线,即Kaplan-Meier曲线,是一种非参数统计方法,用于估计生存函数,即在给定时间点生存下来的概率。

ggsurvfit

  1. 美观性ggplot2 提供了一种强大的图形语法,可以创建高度定制化和美观的图形。
  2. 易用性ggsurvfit 允许用户利用熟悉的 ggplot2 语法来绘制生存曲线,使得图形的创建过程更加直观和简单。
  3. 扩展性ggsurvfit 可以与 ggplot2 的其他扩展包一起使用,例如 ggpubrggthemes,以进一步增强图形的表现力。

KM曲线的意义

  1. 生存分析:KM曲线提供了一种直观的方式来展示生存数据随时间的变化,常用于医学研究中评估患者的生存率。
  2. 比较生存率:通过比较不同组别的 KM 曲线,可以观察到不同治疗或条件对生存率的影响。
  3. 非参数方法:KM 方法不需要对生存时间的分布做出任何假设,这使得它适用于各种类型的数据。

如何阅读KM曲线

  1. 水平轴:通常表示时间,可以是天、月、年等。
  2. 垂直轴:表示生存概率,即在特定时间点生存下来的概率。
  3. 曲线下降:曲线的下降表示随着时间的推移,生存概率的减少。
  4. 曲线的阶梯状:每个台阶代表一个事件发生(例如死亡),曲线在事件发生时下降。
  5. 比较曲线:如果有多条曲线,可以比较它们以了解不同组别或条件下的生存差异。

加载R包

加载所需要的R包

knitr::opts_chunk$set(message = FALSE, warning = FALSE)

library(ggsurvfit)
library(tidyverse)
library(survival)
library(survminer)
library(gtsummary)

# rm(list = ls())
options(stringsAsFactors = F)
options(future.globals.maxSize = 10000 * 1024^2)

导入数据

使用示例数据

data("df_lung")

head(df_lung)
inst<dbl> time<dbl> status<dbl> age<dbl> sex<fctr> ph.ecog<fctr>
3 10.053388 2 74 Male Symptomatic and ambulatory
3 14.948665 2 68 Male Asymptomatic
3 33.182752 1 56 Male Asymptomatic
5 6.899384 2 57 Male Symptomatic and ambulatory
1 29.010267 2 60 Male Asymptomatic
12 33.577002 1 74 Male Symptomatic and ambulatory

数据预处理

数据预处理包含以下部分:代码见R可视化:科研绘图之生存KM曲线图

  • 因子化分组
  • 生存分析提取画图数据(生存概率和风险表)
  • 计算风险系数HR和p值
  • 计算中位数生存率对应的生存时间
  • 汇总生存分析的结果
head(sur_all)
Characteristic<chr> sex_Male<chr> sex_Female<chr>
1 No. of patients sex_Male (n=138) sex_Female (n=90)
2 Events (% of patients) 26 (0.19) 37 (0.41)
3 Median OS, months 8.9 14
4 P value 0.001 0.001
5 Hazard ratio Reference 0.588

画图

生存分析的KM图,代码见R可视化:科研绘图之生存KM曲线图

pl
Snipaste_2024-06-19_13-44-07.png

结果:这张KM图比较了两组数据:男性(8.9个月)和女性(14个月)的生存情况。

  • 生存曲线:图中的曲线代表了随时间变化的生存概率。曲线的下降表示在特定时间点有个体死亡或失去生存状态。
  • 风险组:图中显示了两组风险组,男性和女性,分别用不同的曲线表示。
  • 风险比(Hazard ratio, HR):图中给出的风险比是0.59,这表示在相同的时间点,女性的死亡风险是男性的59%。95%置信区间(0.26-0.92)表示这个估计的不确定性范围,如果置信区间不包含1,通常认为HR有统计学意义。
  • P值:P = 0.001,这是一个非常小的P值,通常小于0.05就认为统计结果有显著性,表示男性和女性的生存曲线差异是显著的。
  • 风险数量(No. at risk):图中的表格显示了每个时间点每个风险组中剩余的风险个体数量,随着时间的增加,风险数量逐渐减少,因为个体可能死亡或失去生存状态。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,544评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,430评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,764评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,193评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,216评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,182评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,063评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,917评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,329评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,543评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,722评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,425评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,019评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,671评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,825评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,729评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,614评论 2 353

推荐阅读更多精彩内容