【问题标题】:How to extract Ecdf value from the Ecdf() return?如何从 Ecdf() 返回中提取 Ecdf 值?
【发布时间】:2013-05-24 21:01:37
【问题描述】:

This 问题的答案在这里提出了一种应用ecdf 的方法。

但是,我使用的是 Hmisc 包中的 Ecdf(),因为它提供了一种方便的方法来绘制 ccdf(互补累积分布函数)图。 (通过将what 选项设置为“1-F”)

默认情况下,Ecdf() 执行绘图并返回包含xy 的嵌套列表。

如何提取某个x 值的y 值?然后在原图上绘制?

仅供参考:

 > str(Ecdf(rnorm(20), lwd = 2))
    List of 2
     $ x: num [1:21] -1.46 -1.46 -1.18 -1.17 -1.16 ...
     $ y: num [1:21] 0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 ...
     - attr(*, "N")=List of 2
      ..$ n: num 20
      ..$ m: num 0

起初我正在考虑使用R List to Data Frame 建议的方法将此列表转换为data.frame,但我的数据很大,rbind 似乎真的很慢。

【问题讨论】:

    标签: r list ecdf


    【解决方案1】:

    Ecdf 返回一个列表,而ecdf 返回一个函数。使用 R-stats 函数ecdf 比使用诸如Ecdf(.)$y[ min(which(Ecdf(.)$x>val))] 之类的东西要容易得多。如果您想从 Ecdf-object 获取 ecdf(x=0) 的值,那么这应该可以:

     ecdf( Ecdf(rnorm(20), lwd = 2)$x ) (v=0)
    [1] 0.5238095
    

    (原来ecdf 返回的函数的形式参数是“v”。)但是如果你想要不太优雅的方法并且你已经将结果分配给了一个名为'oneEcdf'的对象:

    oneEcdf <- Ecdf(rnorm(20), lwd = 2)
    oneEcdf$y[ min( which(oneEcdf$x > 0 ))]
    [1] 0.6
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-20
      • 1970-01-01
      • 2017-12-04
      • 1970-01-01
      • 2011-03-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多