R - предсказанные переменные, не включенные в график линейной регрессии - PullRequest
0 голосов
/ 26 ноября 2018

Вот соответствующий фрагмент кода.Как получить предсказанные переменные для отображения на графике?

df <- data.frame(X = 2010:2022, Y = c(11539282, 11543332, 11546969, 11567845, 11593741, 11606027, 11622554, 11658609, rep(NA, 5)))

model.1 <- lm(formula = Y ~ X, data = df)
predict(object = model.1, newdata = df)
plot(X, Y, ylim=c(11500000,11750000))
lines(sort(X), fitted(model.1)[order(X)])

1 Ответ

0 голосов
/ 26 ноября 2018

Внесите эти изменения:

  1. при создании модели используйте na.action = na.exclude
  2. используйте методы формул для plot и lines
  3. use fitted(model.2) в качестве прогнозируемых значений
  4. сортировка не требуется, поскольку X уже отсортирован

с указанием этого кода:

model.2 <- lm(Y ~ X, df, na.action = na.exclude)
plot(Y ~ X, df)
lines(fitted(model.2) ~ X, df)

или используйте ablineв этом случае можно использовать этот более короткий код:

model.3 <- lm(Y ~ X, df)
plot(Y ~ X, df)
abline(model.3)

В любом случае мы получим следующий вывод:

screenshot

Добавлено

Основываясь на разъяснениях в комментариях, мы могли бы сделать это (или, если вы хотите еще более широкий диапазон, попробуйте ylim = extendrange(pred, f = .10) расширить диапазон на 10%, скажем, с любой стороны).

pred <- predict(model.3, df)
plot(Y ~ X, df, ylim = range(pred))
lines(pred ~ X, df)

подача:

screenshot

...