Построение CCDF продолжительности ходьбы - PullRequest
0 голосов
/ 13 июля 2011

Я составил график CCDF, как упоминалось в вопросе о максимальных точках заговора в записи R? , чтобы получить график (изображение1) с этим кодом:

ccdf<-function(duration,density=FALSE)
{
freqs = table(duration)
  X = rev(as.numeric(names(freqs)))
  Y =cumsum(rev(as.list(freqs)));
  data.frame(x=X,count=Y)
}
qplot(x,count,data=ccdf(duration),log='xy')

Теперь на основе ответа teucer на График накопления «Обратный» кумулятивный частотный график с ECDF Я попытался построить CCDF, используя команды ниже:

f <- ecdf(duration)
plot(1-f(duration),duration)

Я получил сюжет, подобный image2.
Также я прочитал комментарии к одному из ответов в Построение CDF набора данных в R? , поскольку CCDF - не что иное, как 1-ECDF.
Я совершенно не понимаю, как получить CCDF моих данных.

Изображение1
enter image description here


Image2 enter image description here

Ответы [ 2 ]

3 голосов
/ 13 июля 2011

Сгенерируйте некоторые данные и найдите функцию ecdf.

x <- rlnorm(1e5, 5)
ecdf_x <- ecdf(x)

Сгенерируйте вектор через равные интервалы в диапазоне x.(ПРАВКА: в этом случае вы хотите, чтобы они были равномерно распределены по логарифмической шкале; если у вас есть отрицательные значения, используйте выборку по линейной шкале.)

xx <- seq(min(x), max(x), length.out = 1e4)
#or
log_x <- log(x)
xx <- exp(seq(min(log_x), max(log_x), length.out = 1e3))

Создание данных с координатами x и y для графика.

dfr <- data.frame(
  x = xx,
  ecdf = ecdf_x(xx),
  ccdf = 1 - ecdf_x(xx)
)

Нарисовать сюжет.

p_ccdf <- ggplot(dfr, aes(x, ccdf)) + 
  geom_line() +
  scale_x_log10()
p_ccdf

(Также взгляните на aes(x, ecdf).)

1 голос
/ 04 января 2012

Я использовал ggplot, чтобы получить желаемый ccdf-график своих данных, как показано ниже:

>>ecdf_x <- ecdf(x) 
>>dfr <- data.frame( ecdf = ecdf_x(x), 
>>ccdf = 1 - ecdf_x(x) ) 
>>p_ccdf <- ggplot(dfr, aes(x, ccdf)) + geom_line() + scale_x_log10() 
>>p_ccdf

Извините за столь позднюю публикацию.Спасибо всем!

...