【发布时间】:2017-04-13 01:23:09
【问题描述】:
我试图可视化 nlme 对象的结果但没有成功。当我使用lmer 对象执行此操作时,会创建正确的绘图。我的目标是使用nlme 并使用ggplot2 可视化每个人的拟合增长曲线。 predict() 函数似乎与 nlme 和 lmer 对象的工作方式不同。
型号:
#AR1 with REML
autoregressive <- lme(NPI ~ time,
data = data,
random = ~time|patient,
method = "REML",
na.action = "na.omit",
control = list(maxlter=5000, opt="optim"),
correlation = corAR1())
nlme可视化尝试:
data <- na.omit(data)
data$patient <- factor(data$patient,
levels = 1:23)
ggplot(data, aes(x=time, y=NPI, colour=factor(patient))) +
geom_point(size=1) +
#facet_wrap(~patient) +
geom_line(aes(y = predict(autoregressive,
level = 1)), size = 1)
当我使用时:
data$fit<-fitted(autoregressive, level = 1)
geom_line(aes(y = fitted(autoregressive), group = patient))
它为每个人返回相同的拟合值,因此 ggplot 为每个人生成相同的增长曲线。运行test <-data.frame(ranef(autoregressive, level=1)) 根据患者 ID 返回不同的截距和斜率。有趣的是,当我使用lmer 拟合模型并运行以下代码时,它会返回正确的图。 为什么predict() 与nlme 和lmer 对象的工作方式不同?
timeREML <- lmer(NPI ~ time + (time | patient),
data = data,
REML=T, na.action=na.omit)
ggplot(data, aes(x = time, y = NPI, colour = factor(patient))) +
geom_point(size=3) +
#facet_wrap(~patient) +
geom_line(aes(y = predict(timeREML)))
【问题讨论】:
-
“可视化模型估计的随机效应”是指绘制每个个体的拟合增长曲线吗?我认为您可以更改
geom_line(aes(y = fitted(autoregressive), group = id))或从添加data$fit<-fitted(autoregressive)开始 -
感谢您回复@Niek。我尝试使用
fitted(),但它为每个人返回相同的拟合值。我在上面更新了我的问题。谢谢! -
你有可重现的例子吗?没有你的数据,我无法查看。尝试使用随机生成的数据或公共数据集重现问题。