中位数 VS 生存中位数(来自 survfit)

median VS survival median (from survfit)

这似乎是一个愚蠢的问题,但我想知道为什么 median 的中位数和 survfit 的中位数(“生存包” ) 不同

我试过在sciencing.com中模拟教程:

List the survival time of all the subjects in your sample. For example, if you have five students (in a real study, you'd have more) and their times to graduation were 3 years, 4 years (so far), 4.5 years, 3.5 years and 7 years (so far), write down the times: 3, 4, 4.5, 3.5, 7.

Put a plus sign (or other mark) next to any times that are right-censored (that is, those that have not had the event happen yet). Your list would look like this: 3, 4+, 4.5, 3.5, 7+.

所以我创建了一个 data.frame(T 代表死了,F 代表活着):

survive <- data.frame(OS = c(3,4,4.5,3.5,7), status = c(T,F,T,T,F))

中位数为 4,如 sciencing.com 所说:

median(survive$OS)
[1] 4

但是当我使用“生存包”进行生存分析时,我得到了这个:

Call: survfit(formula = Surv(OS, status) ~ 1, data = survive)

      n  events  median 0.95LCL 0.95UCL 
    5.0     3.0     4.5     3.5      NA

所以我的问题是为什么这两个中位数不同?

谢谢

请记住,您拥有的时间是 而非 生存时间 - 它们是 跟进 时间。其中两个人是right-censored,这意味着我们不知道他们在跟进时间后发生了什么。

假设我们绘制您的生存曲线:

 plot(Surv(survive$OS, survive$status))

该图向我们展示了幸存者在我们积极追踪的人群中所占的比例。它随着人的死亡而逐步下降,但是如果我们失去了一个跟进的人,估计的生存时间不会在那个时候改变(为什么我们失去一个跟进的人会改变我们在那个时候估计的生存时间?)

现在让我们用这个图来回答“观察到的存活率在多长时间后低于 50%?”这个问题。我们可以在 y = 0.5 处画一条水平线,看看这条线在什么值处穿过生存曲线:

abline(h = 0.5, lty = 2, col = "red")
abline(v = 4.5, lty = 2, col = "red")

我们可以看到估计的存活率在 4.5 年时低于 50%,因此这是中位存活时间。统计每个点的个体,我们可以看到:

  • 时间=0:我们的样本中有5个人,他们都还活着(存活率=100%)
  • 时间=3:我们样本中有5个人,其中一人已经死亡(存活率=80%)
  • 时间=3.5:我们样本中有5个人,其中两人已经死亡(存活率=60%)
  • Time = 4: 我们的样本中有 4 个人,因为我们失去了一个跟进。我们失去此人进行随访这一事实不会影响当时的估计生存率,因此生存率保持在 60%。请注意,如果此人死亡而不是失访,则存活率会下降到 40%,而中位存活率确实是 4 年。
  • Time = 4.5: 我们的样本中有 4 个人,其中只有一个人活着(生存 = 0.25)