2011-11-10 16 views
1

私はoptim/nlmを使って最尤推定を行い、パラメータは多次元配列になっています。R optim/nlm多次元配列のパラメータを持つ

尤度は、データxと与えられたパラメータtheta、likelihood(theta、x)の多次元配列が与えられた場合に、実数を与えます。

しかし、OPTIM/NLMを使用して、シータだけで罰金を評価していたのと同じ寸法を有する開始値で、私は次のエラーを取得しています:

Error in theta[1, 1, 1] : incorrect number of dimensions 

ときの評価見込み。 optim/nlmは私の多次元配列を1D配列に平坦化することが判明しました。とにかく、多次元配列のパラメータでoptim/nlmを使うことはできますか?

+0

特定の解決方法は、使用するコードによって異なります。私が知る限り、 '['の 'drop = FALSE'パラメータはグローバルには適用できません。 –

答えて

2

これはoptim自体では可能ではないと思います。私の助言はあなた自身の形を復元することです。

optim(
    matrix(1:4, 2, 2), 
    function(par) { 
     par = matrix(par, 2, 2) # Reshape 
     sum((par - matrix(5:8, 2, 2))**2) 
    } 
) 
+0

アイデアをありがとう、私は多次元配列の次元を私の関数へのパラメータとして置いて、尤度関数の中でそれを再構成します。 – pmangg