[英]using ggplot2 to plot mixed effects model
下面的代碼繪制了混合效應模型中的隨機效應:
mtcarsSub <- mtcars[,c("wt", "drat", "cyl")]
library(lme4)
mtcarsME <- lmer(drat ~ (1|cyl) + wt, data=mtcarsSub)
mtcarsSub$fixed.effect <- predict(mtcarsME)
library(plyr)
l_ply(list(4, 6, 8), function(x) mtcarsSub[[ paste0("random.effect.cyl", x) ]] <<- mtcarsSub$fixed.effect + ranef(mtcarsME)$cyl[as.character(x),])
library(ggplot2)
ggplot(mtcarsSub, aes(wt, drat, color=factor(cyl))) +
geom_point() +
geom_line(aes(wt, fixed.effect), color="black", size=2) +
geom_line(aes(wt, random.effect.cyl4), size=2) +
geom_line(aes(wt, random.effect.cyl6), size=2) +
geom_line(aes(wt, random.effect.cyl8), size=2)
如何以編程方式使每條隨機效果線的顏色與為cyl
顯示的顏色相同? 因此, cyl
4級的隨機效果線應為紅色, cyl
6級應為綠色, cyl
8級應為藍色。 我不想在geom_line()
指定color="red"
等。
我建議為隨機效果制作新的數據框。 為此,我使用函數ldply()
和您制作的用於計算每個級別的隨機效果的函數。 此外,在此新數據框中添加了列wt
和cyl
。 wt
將包含針對每個級別重復的mtcarsSub
數據幀中的所有wt
值。 cyl
將包含值4、6和8。
mt.rand<-ldply(list(4,6,8), function(x) data.frame(
wt=mtcarsSub$wt,
cyl=x,
rand=mtcarsSub$fixed.effect + ranef(mtcarsME)$cyl[as.character(x),]))
現在進行繪圖,在一個geom_line()
調用中使用新的數據框。 作為新的數據幀還具有cyl
欄將被分配的顏色作為分。
ggplot(mtcarsSub, aes(wt, drat, color=factor(cyl))) +
geom_point() +
geom_line(aes(wt, fixed.effect), color="black", size=2)+
geom_line(data=mt.rand,aes(wt,rand),size=2)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.