Задание нескольких (отдельных) случайных эффектов в lme [closed]

25

Я работал в R-пакетах nlme и lme4 , пытаясь указать модели с несколькими случайными эффектами. Я обнаружил, что только nlme позволяет указать неоднородную структуру дисперсии. Таким образом, я получил модель, в которой температура (Y) зависит от времени (в часах), перехват зависит от даты и года, а дисперсия также зависит от года:

fit1 <- lme(Y ~ time, random=~1|year/date, data=X, weights=varIdent(form=~1|year))

Однако, если мне нужно добавить еще один случайный термин (время варьируется в зависимости от даты) и указать модель следующим образом:

fit2 <- lme(Y ~ time, random=list(~1|year, ~time-1|date,  ~1|date), data=X, 
            weights=varIdent(form=~1|year))

случайные эффекты вкладываются друг в друга: дата в году; а затем дата в дате и в году.

Я тоже пробовал

one  <- rep(1, length(Y))
fit3 <- lme(Y ~ time, random=list(one=pdBlocked(list(pdSymm(~1|year/date), 
            pdSymm(~time-1|year)))), data=X, weights=varIdent(form=~1|year))

но это дает ошибку:

Error in pdConstruct.pdBlocked(object, form = form, nam = nam, data = data,  :
  cannot have duplicated column names in a "pdMat" object

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

Slava
источник

Ответы:

30

После многих трудностей я нашел решение своей проблемы, которое я публикую здесь на случай, если у кого-то возникнут похожие вопросы:

fit <- lme(Y ~ time, random=list(year=~1, date=~time), data=X, weights=varIdent(form=~1|year))
Slava
источник