R - Линейная регрессия
В статистике линейная регрессия — это регрессионный анализ, который использует функцию наименьших квадратов, называемую уравнением линейной регрессии, для моделирования зависимости между одной или несколькими независимыми переменными и зависимой переменной.
Проще говоря, это метод статистического анализа, используемый для определения количественной взаимозависимости между двумя или более переменными.
В регрессионном анализе, если имеется только одна независимая переменная и одна зависимая переменная, и связь между ними можно аппроксимировать прямой линией, такой регрессионный анализ называется простым линейным регрессионным анализом. Если регрессионный анализ включает две или более независимые переменные и связь между зависимой переменной и независимыми переменными линейна, он называется множественным линейным регрессионным анализом.
Математическое уравнение для простого линейного регрессионного анализа:
y = ax + b
yявляется значением зависимой переменной.
xявляется значением независимой переменной.
aиbявляются параметрами уравнения простой линейной регрессии.
Далее мы можем создать модель прогнозирования для роста и веса человека:
- 1. Соберите данные выборки: рост и вес.
- 2. Используйте функцию lm() для создания модели взаимосвязи.
- 3. Найдите коэффициенты из созданной модели и создайте математическое уравнение.
- 4. Получите сводку модели зависимости, чтобы понять среднюю ошибку, то есть остаток (разницу между оценочным значением и истинным значением).
- 5. Используйте функцию predict() для предсказания веса человека.
Подготовьте данные
Ниже приведены данные о росте и весе людей:
# 身高,单位 cm 151, 174, 138, 186, 128, 136, 179, 163, 152, 131 # 体重,单位 kg 63, 81, 56, 91, 47, 57, 76, 72, 62, 48
Функция lm()
В R линейную регрессию можно выполнить с помощью функции lm().
Функция lm() используется для создания модели зависимости между независимой переменной и зависимой переменной.
Синтаксис функции lm() выглядит следующим образом:
lm(formula,data)
Описание параметра:
- formula — символическая формула, представляющая связь между x и y.
- data — применяемые данные.
Создайте модель зависимости и получите коэффициенты:
Пример
x <- c(151, 174, 138, 186, 128, 136, 179, 163, 152, 131)
y <- c(63, 81, 56, 91, 47, 57, 76, 72, 62, 48)
# Передать в функцию lm()
relation <- lm(y~x)
print(relation)
Выполнение приведенного выше кода выводит результат:
Call:
lm(formula = y ~ x)
Coefficients:
(Intercept) x
-38.4551 0.6746
Используйтеsummary()функцию для получения сводки модели зависимости:
Пример
y <- c(63, 81, 56, 91, 47, 57, 76, 72, 62, 48)
# Передать в функцию lm()
relation <- lm(y~x)
print(summary(relation))
Выполнение приведенного выше кода выводит результат:
Call:
lm(formula = y ~ x)
Residuals:
Min 1Q Median 3Q Max
-6.3002 -1.6629 0.0412 1.8944 3.9775
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -38.45509 8.04901 -4.778 0.00139 **
x 0.67461 0.05191 12.997 1.16e-06 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 3.253 on 8 degrees of freedom
Multiple R-squared: 0.9548, Adjusted R-squared: 0.9491
F-statistic: 168.9 on 1 and 8 DF, p-value: 1.164e-06
Функция predict()
Функция predict() используется для предсказания значений на основе построенной нами модели.
Синтаксис функции predict() выглядит так:
predict(object, newdata)
Описание параметра:
- object — формула, созданная функцией lm().
- newdata — значение, которое нужно предсказать.
В следующем примере мы предсказываем новое значение веса:
Пример
x <- c(151, 174, 138, 186, 128, 136, 179, 163, 152, 131)
y <- c(63, 81, 56, 91, 47, 57, 76, 72, 62, 48)
# Передать в функцию lm()
relation <- lm(y~x)
# Определите вес для роста 170cm
a <- data.frame(x = 170)
result <- predict(relation,a)
print(result)
Выполнение приведенного выше кода выводит результат:
1 76.22869
Мы также можем сгенерировать график:
Пример
x <- c(151, 174, 138, 186, 128, 136, 179, 163, 152, 131)
y <- c(63, 81, 56, 91, 47, 57, 76, 72, 62, 48)
relation <- lm(y~x)
# Создать png-изображение
png(file = "linearregression.png")
# Создать график
plot(y,x,col = "blue",main = "Регрессия роста и веса",
abline(lm(x~y)),cex = 1.3,pch = 16,xlab = "Вес в Kg",ylab = "Рост в cm")
График выглядит следующим образом:

Примеры на языке R