Spécification de plusieurs effets aléatoires (séparés) dans lme [fermé]

25

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?

Slava
la source

Réponses:

30

Après de nombreuses luttes, j'ai trouvé une solution à mon problème, que je poste ici au cas où quelqu'un aurait des questions similaires:

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