Перейти к основному содержимому

Линейная регрессия — Excel, R и Python

Аналитику Разработчику

От корреляции к модели

Корреляция (коэффициент Пирсона) измеряет силу линейной связи двух числовых переменных. Простая линейная регрессия подбирает прямую y = β₀ + β₁·x + ε, где y — отклик (например, чаевые), x — предиктор (сумма счёта), β₀ — свободный член (intercept), β₁ — наклон.

Регрессия даёт уравнение для прогноза и тест на значимость наклона. Она не доказывает причинность — см. 422.

Теория углублена в 42; здесь — параллель в трёх средах на учебном наборе tips (счёт total_bill, чаевые tip).


Excel

ШагДействие
1Столбцы total_bill, tip; scatter plot
2Добавить линию тренда → линейная; показать уравнение на графике
3Функции НАКЛОН(y; x) и ОТРЕЗОК(y; x) — те же β₁ и β₀
4КОРРЕЛ — сверить с наклоном и масштабом данных

Надстройка «Анализ данных» → Регрессия выводит таблицу с R², стандартными ошибками и F-тестом — удобно сверить с R/Python.


R

tips <- read.csv("tips.csv", stringsAsFactors = FALSE)
fit <- lm(tip ~ total_bill, data = tips)
summary(fit)

summary() — коэффициенты, стандартные ошибки, t-тест для β₁, R². График:

plot(tips$total_bill, tips$tip, pch = 16, col = "#33333388")
abline(fit, col = "steelblue", lwd = 2)

Разбиение train/test для оценки прогноза на новых строках — sample(), затем lm() на обучающей части; метрика RMSE на тесте (42 — предсказание).


Python

import pandas as pd
import seaborn as sns
import statsmodels.formula.api as smf

tips = sns.load_dataset("tips")
model = smf.ols("tip ~ total_bill", data=tips).fit()
print(model.summary())

Для только прогноза без полной таблицы коэффициентов:

from sklearn.linear_model import LinearRegression
import numpy as np

X = tips[["total_bill"]].values
y = tips["tip"].values
reg = LinearRegression().fit(X, y)
print(reg.intercept_, reg.coef_[0])

Визуализация — sns.regplot(data=tips, x="total_bill", y="tip") (424 — Seaborn).


Сравнение результатов

ЭлементExcelR lmPython statsmodels
Наклон β₁НАКЛОНCoefficientstotal_bill coef
Перехват β₀ОТРЕЗОК(Intercept)Intercept
линия тренда / отчёт регрессииMultiple R-squaredR-squared
p-значение наклонаотчёт надстройки`Pr(>t

Числа должны совпасть с точностью до округления. Расхождение — сигнал проверить фильтры строк, пропуски или разные подмножества данных.


См. также

МатериалТема
431 — вероятностьперед регрессией
426 — таблицы + Excelоперации до модели
103 — R, tipsполный пример в R

См. также

Другие статьи этого же раздела в боковом меню (как на странице "О разделе").