【发布时间】:2017-11-28 19:38:09
【问题描述】:
数据来自here
library(nlme)
dat0 <- read.table("aids.dat2",head=T)
dat1 <- dat0[dat0$day<=90, ] # use only first 90-day data
dat2 <- dat1[!apply(is.na(dat1),1,any),] # remove missing data
# Next, let's treat the data as longitudinal (or grouped) data
aids.dat <- groupedData(lgcopy ~ day | patid, data=dat2)
# A NLME model fit, with random effects on all 4 parameters
start <- c(10,0.5,6,0.005) # starting value
aids.dat$log10copy = log10(aids.dat$lgcopy)
nlme.fit <- nlme(log10copy ~ exp(p1-b1*day) + exp(p2-b2*day + 1),
fixed = list(p1 ~ 1, b1 ~ 1, p2 ~ 1, b2 ~ 1),
random = list(patid = pdDiag(list(p1 ~ 1, b1 ~ 1, p2 ~ 1, b2 ~ 1))),
data =aids.dat, start=c(start))
summary(nlme.fit)
在这里,我使用 nlme 包中的 nlme 拟合了一个非线性混合效应模型。该模型有 4 个固定效应和 4 个随机效应。我在方差-协方差矩阵上指定了一个对角结构,每个patid组成一个组。
library(lme4)
deriv_mod <- deriv( ~ exp(p1 - b1*t) + exp(p2 - b2*t + 1),
c("p1", "b1", "p2", "b2"), function(t, p1, b1, p2, b2){})
nlmer.fit <- nlmer(deriv_mod ~ list(p1 ~ 1, b1 ~ 1, p2 ~ 1, b2 ~ 1) +
list(p1 ~ 1, b1 ~ 1, p2 ~ 1, b2 ~ 1), data = aids.dat, start = c(start))
在这里,我想使用lme4 包来拟合相同的模型。从文档看来,nlmer 的formula 似乎也必须有一个渐变组件,因此我首先使用了deriv 函数。但是,我不确定如何指定其余参数?
deriv_mod ~ list(p1 ~ 1, b1 ~ 1, p2 ~ 1, b2 ~ 1) +
list(p1 ~ 1, b1 ~ 1, p2 ~ 1, b2 ~ 1)
是指定4个固定效果(在第一个列表对象中)及其对应的4个随机效果(在第二个列表对象中)。但是,我不太确定如何指定对角方差-协方差结构并确保观察按patid 分组,就像我在random = list(patid = pdDiag(list(p1 ~ 1, b1 ~ 1, p2 ~ 1, b2 ~ 1))) 和nlme 中指定的那样。
【问题讨论】:
-
lme4没有像nlme那样在方差-协方差结构上提供足够的灵活性...您的 RE 是交叉分类的、嵌套的等吗?请您提供更多详细信息吗? -
RE 既不交叉分类也不嵌套。由于我在方差协方差矩阵上指定了对角线结构,因此假设它们彼此独立。
标签: r lme4 mixed-models nlme