2

This question here的答案提出了一种通过应用的方法ecdf

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

默认情况下,Ecdf()绘图并返回一个包含xand的嵌套列表y

如何提取y某个值的x值?然后将其绘制在原始情节上?

供参考:

 > 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 到 Data Frame建议的方法将此列表转换为 data.frame ,但我的数据很大,而且rbind看起来真的很慢。

4

1 回答 1

1

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

 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
于 2013-05-29T16:19:03.953 回答