2017-02-15 7 views
-1

負の二項分布で10回の試行が成功するまで、数字のシーケンス(すなわち0 0 1 0 1 0 1 ...)に基づいて複数のリストを作成しようとしています。私は明らかに私の現在のコードは、価値のある何かを取得していないとあまりにもよく、リスト機能を理解していないです:負の二項分布に基づいてさまざまなサイズのリストを生成

z = as.list(supply(1:10, function(x) rnbinom(inf, 10, 1/x))) 

確率はでシーケンス1/Nごとに変化させるために必要があるのn = 1,2、... 10回の成功が起こるまで「実験」を続けると、Pr = 1であるので結果(「1 1 1 1 1 1 1 1 1 1 1 1」が最初のものになります)を列挙する必要があります。

+1

'lapply(seq(10)、function(x){rbinom(10、1、1/x)})'?あなたのコードにいくつかの問題のあるタイプミスがあり、 'rbinom'に無限の数字を求めています。これは問題を引き起こします。 – alistaire

+0

私は10の成功があるまで試練を続けることを望むので、無限の量をそこに置く理由があります。したがって、いくつかのシーケンスは他のシーケンスよりも大きな結果を持つでしょう。 – Aesler

+0

これは 'rbinom'の仕組みではありません。あなたはあなたが望む数の前にそれを教えなければなりません。 'while'ループと' cumsum'でこれを行うことができますが、それは非常に不合理です。おそらくあまりにも多くの数を作ってサブセット化する方がよいでしょう。 – alistaire

答えて

0

rnbinomが実際に返すのは、一連の試行ではなく、シミュレートされた失敗の数です。したがって、ランダムな数の失敗に基づいてシミュレートするには、返された失敗の数だけ、repの失敗(0)、成功(9)のシャッフル、成功(10回)の終了が必要です。逆確率

lapply(1:10,function(x) c(sample(c(rep(1,10-1),rep(0,times=rnbinom(1,10,1/x)))),1)) 

のリストの別を適用するprob=0.5

c(sample(c(rep(1,10-1),rep(0,times=rnbinom(1,10,0.5)))),1) 

と例えば

は、試験自体の十分な数をシミュレートし、その後切り捨てることであろう所望の成功の数に比例する。

x <- rbinom(100,1,0.5) 
x[cumsum(x)<=10] 

適切な実装では、追加の試行をシミュレートして十分な成功を収めていないという極端なケースを処理します。

+0

OK私はそれを間違った方法で見ていたことを理解しています。 – Aesler

関連する問題