Можно ли использовать lm () для хранения других переменных в их среднем значении и построить линию регрессии на двумерном графике рассеяния? - PullRequest
0 голосов
/ 11 февраля 2020

Мне просто интересно, можно ли построить линию регрессии для определенной переменной из многомерной регрессии (используя lm()), удерживая при этом другие переменные в их среднем значении, и подогнать линию регрессии на двумерном графике рассеяния ? Есть функция с именем cplot() из пакета margins, которая сделает свое дело, но эта функция, похоже, не может включать точки данных на плоскости XY. Поэтому мне интересно, если кто-то пытался использовать функцию lm() для этого?

library(ISLR)
data(Carseats)

lm.fit <- lm(Sales ~ Income + Advertising + Price, data = Carseats)

plot(Carseats$Income, Carseats$Sales, cex = 1.3, col = "red", pch = 19, main = "The relationship between Car Sales and Income", xlab = "Income", ylab = "Car Sales")

Можно ли разместить lm.fit на двумерном графике вдоль размерности Sales и Income, удерживая при этом другие переменные в своих средних значениях?

1 Ответ

1 голос
/ 11 февраля 2020

Вы можете вычислить эту строку без особых проблем. У вас уже есть уклон, встроенный в lm.fit. Единственный вопрос, что вы должны использовать в качестве перехвата? Мы хотим взглянуть на плоскость, где держатся Реклама и Цена. Нам нужна точка, где линия регрессии в этой плоскости пересекает ось продаж, поэтому в качестве точки пересечения будет использоваться значение, где

Реклама = среднее (Carseats $ Advertising)
Цена = среднее (Carseats $ Price)
и
Income = 0

, поэтому просто используйте вашу модель для вычисления этого значения.

## Assuming that you made your plot as in the question
IntPoint = data.frame(Income = 0, 
    Advertising = mean(Carseats$Advertising), 
    Price = mean(Carseats$Price))
Int2 = predict(lm.fit, IntPoint)
abline(Int2, lm.fit$coefficients[2])

Graph with added regression line

...