Диагностика линейной модели: линия сглаживания, полученная в ggplot2, отличается от линии, полученной на базовом графике - PullRequest
0 голосов
/ 07 января 2019

Я пытаюсь воспроизвести диагностические графики для модели линейной регрессии, используя ggplot2. Линия сглаживания, которую я получаю, отличается от линии, полученной с использованием базовых графиков или ggplot2 :: autoplot.

library(survival)
library(ggplot2)
model <- lm(wt.loss ~ meal.cal, data=lung)
## Fitted vs. residuals using base plot:
plot(model, which=1)
## Fitted vs. residuals using ggplot
model.frame <- fortify(model)
ggplot(model.frame, aes(.fitted, .resid)) + geom_point() + geom_smooth(method="loess", se=FALSE)

Линия сглаживания отличается, влияние первых нескольких точек намного больше, используя метод лёсса, предоставляемый ggplot. Мой вопрос: как я могу воспроизвести линию сглаживания, полученную с помощью plot (), используя ggplot2?

1 Ответ

0 голосов
/ 10 января 2019

Вы можете рассчитать lowess, который используется для построения красной линии на исходном диагностическом графике, используя базовую функцию samename.

smoothed <- as.data.frame(with(model.frame, lowess(x = .fitted, y = .resid)))

ggplot(model.frame, aes(.fitted, .resid)) + 
  theme_bw() +
  geom_point(shape = 1, size = 2) + 
  geom_hline(yintercept = 0, linetype = "dotted", col = "grey") +
  geom_path(data = smoothed, aes(x = x, y = y), col = "red")

enter image description here

И оригинал:

enter image description here

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