我試圖將沒有成功的nlme
對象的結果可視化。當我使用lmer
對象時,會創建正確的繪圖。我的目標是使用nlme
並通過ggplot2
可視化每個人的擬合增長曲線。 predict()
函數似乎與nlme
和lmer
對象的工作方式不同。使用nlme/ggplot2 vs lme4/ggplot2可視化多級增長模型
型號:
#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
謝謝你回覆@Niek。我嘗試使用'fitted()',但是它爲每個人返回相同的擬合值。我更新了我的問題。謝謝! –
你有一個可重複的例子嗎?沒有你的數據我不能看一看。嘗試用隨機生成的數據或公共數據集重現問題。 –