获取经验 cdf 值的方法

Way to get the value of an empifical cdf

全部,

我有一个数组如下:

x=runif(1)
cdf=cumsum(c(.2,.5,.1,.05,.05,.01,.09))
>p
[1] 0.20 0.70 0.80 0.85 0.90 0.91 1.00

如何return x 对应的 cdf 条目的索引?例如,.1 将 return 1,.98 将 return 7)

尝试findInterval,例如:

findInterval(c(0.1, 0.98), cdf) + 1
# [1] 1 7

正如@sgibb 所展示的,findInterval 是完成这项工作的正确工具。 (我不认为 "empirical cdf" 是您想要的正确术语,因为 ecdf 将 return 值范围内的值。您正在请求 "order statistic" . 我添加了最接近的可用标签,但由于 SO 实际上不是统计网站,因此找不到更窄的 "order statistic" 标签。)我已经用 -Inf 围绕我的 'vec' 参数和 Inf(而不是将 returned 值增加 1):

> findInterval(c(0.1, 0.98), c(-Inf,cdf,Inf)) 
[1] 1 7