【问题标题】:Plotting CCDF of walking durations绘制步行持续时间的 CCDF
【发布时间】:2011-10-04 13:40:46
【问题描述】:

我已经按照maximum plot points in R? 帖子中提到的问题部分绘制了 CCDF,以获得带有此代码的 plot(image1):

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')

现在,根据teucerHowto Plot “Reverse” Cumulative Frequency Graph With ECDF 的回答,我尝试使用以下命令绘制CCDF:

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

我得到了一个类似 image2 的情节。
此外,我在Plotting CDF of a dataset in R? 中的一个答案中从 cmets 中读到,因为 CCDF 只不过是 1-ECDF。
我对如何获取数据的 CCDF 感到非常困惑。

图片1


Image2

【问题讨论】:

    标签: r ecdf


    【解决方案1】:

    我使用 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
    

    抱歉这么晚才发布。 谢谢大家!

    【讨论】:

      【解决方案2】:

      生成一些数据并找到 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)。)

      【讨论】:

      • 第四步,生成区间向量 xx 在所有元素中显示 NaN。执行此命令后会发生这种情况 xx [99988,] 0 [99989,] 132 [99990,] 19269015 [99991,] 724557277 [99992,] 86783 [99993,] 2407606 [99994, ] 20955521 [99995,] 1337 [99996,] 172949 [99997,] 1179731
      • 此外,它说:强制引入的NAs
      • 如果你有负值,那么记录日志是没有意义的。在这种情况下,使用对seq 的更简单的调用。因为x 来自对数正态分布,所以将xx 定义为对数刻度上的均匀间距更有意义。
      • 我的数据中没有负值,而且我的数据 x 也不是来自对数正态分布。我仍然可以使用对数刻度吗?问题是当计算 xx 时,取 log(x) 就可以了。有什么建议吗?
      • @Ritchie- 我没有定期生成向量,只是按照其他步骤操作: ecdf_x 我觉得还可以。现在唯一困扰我的是在轴上显示精细的刻度标记
      猜你喜欢
      • 2013-07-25
      • 1970-01-01
      • 1970-01-01
      • 2020-01-14
      • 1970-01-01
      • 2015-11-29
      • 2021-10-26
      • 1970-01-01
      相关资源
      最近更新 更多