R fitdistr für Beta-Verteilung: die Start-Parameter?

Muss ich passen meine Daten in einer Beta-Verteilung und das abrufen der alpha-parameter. Ich versuche, R von python (rpy2) und mein code sieht wie folgt aus:

from rpy2 import *
from rpy2.robjects.packages import importr
MASS = importr('MASS') #myVector is a Numpy array with values between 0 and 1
MASS.fitdistr(myVector,"beta")

Aber ich bekomme diese Fehlermeldung:

Error in function (x, densfun, start, ...)  : 
  'start' must be a named list
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/dist-packages/rpy2/robjects/functions.py", line 82, in __call__
    return super(SignatureTranslatedFunction, self).__call__(*args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/rpy2/robjects/functions.py", line 34, in __call__
    res = super(Function, self).__call__(*new_args, **new_kwargs)
rpy2.rinterface.RRuntimeError: Error in function (x, densfun, start, ...)  : 
  'start' must be a named list

Ich kann nicht scheinen zu finden, eine gute Dokumentation für R mit ausführlichen Beispielen, so fand ich nur diese:

start Eine benannte Liste mit den Parametern optimiert werden mit den anfänglichen Werten. Dies kann weggelassen werden für einige der genannten
Distributionen (siehe Details). ... Zusätzliche Parameter, entweder für die
densfun oder für optim. Insbesondere kann es verwendet werden, um anzugeben, Grenzen
über die untere oder die Obere oder beide. Wenn Argumente von densfun (oder die Dichte
Funktion entsprechend ein-Zeichen-string-Spezifikation)
aufgenommen werden Sie werden statt behoben.

Ich habe wirklich keine Ahnung:

  • was Sie als Start-Parameter und wie, das wird auf meine Einschätzung
  • was syntax in Python verwenden, da start=list(shape1=0.5, shape2=0.5) wird nicht den trick tun

Irgendeinen Hinweis?

Zumindest, werden Sie wollen, Lesen Sie die R manual-Seiten für den fitdistr und die beta-Verteilung. Zusammen zeigen Sie, dass die R Befehl für das, was Sie zu tun versuchen, ist so etwas wie fitdistr(x, "beta", start=list(shape1=1/2, shape2=1/2)).
Danke. Ein großes problem ist, dass fitdistr(x, "beta", start=list(shape1=1/2, shape2=1/2)) wird nicht akzeptiert-Python-interpreter. Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: list() takes at most 1 argument (2 given)
Ich konnte auch nicht finden, Beispiele dafür fitdistr mit dem start-parameter in python.
Die docs für rpy2 vorschlagen, die Sie möglicherweise verwenden möchten, ein dict - Objekt übergeben Listen als Argumente. Wenn das nicht funktioniert, erstellen Sie ein VECSXP Objekt. Auf jeden Fall, denn dies ist lediglich eine Programmierschnittstelle Frage, die man besser bedient, auf SO-ich werde migrieren, diese Frage für Sie.
Siehe S. 2 der zweite link in meinem ersten Kommentar: shape1 ist alpha shape2 ist beta.

InformationsquelleAutor Ricky Robinson | 2012-07-18

Schreibe einen Kommentar