一般化非線形最小二乗回帰(nlme)の対数尤度を「手で」計算する
私は、機能のための最小二乗非線形回帰、一般化のための対数尤度を計算しようとしているf(x)=β1(1+xβ2)β3f(x)=β1(1+xβ2)β3f(x)=\frac{\beta_1}{(1+\frac x\beta_2)^{\beta_3}}によって最適化されたgnlsRパッケージの機能をnlme(ブラウン運動と仮定AA系統樹上の距離によって生成された分散共分散行列使用して、corBrownian(phy=tree)からape)パッケージ。次の再現可能なRコードは、x、yデータと9タクサを持つランダムツリーを使用してgnlsモデルに適合します。 require(ape) require(nlme) require(expm) tree <- rtree(9) x <- c(0,14.51,32.9,44.41,86.18,136.28,178.21,262.3,521.94) y <- c(100,93.69,82.09,62.24,32.71,48.4,35.98,15.73,9.71) data <- data.frame(x,y,row.names=tree$tip.label) model <- y~beta1/((1+(x/beta2))^beta3) f=function(beta,x) beta[1]/((1+(x/beta[2]))^beta[3]) start <- c(beta1=103.651004,beta2=119.55067,beta3=1.370105) correlation <- corBrownian(phy=tree) fit <- gnls(model=model,data=data,start=start,correlation=correlation) logLik(fit) logLikから得られた推定パラメータに基づいて、対数尤度を「手で」(Rで、ただし関数を使用せずに)計算したいgnlsので、からの出力と一致しますlogLik(fit)。注:パラメーターを推定しようとはしていません。gnls関数によって推定されたパラメータの対数尤度を計算したいだけです(誰かがパラメータなしgnlsでパラメータを推定する方法の再現可能な例を持っているなら、私はそれを見ることに非常に興味があるでしょう!)。 Rでこれをどのように実行するかはよくわかりません。SとS-Plusの混合効果モデル(PinheiroとBates)で説明されている線形代数表記法は頭の上のもので、私の試みはどれも一致していませんlogLik(fit)。PinheiroとBatesが説明する詳細は次のとおりです。 一般化された非線形最小二乗モデルの対数尤度 ここで、 φ I = A I β次のように計算されます。yi=fi(ϕi,vi)+ϵiyi=fi(ϕi,vi)+ϵiy_i=f_i(\phi_i,v_i)+\epsilon_iϕi=Aiβϕi=Aiβ\phi_i=A_i\beta l(β,σ2,δ|y)=−12{Nlog(2πσ2)+∑i=1M[||y∗i−f∗i(β)||2σ2+log|Λi|]}l(β,σ2,δ|y)=−12{Nlog(2πσ2)+∑i=1M[||yi∗−fi∗(β)||2σ2+log|Λi|]}l(\beta,\sigma^2,\delta|y)=-\frac 12 \Bigl\{ N\log(2\pi\sigma^2)+\sum\limits_{i=1}^M{\Bigl[\frac{||y_i^*-f_i^*(\beta)||^2}{\sigma^2}+\log|\Lambda_i|\Bigl]\Bigl\}} ここで、は観測値の数、f ∗ i(β )= …