开始时概率低于1的生存分析
Survival analysis with a probability lower than 1 at the start
我正在尝试创建一个图表,显示一首歌曲随时间(图表中的几周)进入 Billboard Hot 100 前 10 名的概率。当一首歌进入排行榜时,概率应该是 0.15 左右,接下来的每个星期都会下降。因此图表应该是从 0.15 开始的下降曲线,x(图表中的周数)和 y(达到前 10 名的概率)。
1) 我可以使用 Kaplan-Meier 曲线来做这个吗?
2) 如何在 R(生存包)中创建不是以 1 开始的概率的 Kaplan-Meier 曲线?
有点...有点...不是真的。
首先,您可能不需要绘制生存函数的典型 Kaplan-Meier 曲线。您需要补码或累积发生率。 (1 - S(x)
)。这将以0的概率开始剧情,表示没有歌曲在它们发布的那一刻进入前十(有点,有点)
对于发行后第一周排在前列的歌曲,需要将跟进时间标记为0,前十标志标记为1。这样,虽然技术上开始了step功能为零时,它将立即上升到首周进入前十名的歌曲比例。
例如:
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))
产生以下图:
这是一个有趣的问题。我想也许 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?毫无疑问还有其他人。
祝你好运,玩得开心。
我正在尝试创建一个图表,显示一首歌曲随时间(图表中的几周)进入 Billboard Hot 100 前 10 名的概率。当一首歌进入排行榜时,概率应该是 0.15 左右,接下来的每个星期都会下降。因此图表应该是从 0.15 开始的下降曲线,x(图表中的周数)和 y(达到前 10 名的概率)。
1) 我可以使用 Kaplan-Meier 曲线来做这个吗?
2) 如何在 R(生存包)中创建不是以 1 开始的概率的 Kaplan-Meier 曲线?
有点...有点...不是真的。
首先,您可能不需要绘制生存函数的典型 Kaplan-Meier 曲线。您需要补码或累积发生率。 (1 - S(x)
)。这将以0的概率开始剧情,表示没有歌曲在它们发布的那一刻进入前十(有点,有点)
对于发行后第一周排在前列的歌曲,需要将跟进时间标记为0,前十标志标记为1。这样,虽然技术上开始了step功能为零时,它将立即上升到首周进入前十名的歌曲比例。
例如:
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))
产生以下图:
这是一个有趣的问题。我想也许 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?毫无疑问还有其他人。
祝你好运,玩得开心。