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