【问题标题】:Survival analysis with a probability lower than 1 at the start开始时概率低于 1 的生存分析
【发布时间】:2018-04-09 13:06:40
【问题描述】:

我正在尝试创建一个图表,显示一首歌曲在一段时间内(图表中的周数)进入 Billboard Hot 100 前 10 名的概率。当一首歌进入图表时,概率应该是 0.15 左右,接下来每周都会下降。因此,图表应该是从 0.15 开始的下降曲线,其中 x(图表中的周数)和 y(到达前 10 名的概率)。

1) 我可以使用 Kaplan-Meier 曲线来执行此操作吗?

2) 如何在 R(生存包)中创建不是以 1 的概率开始的 Kaplan-Meier 曲线?

【问题讨论】:

  • 我不确定你想达到什么目标?您想为个别歌曲制作曲线吗? Kaplan-Meier 曲线适用于二元事件发生时间数据的生存数据(因此曲线在人口中的 1 人得到结果的那一刻下降),而不是为一个人(无论是人还是歌曲)建模概率
  • 我想显示任何一首歌曲进入前 10 名的概率曲线(所以一条曲线是整个 6000 首歌曲的数据集)。事件(二进制)正在进入前 10 名,当一首歌达到前 10 名(或完全离开图表)时,曲线确实应该下降。所以: 第 0 周:一首歌在未来某个时间点进入前 10 名的概率。第 1 周:在第 1 周尚未进入前 10 名的歌曲在未来某个时间点进入前 10 名的概率。第 2 周:等等。

标签: r probability survival-analysis


【解决方案1】:

这是一个有趣的问题。我想也许 stats.stackexchange.com 会有更多的发言权。

我不认为这类似于生存,因此我认为 Kaplan-Meier 或任何其他生存估计器不会满足您的要求。

这是一种事件时间问题;对该词的网络搜索可能会找到一些资源。但这不是生存或可靠性问题,因为所讨论的事件最终不会发生在所有受试者身上(就像死亡或机械故障那样)。事实上,有问题的事件非常罕见。

我的建议是咬紧牙关,自己计算概率,通过计算进入前 10 名的歌曲。你提到的基本语句只是计算 p[k] = m[k]/n[k] 为方便起见我定义了 m[k] =(在排行榜上至少停留 k 周并最终进入前 10 名的歌曲数量)和 n[k] =(在排行榜上至少停留 k 周的歌曲数量)。我认为 p[k] 在 k 中不一定是单调的——如果那里有凹凸我不会感到惊讶。无论如何,要寻找的东西。

那些从排行榜上掉下来又重新回到排行榜上的歌曲会让画面有点混乱。我的建议是把它们当作一直在图表上一样对待。但是您可能对如何处理它们有不同的想法。

我可以看到一个有趣的变化。 p[j, k] = (在排行榜上至少 k 周后最终进入前 10 名的歌曲的比例是 j) 怎么样?还是一样,但初始位置是 j?毫无疑问还有其他人。

祝你好运,玩得开心。

【讨论】:

    【解决方案2】:

    有点……有点……不是真的。

    首先,您可能不需要绘制生存函数的典型 Kaplan-Meier 曲线。您想要补码或累积发生率。 (1 - S(x))。这将以 0 的概率开始情节,表明没有歌曲在它们发布的那一刻进入前十(有点,有点)

    对于已发行并在第一周排名靠前的歌曲,您需要将后续时间标记为 0,将前十标志标记为 1。这样,虽然阶梯函数在技术上从零开始,它将立即提高首周首映前十名的歌曲比例。

    例如:

    library(survival)
    
    df <-
      data.frame(song = c("A", "B", "C", "D", "E"),
                 # number of weeks followed before reaching top ten
                 # (or truncation)
                 weeks_followed = c(0, 3, 4, 13, 1),
                 topten = c(1, 0, 1, 0, 1),
                 stringsAsFactors = FALSE)
    
    fit <- survfit(Surv(weeks_followed, topten) ~ 1,
                   data = df)
    
    plot(fit,
         conf.int = FALSE,
         # 1 - survival 
         fun = function(x) 1 - x,
         xlim = c(0, 13),
         ylim = c(0, 1))
    

    这会产生以下情节:

    【讨论】:

    • 谢谢,这接近我想要达到的目标。关于如何表明歌曲进入前 10 名的机会实际上每周在图表中下降(下降曲线)?
    • 为此,我认为您最好在 x 轴上显示自发布以来的周数以及当时达到顶部的歌曲比例的折线图或条形图在 y 轴上的那一周。在累积关联图上,您可以通过注意“切线”的斜率(如果您要通过阶跃函数绘制连续曲线)随着时间的推移接近零来进行相同的观察。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-19
    • 1970-01-01
    • 2012-08-22
    • 2021-12-21
    相关资源
    最近更新 更多