如何在一个设备中绘制多个LME残差图

时间:2015-03-18 11:54:21

标签: r plot ggplot2

我正在尝试绘制多个诊断LME图,显示标准化残差与一个设备中的拟合值。 我尝试了通常的par(mfrow = c(2,2))但是用plot(lme)命令绘制LME残差不起作用,因为使用了完整的设备。

我想使用ggplot2中的facet_wrap或facet_grid,但它不知道如何自动处理模型和绘制残差。

以下是一些测试代码:

par(mfrow=c(2,2))
treatment=factor(c(rep("a",4),rep("b",4),rep("c",4)))
response=rnorm(12,2,1)
explanatory=rnorm(12,4,1)
test.lme=lme(response~explanatory,random=~1|treatment)
test.lm=lm(response~explanatory)
plot(test.lme)

进行比较:

par(mfrow=c(2,2))
plot(response~explanatory)
plot(test.lm)

工作正常。 我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:0)

您可以使用grid()包中的内容来设置视口等,但最简单的方法是使用grid.arrange()包中的gridExtra函数:

library('nlme')
set.seed(101)
treatment <- factor(c(rep("a",4),rep("b",4),rep("c",4)))
response <- rnorm(12,2,1)
explanatory <- rnorm(12,4,1)
test.lme <- lme(response~explanatory,random=~1|treatment)
library('gridExtra')
p1 <- plot(test.lme)
p2 <- plot(form=sqrt(abs(resid(.)))~fitted(.),test.lme)
grid.arrange(p1,p2)

您可以指定行数和列数等。

答案 1 :(得分:0)

现在有一个函数ggplot :: autoplot()可以接受模型对象并在构面中绘制所有四个诊断。

编辑:糟糕,它实际上位于ggfortify包中,并且在加载时显然掩盖了ggplot2::autoplot(),这就是为什么我认为它位于ggplot2中。