生存分析入门和R分析

Python014

生存分析入门和R分析,第1张

生存分析主要是使用一系列统计方法调查事件发生时间的研究。

## 生存分析应用于各种领域,如:

## 在癌症研究中,典型的研究问题是:

## 生存分析主要方法

## 基本的概念

## 疾病中不同类型事件

需要关注的点在于,1)死亡的时间;2)无复发生存时间,对应于对治疗到疾病复发之间的时间。

截尾

生存分析研究的是事件发生(复发或死亡)之前的预期时间。然而,在研究中,由于各种原因无法收集到事件发生的完整信息,从而产生截尾数据。

## 截尾事件也分为了不同的情况:

## 生存函数和风险函数

Kaplan-Meier方法是一种用于从收集的生存时间估计生存概率的非参数方法 (Kaplan and Meier, 1958)。

时间 的生存概率 的计算公式如下:

估计的概率(S(t))是一个阶跃函数,它只在每个事件的发生的时刻才会改变。生存概率的置信区间也是可以计算的。

KM生存曲线(KM生存概率随时间变化的曲线)提供了有用的数据总结,可用于估计中位生存时间等指标。

KM生存曲线(KM生存概率随时间变化的曲线)提供了有用的数据总结,可用于估计中位生存时间等。

## R 包准备

常用的两个R包

## 安装R包

## 示例数据集

survival 包内置的 lung数据

## 计算生存曲线:survfit()

可以使用 survival 包中的 survfit () 计算kaplan-Meier生存估计, survfit () 需要的参数:

## 使用summary()对模型进行统计,查看详细信息

## survfit()返回结果的解读

## 数据整理

或者使用 survminer 包中的surv_summary()函数汇总数据生成一个数据框

获取生存曲线的信息,包括具有置信区间的生存中值,以及每个曲线中的受试者总数和事件数。

## 可视化生存曲线

更多参数设置自定义生存曲线图

## Kaplan-Meier图的解读

横轴(x轴)表示以天为单位的时间,纵轴(y轴)表示生存的概率或生存人口的比例。途中曲线代表两组病人的生存曲线。曲线的垂直下降表示事件。曲线上的垂直刻度表示这个病人在这个时候被审查了。

每个组的中位生存时间

age=1(男性组)的中位生存时间为270天,而age=2(女性组)的中位生存时间为426天。与男性相比,女性肺癌患者的生存率似乎有优势。然而,为了评估这种差异是否具有统计学意义,需要进行正式的统计检验,还需要进一步进行分析。

## 生存曲线可以设置显示范围:

## 事件累计发生曲线图:

累积危险是估计危险概率的常用方法,被定义为H(t)=−log(survival function)=−log(S(t))。累积危害(H(t))可以解释为死亡率的累积度。换句话说,如果事件是一个可重复的过程,它对应于每个个体在时间t时之前事件发生的数量。

## 累计风险概率(cumulative hazard)图

## 比较生存曲线的Log-Rank检验:survdiff()

对数秩检验(log-rank test)是比较两个或多个生存曲线的最广泛使用的方法。零假设是两组生存曲线之间的存活率没有差异。对数秩检验是一种非参数检验,它对生存分布没有任何假设。从本质上说,对数秩检验将观察到的每组事件的数量与零假设成立(即生存曲线是一致的)所期望的数量进行比较。对数秩检验统计量分布与卡方检验统近似。

survival包的 survdiff ()函数可以对两组生存曲线进行对数秩检验。

## 拟合复杂生存曲线

### 使用多个因素的组合来计算生存曲线。

生存分析主要是使用一系列统计方法调查事件发生时间的研究。

生存数据一般用两个相关函数来描述和建模:

系列文章

ggsurvplot(

fit, #生存分析结果

data = NULL, #a dataset used to fit survival curves

fun = NULL, # 定义生存曲线转换的任意函数。 经常使用的转换可以用字符参数指定:“event”绘制累积事件(f(y) = 1-y),“cumhaz”绘制累积风险函数(f(y) = -log(y)),“pct”以百分比表示生存概率。

color = NULL, #曲线颜色

palette = NULL, #颜色调色板,可选调色板有 "grey","npg","aaas","lancet","jco", "ucscgb","uchicago","simpsons"和"rickandmorty".

linetype = 1, #线条形状,可以用数值型向量1,2表示,也可以用字符串向量c("solid", "dashed").

conf.int = FALSE, #是否画出置信区间

pval = FALSE, #是否显示P值

pval.method = FALSE, #是否添加计算P值得方法得文本,前提是pval = TRUE

test.for.trend = FALSE, #默认是F,如果TURE,返回trend Pvalues检验。 趋势检验旨在检测生存曲线的有序差异。 也就是说,至少对一个群体来说。 只有组数为>2时,才能进行趋势测试。

surv.median.line = "none", #画一条水平或者垂直得生存中位值线,允许的值有c("none", "hv", "h", "v"). v: 垂直vertical, h:水平horizontal.

risk.table = FALSE, #是否显示风险table。其他值有absolute" or "percentage",显示绝对数值/百分比;参数"abs_pct" ,百分比以及绝对数值都显示

cumevents = FALSE, # logical value specifying whether to show or not the table of the cumulative number of events.

cumcensor = FALSE, #logical value specifying whether to show or not the table of the cumulative number of censoring.

tables.height = 0.25, #设置table得高度,取值范围0-1

group.by = NULL, #包含分组变量名称得字符串向量。长度<=2

facet.by = NULL, #一个字符向量,包含将生存曲线分成多个面板的分组变量的名称。

add.all = FALSE, #一个逻辑值。 如果为TRUE,则在主图中添加合并患者(null model)的生存曲线。

combine = FALSE, # a logical value. If TRUE, combine a list survfit objects on the same plot.

ggtheme = theme_survminer(), #主题名称

tables.theme = ggtheme, #主题名称,默认是theme_survminer.

... #后面描述的参数和其他参数将被传递给ggplot2 geom_*()函数,如linetype, size, ii)或ggpar()函数来定制图形。 看到的细节部分

)