来源:R语言统计与绘图 公众号,做学习分享用。
在临床研究中,常常需要进行生存率的比较,看看两组或多组人群生存率是否有差异。常用的统计方法有 log-rank 检验(也称 Mantel-Cox 检验)与 Breslow 检验(也称 Wilcoxon 检验)。
今天学习下在 R 中怎么实现生存率比较。
加载数据集
使用 survival 包自带的 colon 数据集进行分析。运行下列代码加载数据集:
install.packages("survival") # 安装进行生存分析的包
library(survival) # 加载包
data(colon) # 加载内置 colon 数据集
View(colon) # 预览数据集
colon 数据集介绍戳这里。
两组间生存率的比较
在 colon 数据集中,如要研究男性和女性之间的生存率是否有差异,该怎么做?
在 R 中常使用 survdiff() 函数进行生存率的比较,代码如下:
survdiff(Surv(time, status) ~ sex, data = colon)
# 默认使用 log-rank 检验
输出结果:
Call:
survdiff(formula = Surv(time, status) ~ sex, data = colon)
N Observed Expected (O-E)^2/E (O-E)^2/V
sex=0 890 444 436 0.136 0.259
sex=1 968 476 484 0.123 0.259
Chisq= 0.3 on 1 degrees of freedom, p= 0.6
结果显示 p = 0.6>0.05
,可认为男性和女性之间的生存率没有差异。
多组间生存率的比较
在模型表达式“~”的右边指定多个变量,则检验是对由这些变量所有取值组合形成的分组进行的。
survdiff(Surv(time, status) ~ sex + rx, data = colon)
输出结果:
Call:
survdiff(formula = Surv(time, status) ~ sex + rx, data = colon)
N Observed Expected (O-E)^2/E (O-E)^2/V
sex=0, rx=Obs 298 158 142 1.865 2.206
sex=0, rx=Lev 266 137 130 0.399 0.465
sex=0, rx=Lev+5FU 326 149 165 1.506 1.836
sex=1, rx=Obs 332 187 157 5.540 6.693
sex=1, rx=Lev 354 196 165 5.799 7.073
sex=1, rx=Lev+5FU 282 93 161 28.840 35.035
Chisq= 44.1 on 5 degrees of freedom, p= 2e-08
结果显示p= 2e-08<0.05
,说明各组间总体生存率存在差异。
分层后不同组间生存率的比较
分析性别 (sex) 对生存率的影响在不同分化程度(differ)间是否存在差异?
使用 strata() 函数来控制分层变量。
survdiff(Surv(time, status) ~ sex + strata(differ), data = colon)
输出结果:
Call:
survdiff(formula = Surv(time, status) ~ sex + strata(differ),
data = colon)
n=1812, 46 observations deleted due to missingness.
N Observed Expected (O-E)^2/E (O-E)^2/V
sex=0 876 440 429 0.282 0.541
sex=1 936 459 470 0.257 0.541
Chisq= 0.5 on 1 degrees of freedom, p= 0.5
结果显示p= 0.5>0.05
,说明性别 (sex) 对生存率的影响在不同分化程度(differ)间不存在差异。
survdiff() 函数
检验两组或多组生存曲线是否存在差别,函数调用格式为:
survdiff(formula, data, subset, na.action, rho=0, timefix=TRUE)
formula:如“Surv(time, status) ~ predictors” 的模型表达式;
data:模型表达式中变量来源的数据集;
subset:用于拟合模型的观测值的子集,默认为所有观测值;
na.action:处理缺失值的函数;
rho:设置统计检验类型,rho = 0为 log-rank 检验(默认),rho = 1为 Breslow 检验;
两种检验的区别:
Breslow 检验给观察早期差别更大权重,即对观察早期差别敏感;而log-rank 检验对观察后期差别给相同权重,即对观察后期差别敏感。