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

Я работал над моделями смешанных эффектов в S и S-Plus Пинхьеро и Бейтсом и обнаружил множество проблем с работой моделей в книге.

последним является использование функции постоянного плюс степени для моделирования гетероскедастической внутригрупповой ошибки в наборе данных Theo, (с.393).Ошибка возникает в конце упражнения по построению модели.Первые три модели работают в R, но последняя не

library(nlme)
fm1Theo.nlme <- nlme( model = conc ~ SSfol(Dose, Time, lKe, lKa, lCl), 
                      data = Theoph,
                      fixed = lKe + lKa + lCl ~ 1,
                      random = lKe + lKa + lCl ~ 1)
fm2Theo.nlme <- update(fm1Theo.nlme, random = pdDiag(list(lKe ~ 1, lKa ~ 1, lCl ~ 1)))
fm3Theo.nlme <- update(fm2Theo.nlme, random = pdDiag(list(lKa ~ 1, lCl ~ 1)))
fm4Theo.nlme <- update(fm3Theo.nlme, weights = varConstPower(power=0.1))

... с сообщением об ошибке

Error in eigen(val, only.values = TRUE) : 
  infinite or missing values in 'x'
In addition: Warning messages:
1: In nlminb(c(coef(nlmeSt)), function(nlmePars) -logLik(nlmeSt, nlmePars),  :
  NA/NaN function evaluation
2: In nlminb(c(coef(nlmeSt)), function(nlmePars) -logLik(nlmeSt, nlmePars),  :
  NA/NaN function evaluation
3: In nlminb(c(coef(nlmeSt)), function(nlmePars) -logLik(nlmeSt, nlmePars),  :
  NA/NaN function evaluation
4: In nlminb(c(coef(nlmeSt)), function(nlmePars) -logLik(nlmeSt, nlmePars),  :
  NA/NaN function evaluation

Может кто-нибудь пролить свет на это сообщение, и как я могузаставить это работать?

1 Ответ

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

Похоже, что то, что должно быть положительным, стало отрицательным во время оптимизации: такие функции, как sqrt и log при применении к отрицательным числам, возвращают NaN.Не копаясь глубже, я попытался изучить модель отклонений, которая должна возвращать положительные значения.Установка более высокого начального значения для const решает проблему:

fm4Theo.nlme <- update(fm3Theo.nlme, weights = varConstPower(const = 0.5, power = 0.1))
...