Линии падения от фактических к смотровым точкам в R

StackOverflow https://stackoverflow.com/questions/3737165

  •  03-10-2019
  •  | 
  •  

Вопрос

Вчера я Работал пример Разница между простыми квадратами (OLS) против основных компонентов Анализ компонентов (PCA). Для этого иллюстрации я хотел показать ошибки, минимизируемые OLS и PCA, поэтому я наносил фактические, прогнозируемую линию, а затем я вручную (с GIMP) нарисовал в линию капли, чтобы проиллюстрировать пару терминов ошибок. Как я могу кодировать создание строк ошибок в R? Вот код, который я использовал для моего примера:

set.seed(2)
x <- 1:100

y <- 20 + 3 * x
e <- rnorm(100, 0, 60)
y <- 20 + 3 * x + e

plot(x,y)
yx.lm <- lm(y ~ x)
lines(x, predict(yx.lm), col="red")

Затем я вручную добавил желтые линии, чтобы произвести следующее:

alt text

Это было полезно?

Решение

?segments

Я бы предоставил пример, но я сегодня очень занят, и это не так сложно выбрать очки. ;-)

Хорошо, так что я не это занятый...

n=58; segments(x[n],y[n],x[n],predict(yx.lm)[n])
n=65; segments(x[n],y[n],x[n],predict(yx.lm)[n])

Другие советы

Как упомянул Джошуа, segments() это путь, чтобы пойти сюда. И как оно полностью вектор, мы можем добавить во всех ошибках одновременно, следуя от вашего примера

set.seed(2)
x <- 1:100

y <- 20 + 3 * x
e <- rnorm(100, 0, 60)
y <- 20 + 3 * x + e

plot(x,y)
yx.lm <- lm(y ~ x)
lines(x, predict(yx.lm), col="red")
## Add segments
segments(x, y, x, fitted(yx.lm), col = "blue")

Если вы хотите выделить пару ошибок, то для модификации пример Joshua дал:

n <- c(58,65)
segments(x[n], y[n], x[n], fitted(yx.lm)[n], col = "orange", lwd = 3)

Емкость

грамм

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top