全部,
我有一个数组如下:
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
如何返回 x 的相应 cdf 条目的索引?例如,.1 将返回 1,.98 将返回 7)
正如@sgibb 所展示的那样findInterval
,它是完成这项工作的正确工具。(我不认为“经验 cdf”是您想要的正确术语,因为ecdf
它将返回值范围内的值。您正在请求“订单统计”。我添加了最接近的可用标签,但是因为 SO真的不是一个统计网站,没有找到更窄的“订单统计”标签。)我已经开始用-Inf
and Inf
(而不是将返回值增加1)包围我的'vec'参数:
> findInterval(c(0.1, 0.98), c(-Inf,cdf,Inf))
[1] 1 7
试试findInterval
,例如:
findInterval(c(0.1, 0.98), cdf) + 1
# [1] 1 7