在 lme 中指定多个(单独的)随机效应

机器算法验证 r 随机效应模型 lme4-nlme
2022-02-15 05:20:39

我在 R 包nlmelme4中工作,试图指定具有多个随机效应的模型。我发现,只有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

我知道已经有很多与类似问题相关的问题,但我真的没有找到我的案例的答案。你能帮我确定模型的正确规格吗?

1个回答

经过多次努力,我找到了解决问题的方法,我将其发布在这里,以防有人有类似的问题:

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