library(nlme)
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),
verbose = TRUE)
**Iteration 1
LME step: Loglik: -312.2787, nlminb iterations: 23
reStruct parameters:
Seed
10.41021
Error in nlme.formula(height ~ SSasymp(age, Asym, R0, lrc), data = Loblolly, :
Singularity in backsolve at level 0, block 1
我试图通过查看粗麻布来调查为什么某些
nlme
模型无法成功拟合的原因。有办法以某种方式提取此矩阵吗?我还正在研究
fdHess
函数(也来自同一pacakge),该函数“使用有限差分评估标量函数的近似Hessian和梯度”是否等同于函数nlme
中当前实现的功能? 最佳答案
我相信您的问题是由于起点选择不当造成的。向量c(Asym = 103, R0 = -8.5, lrc = -3.3)
收敛而没有任何复杂性:
nlme(height ~ SSasymp(age, Asym, R0, lrc),
data = Loblolly,
fixed = Asym + R0 + lrc ~ 1,
random = Asym ~ 1,
start = c(Asym = 103, R0 = -8.5, lrc = -3.3))
#> Nonlinear mixed-effects model fit by maximum likelihood
#> Model: height ~ SSasymp(age, Asym, R0, lrc)
#> Data: Loblolly
#> Log-likelihood: -114.7428
#> Fixed: Asym + R0 + lrc ~ 1
#> Asym R0 lrc
#> 101.449600 -8.627331 -3.233751
#>
#> Random effects:
#> Formula: Asym ~ 1 | Seed
#> Asym Residual
#> StdDev: 3.650642 0.7188625
#>
#> Number of Observations: 84
#> Number of Groups: 14
归根结底,模型拟合可以理解为优化问题。当您的模型是非线性的(例如混合效果模型)时,必须使用迭代优化算法解决该问题。因此,起始值的选择可能非常关键。这是一篇讨论该主题的不错的科学文章:
E.Balsa-Canto,A.Alonso &Banga,J.R.对生化网络进行动态建模的迭代识别程序。 BMC Syst Biol 4,11(2010)doi:10.1186 / 1752-0509-4-11