Pracowałem w pakietach R nlme i lme4 , próbując określić modele z wieloma losowymi efektami. Odkryłem, że tylko nlme pozwala na określenie heterogenicznej struktury wariancji. Dlatego mam model, w którym temperatura (Y) zależy od czasu (w godzinach), przechwytywanie zmienia się w zależności od daty i roku, a wariancja zmienia się również w zależności od roku:
fit1 <- lme(Y ~ time, random=~1|year/date, data=X, weights=varIdent(form=~1|year))
Jeśli jednak muszę dodać kolejny losowy termin (czas różni się w zależności od daty) i określić model w ten sposób:
fit2 <- lme(Y ~ time, random=list(~1|year, ~time-1|date, ~1|date), data=X,
weights=varIdent(form=~1|year))
losowe efekty zagnieżdżają się w sobie: data w roku; a następnie data w dacie i roku.
Też próbowałem
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))
ale daje błąd:
Error in pdConstruct.pdBlocked(object, form = form, nam = nam, data = data, :
cannot have duplicated column names in a "pdMat" object
Rozumiem, że było już wiele pytań związanych z podobnym problemem, ale tak naprawdę nie znalazłem odpowiedzi w mojej sprawie. Czy możesz mi pomóc z właściwą specyfikacją modelu?
źródło