私はここでまず最初に行うには、コントロールの外観を持つことであると思う:
nlmeControl()
# this gives in my case the following settings
$maxIter
[1] 50
$pnlsMaxIter
[1] 7
$msMaxIter
[1] 50
$minScale
[1] 0.001
$tolerance
[1] 1e-05
$niterEM
[1] 25
$pnlsTol
[1] 0.001
$msTol
[1] 1e-06
$returnObject
[1] FALSE
$msVerbose
[1] FALSE
$gradHess
[1] TRUE
$apVar
[1] TRUE
$.relStep
[1] 6.055454e-06
$minAbsParApVar
[1] 0.05
$opt
[1] "nlminb"
$natural
[1] TRUE
$sigma
[1] 0
私は任意のドキュメントを読んでいないが、あなたは、少なくとものよりよい手がかりを得るために、以下のことを実行することができ状況:これは、すべての反復のためにあなたの出力を印刷し
# using additional controls list argument
fm1 <- nlme(
height ~ SSasymp(age, Asym, R0, lrc),
data = Loblolly,
fixed = Asym + R0 + lrc ~ 1,
random = Asym ~ 1,
start = c(Asym = -10311111, R0 = 8.5^4, lrc = 0.01),
control = list(opt = "nlm", msVerbose = 2, msTol = 1e-06),
verbose = TRUE
)
、最終的には:
# ............
iteration = 9
Parameter:
[1] 7.180326
Function Value
[1] 379.1821
Gradient:
[1] -4.212256e-05
Relative gradient close to zero.
Current iterate is probably solution.
**Iteration 1
LME step: Loglik: -312.2787, nlm iterations: 9
reStruct parameters:
Seed
7.180326
Error in nlme.formula(height ~ SSasymp(age, Asym, R0, lrc), data = Loblolly, :
Singularity in backsolve at level 0, block 1
msTol
や他のコントロールも変更したいと思うかもしれません。 nlm
は、私は私が得ることを印刷する場合、あまりにもヘッセ行列を返すことができますことに注意してください:あなたは、私は、私の部分のために、私はnlme.formula
を編集していますし、呼び出された関数に私の新しいバージョンを割り当てる印刷ヘッセ行列を得た方法だろ場合
$hessian
[,1]
[1,] 8.478483e-05
godmode:::assignAnywhere("nlme.formula", nlme.formula_new)
godmode
はGithubの上ですが、確かにこれを達成するための他の方法があります。私は当時nlme
に差し込むnlme.formula_new
、