Określanie wielu (oddzielnych) losowych efektów w lme [zamknięte]

25

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?

Slava
źródło

Odpowiedzi:

30

Po wielu zmaganiach znalazłem rozwiązanie mojego problemu, który zamieszczam tutaj na wypadek, gdyby ktoś miał podobne pytania:

fit <- lme(Y ~ time, random=list(year=~1, date=~time), data=X, weights=varIdent(form=~1|year))
Slava
źródło