如何在ggplot2 qplot上叠加修改过的黄土线?

时间:2010-03-28 00:02:00

标签: r statistics ggplot2

背景

目前,我正在创建一个多预测线性模型,并生成诊断图以评估回归假设。 (这是我目前喜欢的多元回归分析统计课程: - )

我的教科书(Cohen,Cohen,West和Aiken 2003)建议根据残差绘制每个预测因子,以确保:

  1. 残差与预测者没有系统地共存
  2. 相对于模型中的每个预测变量,残差是同方差的
  3. 关于第(2)点,我的教科书有这样说:

      

    一些统计软件包允许分析人员在残差平均值(0线),低于均值的1个标准差和低于残差平均值的1个标准差的情况下绘制低值拟合线....目前case {他们的例子},两行{mean + 1sd和mean - 1sd}大致平行于lowess {0}行,与残差的方差不随X的函数变化的解释一致。(p .131)

    如何修改黄土线?

    我知道如何使用“0行”生成散点图:

        # First, I'll make a simple linear model and get its diagnostic stats
        library(ggplot2)
        data(cars)
        mod <- fortify(lm(speed ~ dist, data = cars))
        attach(mod)
        str(mod)
    
        # Now I want to make sure the residuals are homoscedastic
        qplot (x = dist, y = .resid, data = mod) + 
        geom_smooth(se = FALSE) # "se = FALSE" Removes the standard error bands
    

    但是有没有人知道我如何使用ggplot2qplot来生成0线,“平均值+ 1sd”和“平均值 - 1sd”线会叠加的情节?这是一个奇怪/复杂的问题吗?

3 个答案:

答案 0 :(得分:4)

道歉

伙计们,我想为我的无知道歉。哈德利是绝对正确的,答案就在我面前。我怀疑,我的问题源于统计,而不是程序化的无知。

我们获得免费的68%置信区间

geom_smooth()默认为loess平滑,它会叠加+ 1sd和-1sd行作为交易的一部分。这就是哈德利所说的“这不仅仅是68%的置信区间吗?”我完全忘记了68%的间隔,并一直在寻找我已经知道该怎么做的东西。通过指定geom_smooth(se = FALSE),我实际上在代码中将置信区间关闭没有帮助。

我的示例代码应该看起来像

# First, I'll make a simple linear model and get its diagnostic stats.
library(ggplot2)
data(cars)
mod <- fortify(lm(speed ~ dist, data = cars))
attach(mod)
str(mod)

# Now I want to make sure the residuals are homoscedastic.
# By default, geom_smooth is loess and includes the 68% standard error bands.
qplot (x = dist, y = .resid, data = mod) + 
geom_abline(slope = 0, intercept = 0) +
geom_smooth() 

我学到了什么

哈德利用一种非常美丽而简单的方式来获得我一直想要的东西。但是因为我专注于黄土线,我忽略了这样一个事实:68%的置信区间受到我需要的线条的限制。对不起,大家好。

答案 1 :(得分:1)

您能否根据数据计算+/-标准差值并将其拟合曲线添加到图中?

答案 2 :(得分:1)

查看我的问题“modify lm or loess function..

我不确定我是否非常关注你的问题,但也许是:

+ stat_smooth(method=yourfunction)
只要您将函数定义为described here

就可以。