2013-02-17 9 views
7

In den Hilfedateien für rbinom, Größe Argument ist eine Reihe von Studien (inkl. Eine Null), aber es sagt nicht, ob dies auch ein Vektor sein kann.Sampling von einem Binomial (K, p) mit unerwartetem Ergebnis

Der richtige Weg, um diese Funktion zu verwenden, ist

table(rbinom(n = 1000, size = 1, prob = 0.2)) 

    0 1 
809 191 

Aber was hier geschieht?

table(rbinom(n = 1000, size = 0:1, prob = 0.2)) 

    0 1 
894 106 

Antwort

9

Argument Wiederverwertung der Größe Argument ist die Hauptursache.

Da n 1000, 0:1 zurückgeführt wird, bis Sie 500 0 's und 500 1' get s (abwechselnd).

die alle 0-size diejenigen geben 0:

> rbinom(10,size=0,prob=0.2) 
    [1] 0 0 0 0 0 0 0 0 0 0 

Resultierende in 500 0 's + 500 Bernoulli-Versuchen mit p = 0,2, in etwa 100 1 resultierenden' von 1000 s-Elemente.

[Ihre Ergebnisse schienen mir nicht überraschend, aber Argument Recycling kann beißen, wenn Sie nicht danach suchen, und - obwohl es Gründe gibt, warum die Anzahl der Erfolge in 0 Bernoulli-Studien als 0 definiert werden sollte - es kann auch nicht auf den ersten offensichtlich scheinen]

4

Dokumentation Fehler.

Wenn ‚Größe‘ ist nicht eine ganze Zahl, ‚NaN‘ zurückgegeben. [mein Schwerpunkt]

Sie geben es mehr als eine ganze Zahl, so würde die Dokumentation bedeuten, dass Sie NaN erhalten würden.

Es ist verwirrend, weil es explizit angibt, wo andere Argumente Vektoren sein können, aber nicht size. Ich würde einen Dokumentationsfehler mit dem Betreuer einreichen, der in diesem Fall wahrscheinlich den Haupt-R-Bug-Tracker bedeutet.

+0

Guter Punkt. Ich wollte vorschlagen, dass das Zulassen von "size = 0" ein Fehler war, aber es ist wahrscheinlich ein sehr nützliches Feature, dass "size = 0" null ergibt, damit Loops nicht abstürzen. So ähnlich wie die mathematische Definition '0^0 = 1' –

+0

Ich habe einen Bugreport eingereicht und D. Murdoch geantwortet:" Boilerplate Dokumentation wurde zu dieser Seite hinzugefügt, ebenso die anderen Distributionen, in R-devel und R- gepatcht. " –

+0

size = 0 für binomials macht sehr viel Sinn: Wenn man 0 Münzen wirft, bekommt man 0 Köpfe. Das einzige konzeptionelle Problem besteht darin, dass ein Binomial mit der Größe = 0 nicht mehr zufällig ist, weil es nur ein mögliches Ergebnis gibt. – Pere

Verwandte Themen