确定R

时间:2015-06-10 19:24:40

标签: r quantile cumsum

这似乎是一个简单的问题,但由于某些原因,我无法找到解决方案。

我有一个总和为1的概率矩阵,我想知道我有哪个值累积和,例如0.5。换句话说,如果我将此矩阵转换为有序向量,我必须从最高值走多远才能获得0.5的累积和。

我将矩阵转换为值向量,并使用plot(cumsum(x))生成以下图形:

Cumulative Sum of Vector Values

我可以做类似

的事情
P<-ecdf(x)
P(0.00001)

得到x值为0.00001的累积和,但我想转向另一个方向,即累积和为0.5的x值是什么?

quantile()给出了50%有序值的值(例如,它会给出上图中sort(x)[4e + 05]的值),这不是我所追求的。

感谢您对这个看似简单的问题的帮助!

干杯, 约什

解决方案:

x[max(which(cumsum(x)<=0.5))]

给出累积和为0.5的值(感谢@plafort),虽然好像应该有一个更简单的方法!

1 个答案:

答案 0 :(得分:0)

我想我得到了你想要的东西;这是我的解决方案:我的目标是找出cumsum>= 20的矩阵元素。 即使我认为必须有一种超级简单的方法来实现这一点。

set.seed(1)
data <- matrix(rnorm(9, 10), 3, 3)
data
          [,1]      [,2]     [,3]
[1,]  9.373546 11.595281 10.48743
[2,] 10.183643 10.329508 10.73832
[3,]  9.164371  9.179532 10.57578
which(cumsum(data) >= 500)[1]
[1] NA
which(cumsum(data) >= 20)[1]
[1] 3