【问题标题】:How to plot multiple LME residual plots in one device如何在一台设备中绘制多个 LME 残差图
【发布时间】:2015-03-18 11:54:21
【问题描述】:

我正在尝试绘制多个诊断 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)

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

【问题讨论】:

    标签: r plot ggplot2


    【解决方案1】:

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

    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)
    

    您可以指定行数和列数等

    【讨论】:

    • 谢谢本。为什么建议在代码中使用残差的绝对值?它不会阻止我们检测残差的不对称性吗?
    • 我在某种程度上模仿了plot.lm() 的行为。 sqrt(abs(residuals)) 与拟合的图称为 scale-location 图,并针对检测异方差性进行了优化...
    【解决方案2】:

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

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

    【讨论】:

    • autoplot() 不接受 lm 和 lme 类型的对象,我刚试了一下。
    猜你喜欢
    • 2013-07-17
    • 1970-01-01
    • 2020-12-02
    • 1970-01-01
    • 2021-01-12
    • 2016-08-12
    • 1970-01-01
    • 1970-01-01
    • 2020-09-02
    相关资源
    最近更新 更多