如何对 R 中的生存数据执行 Wilcoxon 符号秩检验?

机器算法验证 r 生存 威尔克森符号秩
2022-03-05 12:18:56

假设你有这样的生存数据:

obs <- data.frame(
  time = c(floor(runif(100) * 30), floor((runif(100)^2) * 30)),
  status = c(rbinom(100, 1, 0.2), rbinom(100, 1, 0.7)),
  group = gl(2,100)
  )

要执行标准对数秩检验,可以使用

survdiff(Surv(time, status) ~ group, data = obs, rho = 0)

对?

但是其他测试呢?您如何执行 Wilcoxon 符号秩检验、Peto 检验或 Fleming-Harrington 检验?

R 提供了执行Wilcoxon test的可能性,但是我没有找到如何让它考虑审查。

此外,文档指出,设置rho = 1将使测试成为“Gehan-Wilcoxon 测试的 Peto 和 Peto 修改”。但这和Peto测试一样吗?

2个回答

要回答有关如何在 R 中计算此值的问题,您可以使用包中的comp()函数survMisc例子:

> library(survMisc)
> fit = survfit(Surv(time, status) ~ x, data = aml)
> comp(fit)$tests$lrTests
                              ChiSq df      p
Log-rank                       3.40  1 0.0653
Gehan-Breslow (mod~ Wilcoxon)  2.72  1 0.0989
Tarone-Ware                    2.98  1 0.0842
Peto-Peto                      2.71  1 0.0998
Mod~ Peto-Peto (Andersen)      2.64  1 0.1042
Flem~-Harr~ with p=1, q=1      1.45  1 0.2281

要选择 Fleming-Harrington 检验的参数(如最后一行所示),请使用FHpFHq参数。例如,

> comp(fit, FHp=0, FHq=0)$tests$lrTests
[…]
Flem~-Harr~ with p=0, q=0      3.40  1 0.0653

为您提供正常的对数秩检验(也显示在第一个示例的第一行中)。

(您可能应该引用您的命名约定的来源,并更详细地解释为什么提出这个问题。如果这是一个试图匹配 SAS 或 SPSS 文档的案例,我们可能会遇到跨文化困难。)

关于如何获得“Peto 测试”的具体问题的快速回答是使用 rho=1,但这将是一个近似值。参考 Klein 和 Moeschberger 的“生存分析”第 7 章的单样本和双样本部分,我们读到 Peto-Peto 版本和 Gehan 版本都是 Mann-Whitney Wilcoxon 的双样本(审查)版本两样本测试,但使用了不同版本的生存函数估计器。没有单一的“Fleming-Harrington 检验”,因为该术语指的是一系列检验,这些检验在rho. (R/Ssurv.diff函数将 Fleming-Harrington 族的 q 参数固定为 0,并且只改变它命名为 rho 的 p 参数。)

一个元问题是你是否应该关注名称而不是数学实质?在 Fleming-Harrington 家族中选择 p=rho=0(q 固定为 0)在整个时间范围内对 (OE) 或跨组差异进行同等加权,而 Gehan-Wilcoxon 和 Peto-Peto 测试均对早期加权死亡更强烈。我的观点(作为一名医生)是明智的做法是,对典型病例的早期差异进行加权是明智的,但可以想象可以为其他选择辩护的具体情况。