Внесите эти изменения:
- при создании модели используйте
na.action = na.exclude
- используйте методы формул для
plot
и lines
- use
fitted(model.2)
в качестве прогнозируемых значений - сортировка не требуется, поскольку
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)
В любом случае мы получим следующий вывод:
Добавлено
Основываясь на разъяснениях в комментариях, мы могли бы сделать это (или, если вы хотите еще более широкий диапазон, попробуйте ylim = extendrange(pred, f = .10)
расширить диапазон на 10%, скажем, с любой стороны).
pred <- predict(model.3, df)
plot(Y ~ X, df, ylim = range(pred))
lines(pred ~ X, df)
подача: