Почему значения не отображаются в графике ecdf? - PullRequest
2 голосов
/ 25 августа 2011

Я пытаюсь построить ccdf данных, приведенных ниже, но по какой-то причине это выглядит неправильно.Я проводил перекрестную проверку с некоторыми точками данных (2523, 313, 224), но они не видны.Я что-то не так делаю?

R Сценарий:

# Y defined below
Y.ecdf = ecdf(Y)
curve((length((Y))*(1-Y.ecdf(x))), n = 10000, 
       from = 0, to = 100, xlab = "# of items", 
       ylab = "# instances", col=colors[1], lty=1, lwd=4)

ecdf plot

Y = c( 3, 1, 4, 11, 2, 2, 9, 7, 22, 3, 1, 1, 7, 2, 2, 2, 4, 2, 1, 1, 6, 3, 20,
15, 4, 1, 1, 5, 3, 10, 16, 224, 74, 2, 1, 2, 2, 3, 3, 7, 2, 2, 1, 4, 2, 9,
3, 3, 2, 1, 1, 3, 2, 4, 4, 1, 7, 2, 1, 2, 1, 1, 2, 4, 3, 1, 1, 1, 3, 4, 2,
2, 1, 1, 5, 6, 13, 15, 3, 1, 2, 5, 1, 1, 1, 1, 2, 6, 1, 4, 1, 3, 1, 1, 4,
2, 2, 3, 3, 1, 4, 2, 1, 4, 6, 1, 1, 1, 1, 2, 5, 2, 1, 1, 1, 1, 1, 3, 1, 3,
2, 1, 1, 1, 2, 1, 8, 2, 3, 1, 1, 1, 1, 1, 3, 1, 3, 2, 1, 2, 1, 1, 5, 1, 1,
4, 3, 3, 1, 1, 1, 3, 4, 4, 3, 2, 2, 4, 3, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3,
2, 3, 9, 3, 4, 2, 1, 1, 1, 3, 22, 5, 13, 1, 1, 1, 1, 1, 4, 1, 1, 31, 1, 1,
2, 1, 1, 1, 3, 4, 4, 8, 6, 6, 7, 2, 1, 2, 2, 5, 1, 2, 6, 6, 1, 3, 1, 5, 2,
1, 5, 3, 1, 2, 2, 1, 2, 1, 2, 2, 1, 2, 1, 1, 4, 1, 3, 2, 1, 4, 1, 212, 2,
7, 7, 10, 2, 4, 2, 1, 1, 1, 2, 3, 2, 1, 16, 6, 2, 10, 2, 1, 1, 15, 1, 3, 8,
1, 1, 3, 1, 1, 2, 1, 1, 4, 2, 3, 1, 1, 1, 1, 5, 9, 4, 1, 1, 2, 5, 1, 4, 9,
6, 19, 1, 1, 1, 2, 10, 6, 9, 5, 11, 6, 8, 1, 1, 1, 1, 1, 313, 3, 1, 3, 1,
2, 2, 2, 3, 4, 5, 1, 1, 3, 1, 1, 5, 4, 2, 5, 1, 20, 4, 1, 2, 1, 1, 1, 2, 5,
4, 2, 3, 1, 3, 1, 2, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 1, 1, 3, 3, 1, 1, 1, 8, 1, 1, 1, 1,
1, 1, 2, 2, 2, 2, 4, 13, 1, 2, 1, 2, 3, 3, 1, 2, 2, 1, 3, 4, 1, 1, 1, 1, 2,
2, 4, 5, 3, 2, 2, 2, 1, 1, 3, 2523, 7, 4, 2, 4, 11, 8, 1, 4, 4, 2, 5, 3, 3,
1, 3, 1, 3, 4, 1, 1, 1, 1, 6, 6, 2, 2, 1, 8, 8, 3, 3, 4, 5, 2, 2, 2, 3, 2,
6, 2, 2, 2, 1, 5, 5, 4, 3, 1, 2, 2, 6, 3, 2, 2, 2, 10, 9, 1, 2, 1, 1, 1, 2,
2, 3, 1, 3, 1, 9, 1, 1, 1, 2, 1, 96, 2, 2, 5, 1, 1, 1, 2, 2, 1, 1, 1, 5, 2,
1, 1, 1, 2, 1, 1, 4, 2, 10, 3, 2, 2, 8, 8, 2, 1, 2, 4, 1, 1, 13, 20, 3, 2,
5, 9, 1, 22, 25, 4, 1, 1, 3, 2, 1, 1, 7, 9, 5, 9, 1, 3, 1, 8, 2, 2, 1, 3,
1, 2, 6, 2, 1, 2, 2, 1, 2, 2, 2, 1, 1, 1, 16, 3, 5, 2)

1 Ответ

2 голосов
/ 25 августа 2011

Расширение нашего обсуждения в комментариях ...

Эмпирическая кумулятивная функция распределения представляет собой график зависимости X (ось X) от Pr (X

plot(Y.ecdf,do.points = FALSE,
     verticals = TRUE,col = "blue",
     xlab = "x", ylab = "Pr(X < x)")

enter image description here

Если вы посмотрите очень внимательно, вы сможете увидеть, где линия поднимается, когда вы достигнете очень больших значений,но это трудно разобрать, поскольку многие из ваших значений меньше 10.

Что вы сделали, так это инвертировали эту функцию, чтобы вы смотрели на противоположный хвост распределения, т.е. Pr (X> х).Вы также масштабировали вероятности по оси Y.Я не уверен почему, но что угодно.Это может иметь смысл с учетом вашей конкретной задачи.Итак, вы делаете что-то вроде этого (но с масштабированием по оси Y):

curve((1-Y.ecdf(x)), n = 10000, 
       from = 0, to = 2600, ylab = "Pr(X > x)", 
       xlab = "x", col="blue", lty=1, lwd=2)

enter image description here

, но у вас изначально были установлены аргументы from и toотображайте только функцию от 0 до 100. Если вы хотите «увеличить» свои выбросы, вы можете просто изменить значения from и to на более релевантные:

curve((1-Y.ecdf(x)), n = 10000, 
       from = 250, to = 2600, ylab = "Pr(X > x)", 
       xlab = "x", col="blue", lty=1, lwd=2)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...