2

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

我有一个总和为 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),尽管似乎应该有更简单的方法!

4

1 回答 1

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
于 2015-06-10T19:45:46.890 回答