Как я могу наложить модифицированные лессовые линии на qplot ggplot2? - PullRequest
9 голосов
/ 28 марта 2010

Фон

Прямо сейчас я создаю линейную модель с несколькими предикторами и создаю диагностические графики для оценки предположений регрессии. (Сейчас мне нравится класс статистики множественного регрессионного анализа: -)

В моем учебнике (Cohen, Cohen, West, Aiken 2003) рекомендуется составить график каждого предиктора относительно остатков, чтобы убедиться, что:

  1. Остатки систематически не коваризуются с предиктором
  2. Остатки гомоскедастичны по отношению к каждому предиктору в модели

По пункту (2) в моем учебнике сказано следующее:

Некоторые статистические пакеты позволяют аналитику строить линии подгонки малости по среднему значению остатков (0-линия), 1 стандартное отклонение выше среднего и 1 стандартное отклонение ниже среднего остатков .... В настоящем case {их пример}, две линии {mean + 1sd и mean - 1sd} остаются примерно параллельными линии lowess {0}, что согласуется с интерпретацией, согласно которой дисперсия невязок не изменяется как функция X. 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

Но кто-нибудь знает, как я могу использовать ggplot2 и qplot для генерации графиков, где будут наложены линии 0, "mean + 1sd" И "mean - 1sd"? Это странный / сложный вопрос?

Ответы [ 3 ]

4 голосов
/ 30 марта 2010

Апология

Ребята, я хочу извиниться за свое невежество. Хэдли абсолютно права, и ответ всегда был прямо передо мной. Как я и подозревал, мой вопрос был рожден скорее из статистического, чем из-за программного незнания.

Мы получаем 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 голос
/ 29 марта 2010

Посмотрите на мой вопрос " изменить функцию lm или loess .. "

Я не уверен, что очень хорошо следил за вашим вопросом, но может быть:

+ stat_smooth(method=yourfunction)

будет работать при условии, что вы определите свою функцию как , описанную здесь .

1 голос
/ 28 марта 2010

Не могли бы вы рассчитать значения стандартного отклонения +/- из данных и добавить их кривую на график?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...