Определить скачки в эмпирическом распределении

Предполагая, что у нас есть случайное распределение распределения, мы можем рассчитать и построить соответствующий 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% по сравнению с предыдущим значением. Это происходит в примере в позиции 7500. Мой вопрос: как мне найти эти индексы "прыжка" наиболее эффективно?

1 ответ

Решение

Вы можете приблизиться к тому, что вы хотите, просто посмотрев на diff из отсортированных значений T1.

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

В точке 1000 St1 переключается с -1632.8700 на 934.6916, что технически соответствует вашему критерию "изменение более чем на 100%". Мне не ясно, что нужно, когда происходит изменение знака, как это.

Другие вопросы по тегам