这似乎是一个简单的问题,但由于某些原因,我无法找到解决方案。
我有一个总和为1的概率矩阵,我想知道我有哪个值累积和,例如0.5。换句话说,如果我将此矩阵转换为有序向量,我必须从最高值走多远才能获得0.5的累积和。
我将矩阵转换为值向量,并使用plot(cumsum(x))生成以下图形:
我可以做类似
的事情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),虽然好像应该有一个更简单的方法!
答案 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