1

データをベータ分布に適合させ、アルファパラメーターを取得する必要があります。Python(rpy2)からRを使用しようとしていますが、コードは次のようになります。

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")

しかし、私はこのエラーを受け取ります:

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

詳細な例を含むRの適切なドキュメントが見つからないようです。そのため、これだけを見つけまし

start 初期値で最適化するパラメータを示す名前付きリスト。一部の名前付きディストリビューションでは、これを省略できます(詳細を参照)。...densfunまたはoptimのいずれかの追加パラメーター。特に、下限または上限、あるいはその両方を介して境界を指定するために使用できます。densfun(または文字列指定に対応する密度関数)の引数が含まれている場合、それらは固定されたままになります。

私は本当に次のことについての手がかりを持っていません:

  • 開始パラメータとして何を置くか、そしてそれが私の見積もりにどのように影響するか
  • start=list(shape1=0.5, shape2=0.5)トリックを行わないので、Pythonで使用する構文

ヒントはありますか?

4

1 に答える 1

2

さて、もう少し掘り下げた後、私は解決策を見つけました:

from rpy2.robjects import DataFrame
starter= DataFrame({'shape1':0.5,'shape2':0.5})
x = MASS.fitdistr(myValues, "beta", start=starter))
于 2012-07-19T10:48:33.657 に答える