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