2017-07-25 10 views
1

回帰をしようとするときにbbmle:mle2関数を使用する際に問題があります。私の問題を説明するために、私はおもちゃの例を思いついた。`bbmle:mle2`とベクトルパラメータの使用(すでに` optim`を使って動作します)

我々は、ポアソン分布(または任意のカスタム分布)のためにマイナス対数尤度を定義する:上記のコードで

LL <- function(beta, z, x){ 
    -sum(stats::dpois(x, lambda = exp(z %*% beta), log = TRUE)) 
} 

beta私は推定したいパラメータ・ベクトルであり、zモデル/設計であります行列とxは私の興味のある変数です。

私はその後で動作するようにいくつかのランダムなデータを生成します。

set.seed(2) 
age <- round(exp(rnorm(5000, mean = 2.37, sd = 0.78) - 1)) 
claim <- rpois(5000, lambda = 0.07 

私は簡単に私の回帰のためoptimを使用することができます。ここでintercept唯一のモデルは次のとおりです。ここで

z1 <- model.matrix(claim ~ 1) 
optim(par = 0, fn = LL, z = z1, x = claim) 

intercept + ageモデルです:異なる多数のモデルを評価することができ

z2 <- model.matrix(claim ~ age) 
optim(par = c(0, 0), fn = LL, z = z2, x = claim) 

方法は1つがちょうどモデル行列を指定する必要があり、非常に簡単です。 bbmleパッケージのmle2機能を使用するにはどうすればいいですか?

私はそれを行うことができ、betaは、一次元の場合:

mle2(minuslogl = function(beta){ LL(beta = beta, z = z1, x = claim) }, 
    start = list(beta = 0)) 

しかしbetaがベクトルであれば、その後、私は問題に実行:

mle2(
    minuslogl = function(beta){ LL(beta = beta, z = z2, x = claim) }, 
    start = list(beta = c(0, 0)), 
    vecpar = T, 
    parnames = colnames(z2) 
) 

私は、構文の権利を得ることができないとドキュメンテーションやビネットで例を見つけることができません。問題は確かにbetaがベクターになりました。ドキュメントには、vecpar = T引数を使用することが、「optimとの互換性」の方法であることが示唆されています。任意のヒントをいただければ幸いです。

また、私はoptimにそうしているようmle2に、よりエレガントな方法で私の対数尤度関数でzx引数を渡す方法はありますか?

答えて

1

私は主な問題は、startをアトミックベクター(リストではない)として提供する必要があると思います。

library(bbmle) 
LL2 <- function(beta) { 
    LL(beta, z = z2, x = claim) 
} 
parnames(LL2) <- colnames(z2) 
mle2(
    minuslogl = LL2 , 
    start = setNames(c(0,0),colnames(z2)), 
    vecpar = TRUE 
) 

それはあなたが式のインターフェースとparameters引数でbbmleにはるかに容易ポアソン回帰のようなものを実装することができることを知っているのを助けるかもしれない:

mle2(claim~dpois(exp(loglambda)),  ## use log link/exp inverse-link 
    data=data.frame(claim,age),  ## need to specify as data frame 
    parameters=list(loglambda~age), ## linear model for loglambda 
    start=list(loglambda=0))   ## start values for *intercept* 
+0

はお返事、ベンいただきありがとうございます!これは素晴らしいことであり、私の問題を解決するので、実際の対数尤度で実装できるはずです。乾杯! –

関連する問題