3

Rに含まれる最尤法、より具体的にはRconstrOptim() のstataパッケージからいくつかのパラメーターを推定しようとしています。Pythonでプログラミングし、RPy2を介してRを使用しています。

私のモデルでは、データがベータ分布に従うと想定しているため、パラメーターに事前に指定された値を使用してシミュレートされたデータセットを作成し、推定プログラムが正常に機能することを確認するためにこれらのパラメーターを推定しようとしています。

私が観察したことは、私の推定は初期パラメータに非常に敏感であるということです。たとえば、推定する11個のパラメーターがあり(パラメーターをpam1..pam11と呼びましょう)、それらの真の値は次のとおりです。

pam1=0.2  pam2=0.3  pam3=0.4  pam4=0.7 pam5=0.55  pam6=0.45  pam7=0.1  pam8=0.01 pam9=0.01 pam10=45 pam11=45

constrOptim()私は開始パラメータを次のように設定しています:

start_param = FloatVector((pam1、pam2、pam3、pam4、pam5、pam6、pam7、pam8、pam9、pam10、pam、11))

ここで開始値を設定します。異なる開始値のセットを使用すると、結果が変化することを確認しました。たとえば、私がセットを使用しているとき

start_param=FloatVector((0.2,0.3,0.4,0.6,0.7,0.8,0.3,0.011,0.011,15,15))

そして私は次の見積もりを取得します

$par

 [1]  0.20851065  0.30348571  0.43616932  0.73695654  0.58287221 
0.45541506

 [7]  0.11191879  0.02233908  0.01988878 46.57249043 45.48544918

$value

[1] -215.9711

$convergence

[1] 0

しかし、たとえば次のように別のセットを使用している場合:

start_param=FloatVector((0.2,0.3,0.4,0.75,0.55,0.45,0.3,0.05,0.05,59,59))

結果が変わり、収束が失われているようです

$par

[1]  0.17218738  0.27165359  0.48458978  0.80295773  0.62618983  0.43254786

[7]  0.12426385  0.02991442  0.01853252 57.78269692 59.35376216

$value

[1] -146.9858

$convergence

[1] 1

私の質問は次のとおりです。Stataには、数値最適化アルゴリズムのより適切な開始値を検索するオプションがあることがわかりました。行列を設定して複数の開始値を設定しようとしましたが、うまくいきませんでした。constrOptim私がこのようなことをすることを可能にするオプションはありますか?

よろしくお願いします。

追加情報については、私が使用する仕様constrOptim()は次のとおりです。

res=statsr.constrOptim(start_param,Rmaxlikelihood,grad='NULL',ui=ui,ci=ci,method="Nelder-Mead",control=list("maxit=3000,trace=F"))
4

1 に答える 1

0

私が探していたものを正確に実行するRの関数に出くわしました。パッケージ「Rsolnp」には、solnpソルバーのランダム初期化と複数回の再起動を実行するために記述された関数「gosolnp」があります。

これは非常に効率的であり、ドキュメントにはその使用方法の例が記載されています。

詳細:http ://cran.r-project.org/web/packages/Rsolnp/Rsolnp.pdf

于 2014-05-09T16:08:42.917 に答える