Линейная регрессия lm()

Строим первую предсказательную модель — линейную регрессию, описывающую связь переменных прямой.

Линейная регрессия — модель, описывающая связь между переменными прямой линией: y = a + b·x.

Если рост влияет на вес, реклама — на продажи, площадь — на цену квартиры, эту связь можно приблизить прямой. Линейная регрессия находит наилучшую такую прямую и позволяет делать предсказания. В R за это отвечает функция lm (linear model).

Регрессия делает сразу две вещи. Во-первых, описывает связь: насколько в среднем меняется одна величина при изменении другой на единицу (коэффициент наклона). Во-вторых, предсказывает: подставив новое значение x, мы получаем ожидаемый y. Несмотря на простоту, линейная модель остаётся рабочей лошадкой статистики и отправной точкой машинного обучения — более сложные методы часто сравнивают именно с ней. Поэтому освоить lm — значит сделать первый серьёзный шаг к моделированию.

Формула модели

Связь задают формулой y ~ x — «y зависит от x». Тильда ~ читается как «объясняется через»:

model <- lm(weight ~ height, data = people)
model

Вывод:

Call:
lm(formula = weight ~ height, data = people)

Coefficients:
(Intercept)       height  
    -75.30         0.84  

R нашёл коэффициенты: (Intercept) = -75.3 — это a (точка пересечения с осью Y), а height = 0.84 — это b (наклон). Модель: вес ≈ -75.3 + 0.84·рост.

Полная сводка: summary

Главное о модели даёт summary:

summary(model)

В сводке важны два показателя: p-значения коэффициентов (значим ли вклад переменной) и R-squared — доля разброса y, объяснённая моделью. R-квадрат от 0 до 1: ближе к 1 — модель объясняет данные лучше.

Предсказание новых значений

Обученную модель применяют к новым данным функцией predict:

new_people <- data.frame(height = c(170, 180))
predict(model, new_people)

Вывод:

     1      2 
 67.50  75.90 

Для роста 170 модель предсказывает вес ≈ 67.5, для 180 — ≈ 75.9.

Как работает под капотом

lm подбирает коэффициенты a и b методом наименьших квадратов: ищет прямую, для которой сумма квадратов вертикальных отклонений точек от линии минимальна. Поэтому единичные выбросы сильно тянут прямую к себе. Важно помнить: регрессия показывает связь, но не доказывает причинность — корреляция не равна причине. И экстраполяция за пределы диапазона данных (предсказать вес для роста 250) ненадёжна.

Частые ошибки

  • Путать порядок в формуле. В y ~ x зависимая переменная (что предсказываем) — слева от тильды.
  • Принимать корреляцию за причинность. Связь в модели не означает, что x вызывает y.
  • Экстраполировать. Предсказания за пределами диапазона обучающих данных ненадёжны.

Итог

  • lm(y ~ x, data = df) строит линейную модель y = a + b·x.
  • Коэффициенты: (Intercept) = a, наклон = b.
  • summary даёт p-значения и R-squared (качество модели).
  • predict применяет модель к новым данным; экстраполяция рискованна.
Проверьте себя
1. Как в формуле lm записать «вес зависит от роста»?
Alm(height ~ weight)
Blm(weight ~ height)
Clm(weight = height)
Dlm(weight + height)
2. Что показывает R-squared модели?
AЧисло строк данных
BДолю разброса y, объяснённую моделью (от 0 до 1)
CСреднее значение y
DКоличество коэффициентов
3. Каким методом lm подбирает коэффициенты?
AСлучайным перебором
BМетодом наименьших квадратов
CМетодом медиан
DГрадиентным спуском вручную