0

全部,

我有一个数组如下:

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)

4

2 回答 2

3

正如@sgibb 所展示的那样findInterval,它是完成这项工作的正确工具。(我不认为“经验 cdf”是您想要的正确术语,因为ecdf它将返回值范围内的值。您正在请求“订单统计”。我添加了最接近的可用标签,但是因为 SO真的不是一个统计网站,没有找到更窄的“订单统计”标签。)我已经开始用-Infand Inf(而不是将返回值增加1)包围我的'vec'参数:

> findInterval(c(0.1, 0.98), c(-Inf,cdf,Inf)) 
[1] 1 7
于 2015-05-05T17:25:29.097 回答
2

试试findInterval,例如:

findInterval(c(0.1, 0.98), cdf) + 1
# [1] 1 7
于 2015-05-05T16:45:21.290 回答