Je travaillais dans les packages R nlme et lme4 , essayant de spécifier les modèles avec plusieurs effets aléatoires. J'ai trouvé que seul nlme permet de spécifier la structure hétérogène de la variance. Par conséquent, j'ai obtenu un modèle, où la température (Y) dépend du temps (en heures), l'ordonnée à l'origine varie selon la date et l'année, et la variance varie également selon l'année:
fit1 <- lme(Y ~ time, random=~1|year/date, data=X, weights=varIdent(form=~1|year))
Cependant, si j'ai besoin d'ajouter un autre terme aléatoire (le temps variant selon la date) et de spécifier le modèle comme ceci:
fit2 <- lme(Y ~ time, random=list(~1|year, ~time-1|date, ~1|date), data=X,
weights=varIdent(form=~1|year))
les effets aléatoires s'emboîtent les uns dans les autres: date dans l'année; puis date en date et en année.
J'ai aussi essayé
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))
mais cela donne une erreur:
Error in pdConstruct.pdBlocked(object, form = form, nam = nam, data = data, :
cannot have duplicated column names in a "pdMat" object
Je comprends qu'il y a déjà eu beaucoup de questions liées au même problème, mais je n'ai vraiment pas trouvé la réponse à mon cas. Pourriez-vous m'aider avec la bonne spécification du modèle?