Нужна помощь: вложенные фиксированные эффекты в nlme () - PullRequest
0 голосов
/ 04 октября 2019

У меня есть два фиксированных эффекта в нелинейной модели смешанных эффектов. Один вложен в другой, как здесь: «Specie» вложен в «категорию».

library(nlme)
exp_decay <- function(a, b, x){
  return(a*exp(-b*x))
}

specie <- rep(c("A", "B", "C", "D", "E", "F"), each=6)
line <- paste(specie, rep(c(1,1,1,2,2,2), 6), sep="-")
category <- rep(c("Big", "Small"), each=18)
x <- rnorm(36, 0, 1)
y <- exp_decay(1, 0.2, x)
da <- data.frame(y,x,specie=as.factor(specie), category=as.factor(category), line=as.factor(line) )

a.nlme <- nlme(y~exp_decay(a, b, x), 
                data=da,  
                fixed=list(a~category+category:specie, b~category+category:specie), 
                random = list(line=pdDiag(a+b~1)), 
                start = c(1,rep(0,11),0.2,rep(0,11)),
                control = nlmeControl(pnlsTol = 0.001, msVerbose = TRUE))

Но nlme не удалось запустить. Выдает ошибку: «Ошибка в MEEM (объект, conLin, control $ niterEM): особенность в обратном разрешении на уровне 0, блок 1».

Я думаю, что сингулярность происходит от вложенного проекта. Поскольку «Specie» вложено в «category», «category: specie» не является полным рангом. Если мы используем «lm» для запуска линейной модели, она просто даст «NA» несуществующим комбинациям «category» и «specie».

Итак, как бороться с этим вложенным фиксированным эффектомв 'nlme'?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...