2

これは単純な問題のように思えますが、何らかの理由で解決策を見つけることができませんでした。

合計が 1 になる確率の行列があり、どの値で累積合計がたとえば 0.5 になるかを知りたいとします。言い換えれば、この行列を並べ替えられたベクトルに変換した場合、累積合計が 0.5 になるには、最高値からどれだけ離れなければならないかということです。

行列を値のベクトルに変換し、plot(cumsum(x)) を使用して次のグラフを作成しました。

ベクトル値の累積和

私は次のようなことができます

P<-ecdf(x)
P(0.00001)

0.00001 の x 値で累積合計を取得しますが、別の方向に進みたい、つまり、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 に答える