Проблемы со сходимостью в нелинейной модели смешанных эффектов от Пинейро и Бейтса

Мои текущие проблемы (см. здесь и здесь), благодаря чему нелинейные модели смешанных эффектов в главе 8 книги Пинейро и Бейтса продолжают сходиться. На этот раз с набором данных Quinidine (стр. 385). И снова это повторяющееся упражнение по построению модели. У меня проблемы с третьей моделью в серии.

library(nlme)
fm1Quin.nlme <- nlme(conc ~ quinModel(Subject, time, conc, dose, interval, lV, lKa, lCl),
                     data = Quinidine, 
                     fixed = lV + lKa + lCl ~ 1,
                     random = pdDiag(lV + lCl ~ 1),
                     groups = ~ Subject,
                     start = list(fixed = c(5, -0.3, 2)),
                     na.action = na.pass, # R does not have the function na.include
                     naPattern = ~ !is.na(conc))
fm1Quin.fix <- fixef(fm1Quin.nlme)
fm2Quin.nlme <- update(fm1Quin.nlme, 
                       fixed = list(lCl ~ glyco, lKa + lV ~ 1),
                       start = c(fm1Quin.fix[3], 0, fm1Quin.fix[2:1]))
fm2Quin.fix <- fixef(fm2Quin.nlme)

Теперь о проблемной модели

fm3Quin.nlme <- update(fm2Quin.nlme,
                       fixed = list(lCl ~ glyco + Creatinine, lKa + lV ~ 1),
                       start = c(fm2Quin.fix[1:2], 0.2, fm2Quin.fix[3:4]),
                       control = nlmeControl(maxIter = 50))

Я попытался установить максимальное количество итераций выше в nlmeControl, но продолжаю получать похожие сообщения об ошибках.

Error in nlme.formula(model = conc ~ quinModel(Subject, time, conc, dose,  : 
  maximum number of iterations (maxIter = 50) reached without convergence
In addition: Warning messages:
1: In nlme.formula(model = conc ~ quinModel(Subject, time, conc, dose,  :
  Singular precision matrix in level -1, block 1
2: In nlme.formula(model = conc ~ quinModel(Subject, time, conc, dose,  :
  Singular precision matrix in level -1, block 1
3: In nlme.formula(model = conc ~ quinModel(Subject, time, conc, dose,  :
  Singular precision matrix in level -1, block 1
4: In nlme.formula(model = conc ~ quinModel(Subject, time, conc, dose,  :
  Singular precision matrix in level -1, block 1
5: In nlme.formula(model = conc ~ quinModel(Subject, time, conc, dose,  :
  Singular precision matrix in level -1, block 1
6: In nlme.formula(model = conc ~ quinModel(Subject, time, conc, dose,  :
  Singular precision matrix in level -1, block 1
7: In nlme.formula(model = conc ~ quinModel(Subject, time, conc, dose,  :
  Singular precision matrix in level -1, block 1

Кажется, что для сходимости этих нелинейных моделей в R требуется больше ловкости, чем для линейных моделей со смешанными эффектами. Любая помощь очень ценится.


person llewmills    schedule 26.12.2018    source источник
comment
fm1Quin.fix в настоящее время не определено.   -  person Julius Vainora    schedule 27.12.2018
comment
Извините, @Julius Vainora, я добавил это. До сих пор не получается сходиться.   -  person llewmills    schedule 27.12.2018


Ответы (1)


На этот раз мы можем добиться сходимости с помощью двух вещей: разных начальных значений и другого значения для pnlsTol:

fm3Quin.nlme <- update(fm2Quin.nlme,
                       fixed = list(lCl ~ glyco + Creatinine, lKa + lV ~ 1),
                       start = c(3.0291, -0.3631, 0.1503, -0.7458, 5.2893),
                       control = nlmeControl(pnlsTol = 0.0011))

Обратите внимание, что значение по умолчанию pnlsTol равно 0,001, так что изменение очень незначительное. Начальные значения на самом деле указаны в книге как оптимальное решение, так что это своего рода мошенничество. Однако fm3Quin.nlme сходится к немного другим значениям ... В этом случае я предполагаю, что функция очень нелинейна, а достигнутый оптимум очень близок к другим, гораздо большим значениям, отсюда и сложная сходимость. (Я предполагаю, что это из-за необходимости увеличить pnlsTol и указать хорошие начальные значения.)

person Julius Vainora    schedule 27.12.2018