2017-02-15 7 views
-1

Ich möchte mehrere Listen basierend auf der Zahlenfolge erstellen (dh 0 0 1 0 1 0 1 ...), bis es 10 erfolgreiche Versuche mit der negativen Binomialverteilung gibt . Ich bin natürlich nicht die Liste Funktionen versteht nur zu gut, wie mein aktueller Code nichts lohnt Abrufen ist:Generieren von Listen unterschiedlicher Größe basierend auf der negativen Binomialverteilung

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

Die Wahrscheinlichkeiten müssen gemäß der Sequenz 1/n mit n = 1,2 variieren, ... , 10, mit dem "Experiment" fortfahren, bis 10 Erfolge auftreten, dann müssen die Ergebnisse ("1 1 1 1 1 1 1 1 1 1" wäre das erste Beispiel, da Pr = 1) aufgeführt werden.

+1

'lapply (seq (10), Funktion (x) {rbinom (10, 1, 1/x)})'? Sie haben einige problematische Tippfehler in Ihrem Code und fragen "rbinom" nach unendlichen Zahlen, was zu Problemen führen wird. – alistaire

+0

Ich möchte, dass die Prüfungen so lange weitergehen, bis es 10 Erfolge gibt, deshalb stelle ich die unendliche Menge dort hin. Einige Sequenzen haben daher größere Ergebnisse als andere. – Aesler

+0

So funktioniert 'rbinom' nicht; Sie müssen es im Voraus sagen, wie viele Zahlen Sie wollen. Du könntest es mit 'while' Loops und' cumsum' machen, aber das ist sehr schlecht beraten; wahrscheinlich besser, zu viele Zahlen und dann Teilmenge zu machen. – alistaire

Antwort

0

Sie wollen verstehen, dass die tatsächlich zurückgegebene rnbinom ist die simulierte Anzahl der Fehler, nicht die Reihenfolge der Versuche. Um also basierend auf einer zufälligen Anzahl von Fehlern zu simulieren, müssen Sie rep Fehler (0) nach der Anzahl der zurückgegebenen Fehler, Shuffle in 9 Erfolgen (1) und endet mit einem Erfolg (für insgesamt 10).

Zum Beispiel mit prob=0.5

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

Um

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

einer Liste der inversen Wahrscheinlichkeiten gelten

Eine Alternative wäre, eine ausreichende Anzahl der Versuche selbst zu simulieren und dann gestutzt zu der Anzahl der gewünschten Erfolge.

Eine richtige Implementierung würde den extremen Fall behandeln, dass nicht genügend Erfolge generiert wurden, indem zusätzliche Versuche zum Verketten simuliert wurden.

+0

OK Ich verstehe, wo ich es in die falsche Richtung gesehen habe, das ist sehr hilfreich - danke – Aesler

Verwandte Themen