我正在尝试绘制多个诊断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)
工作正常。 我怎样才能做到这一点?
答案 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中。