Линейная регрессия 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применяет модель к новым данным; экстраполяция рискованна.