此处This问题的答案提出了一种应用ecdf
的方法。
但是我使用了包Ecdf()
中的Hmisc
,因为它提供了一种方便的方法来执行ccdf(互补累积分布函数)图。 (通过将what
选项设置为'1-F')
默认情况下,Ecdf()
执行绘图并返回包含x
和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 to Data Frame建议的方法将此列表转换为data.frame,但我的数据很大,而rbind
似乎非常慢。
答案 0 :(得分: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