【问题标题】:How can I plot the residuals of lm() with ggplot?如何用 ggplot 绘制 lm() 的残差?
【发布时间】:2016-08-12 09:04:06
【问题描述】:

我想要一个关于我从 lm() 模型中得到的残差的漂亮图。目前我使用plot(model$residuals),但我想要更好的东西。如果我尝试用 ggplot 绘制它,我会收到错误消息:

ggplot2 不知道如何处理 numeric 类的数据

【问题讨论】:

    标签: r ggplot2 lm


    【解决方案1】:

    ggplot 想要一个 data.frame。 fortify 会给你做一个。

    y <-rnorm(10)
    x <-1:10
    mod <- lm(y ~ x)
    modf <- fortify(mod)
    ggplot(modf, aes(x = .fitted, y = .resid)) + geom_point()
    

    【讨论】:

    • 你也可以直接传mod
    • 最新选项是使用broom::tidy()
    【解决方案2】:

    不再推荐使用 Fortify,根据 Hadley 的说法可能已弃用。

    你可以使用 broom 包做类似的事情(更好):

    library(broom)
    y <-rnorm(10)
    x <-1:10
    mod <- lm(y ~ x)
    df <- augment(mod)
    ggplot(df, aes(x = .fitted, y = .resid)) + geom_point()
    

    【讨论】:

    • 这里不需要或至少不再需要增强功能。以下产生相同的结果。 mod &lt;- lm(y ~ x)ggplot(mod, aes(x = .fitted, y = .resid)) + geom_point()
    【解决方案3】:

    ggfortify::autoplot() 用于回归诊断图的gg 版本。看到这个vignette


    示例

    fit <- lm(mpg ~ hp, data = mtcars)
    
    library(ggfortify)
    autoplot(fit)
    

    【讨论】:

      【解决方案4】:

      现在您可以使用为在 CRAN 上创建 ggplot 类型残差图而开发的 ggResidpanel 包。你可以找到入门教程here

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-06-08
        • 1970-01-01
        • 1970-01-01
        • 2020-09-02
        • 2019-01-17
        • 2020-12-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多