确定经验分布中的跳跃

Determine jumps in empirical distribution

假设我们有一个随机抽样分布,我们可以计算并绘制相关的 ecdf,如下所示:

set.seed(1)
t1 <- rnorm(10000,mean=20)
t1 <- sort(t1)
t1[1:1000] <- t1[1:1000]*(-100)
t1[1001:7499] <- t1[1001:7499]*50
t1[7500:10000] <- t1[7500:10000]*100
cdft1 <- ecdf(t1)
plot(cdft1)

现在在这种情况下,经验分布中存在跳跃(由意图创建)。我所说的跳跃是指它增加了很多,比方说增加了之前价值的 100% 以上。这发生在位置 7,500 的示例中。我的问题是:如何最有效地找到这些 'jump' 索引?

只需查看 diff 排序后的 t1 值,您就可以接近您想要的结果。

St1 = sort(t1)
which(diff(St1) > abs(St1[-length(St1)]))
[1] 1000 7499

在点 1000 处,St1 从 -1632.8700 切换到 934.6916,这在技术上符合您 "more than 100% change" 的标准。当有这样的标志变化时,我似乎不清楚想要什么。