Проблема сходимости в нелинейной модели смешанных эффектов от Пинейро и Бейтса - PullRequest
0 голосов
/ 27 декабря 2018

Мои текущие проблемы (см. здесь и здесь ), заставляющие модели нелинейных смешанных эффектов в Главе 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, требуется больше тонкости, чем с линейными моделями со смешанными эффектами.Любая помощь высоко ценится.

1 Ответ

0 голосов
/ 27 декабря 2018

На этот раз мы можем достичь конвергенции с помощью двух вещей: разных начальных значений и другого значения для 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 и указать хорошие начальные значения.)

...