我正在尝试创建一个图表,显示一首歌曲随着时间的推移达到Billboard Hot 100前10名的概率(图表中的周数)。当一首歌进入图表时,概率应该是0.15,这将在接下来的每周下降。因此,图表应该是从0.15开始的下降曲线,x(图表中的周数)和y(达到前10的概率)。
1)我可以使用Kaplan-Meier曲线来做到这一点吗?
2)如何在R(生存包)中创建一个不以1的概率开始的Kaplan-Meier曲线?
答案 0 :(得分: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))
产生以下情节:
答案 1 :(得分:2)
这是一个有趣的问题。我想也许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?毫无疑问还有其他人。
祝你好运,玩得开心。