Почему отличается наклон в geom_smooth в зависимости от порядка переменных в R? - PullRequest
0 голосов
/ 26 февраля 2019

Когда я строю свои данные в ggplot и добавляю линию регрессии, я получаю разные наклоны в зависимости от того, какая переменная определена как x и y.Я ожидал, что сюжеты просто зеркально отражены, но это не так.Я что-то упустил?

# create example data
v1 <- c(0.5, 0.8, 0.8, 0.8, 0.7, 0.9, 0.8, 0.7, 0.8, 0.7, 0.5, 0.6, 0.6, 0.6, 0.7,
    0.3, 0.5, 0.8, 0.9, 0.5, 0.8, 0.9, 0.8, 0.7, 0.6, 0.6, 0.8, 0.6, 0.4, 0.6)
v2 <- c(0.6, 0.9, 0.8, 0.8, 0.7, 0.8, 0.9, 0.3, 0.9, 0.7, 0.4, 0.7, 0.6, 0.7, 0.7,
    0.0, 0.5, 0.7, 0.7, 0.4, 0.8, 0.8, 0.8, 0.8, 0.7, 0.4, 0.8, 0.5, 0.6, 0.6)
test1 <- data.frame(cbind(v1,v2))


# plot once with v1 as x and v2 as y and visa versa
ggplot(test1, aes(x=v1, y=v2)) +
  geom_point() +
  geom_smooth(data= test1, method=lm,aes(x=v1, y=v2))  + 
  xlim(c(0,1))+ylim(c(0,1)) +
  geom_abline(col = "black")

v1 vs v2

ggplot(test1, aes(x=v2, y=v1)) +
  geom_point() +
  geom_smooth(data= test1, method=lm,aes(x=v2, y=v1))  +
  xlim(c(0,1))+ylim(c(0,1)) + 
  geom_abline(col = "black")

v2 vs v1

1 Ответ

0 голосов
/ 26 февраля 2019

Краткий ответ

Когда вы вызываете geom_smooth(), он вычисляет наклон простой линейной регрессии (или регрессии OLS) в форме y = a + bx.

OLS - это попытка придумать лучший прогноз переменной y, учитывая значения переменной x.Это иная цель, чем попытка найти лучшее предсказание для переменной x при заданных значениях переменной y.

Следовательно, если вы измените порядок с aes(x = v1, y = v2) на aes(x = v2, y = v1), вы используете geom_smooth() для достижения двух разных целей.

Иллюстрация

Представьте, что у вас есть следующий набор данных:

enter image description here

Когда вы запускаете регрессию OLS y ~ x, вы получаете следующую модель

y = 0.167 + 1.5*x

. Она оптимизирует прогнозы y, делая следующие прогнозы, которые имеютсвязанные ошибки:

enter image description here

Прогнозы регрессии OLS являются оптимальными в том смысле, что сумма значений в крайнем правом столбце (т. е. сумма квадратов)настолько малы, насколько это возможно.

Когда вы запускаете регрессию OLS x ~ y, вы получаете другую модель:

x = -0.07 + 0.64*y

Это оптимизирует предсказания x, выполняя следующие действияпрогнозы с соответствующими ошибками.

enter image description here

Опять же, это оптимально в том смысле, что сумма значений в крайнем правом столбце настолько мала, насколько это возможно (равно 0.071).

Теперь представьте, что вы пытались просто инвертировать первую модель, y = 0.167 + 1.5*x, используя алгебру, давая вам модель x = -0.11 + 0.67*x.

Это даст вам следующие прогнозы и связанные с ними ошибки:

enter image description here

Сумма значений в крайнем правом столбце равна 0.074, что больше, чем соответствующая сумма из модели, полученной при регрессии x на y, т.е.модель x ~ y.Другими словами, «перевернутая» модель работает хуже, чем простая x ~ y регрессионная модель.

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