R - Линейная регрессия

R 语言实例Примеры на языке 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()функцию для получения сводки модели зависимости:

Пример

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(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 语言实例Примеры на языке R

Другие расширения